{
    "magicNumber": "1635018093",
    "metadata": {
        "v13": {
            "modules": [
                {
                    "name": "System",
                    "storage": {
                        "prefix": "System",
                        "items": [
                            {
                                "name": "Account",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "AccountInfo",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " The full account information for a particular account ID."
                                ]
                            },
                            {
                                "name": "ExtrinsicCount",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Total extrinsics count for the current block."
                                ]
                            },
                            {
                                "name": "BlockWeight",
                                "modifier": "Default",
                                "type": {
                                    "plain": "ConsumedWeight"
                                },
                                "fallback": "0x000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " The current weight for the block."
                                ]
                            },
                            {
                                "name": "AllExtrinsicsLen",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Total length (in bytes) for all extrinsics put together, for the current block."
                                ]
                            },
                            {
                                "name": "BlockHash",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "BlockNumber",
                                        "value": "Hash",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " Map of block numbers to block hashes."
                                ]
                            },
                            {
                                "name": "ExtrinsicData",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "u32",
                                        "value": "Bytes",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Extrinsics data for the current block (maps an extrinsic's index to its data)."
                                ]
                            },
                            {
                                "name": "Number",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BlockNumber"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The current block number being processed. Set by `execute_block`."
                                ]
                            },
                            {
                                "name": "ParentHash",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Hash"
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " Hash of the previous block."
                                ]
                            },
                            {
                                "name": "Digest",
                                "modifier": "Default",
                                "type": {
                                    "plain": "DigestOf"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Digest of the current block, also part of the block header."
                                ]
                            },
                            {
                                "name": "Events",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<EventRecord>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Events deposited for the current block."
                                ]
                            },
                            {
                                "name": "EventCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "EventIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The number of events in the `Events<T>` list."
                                ]
                            },
                            {
                                "name": "EventTopics",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "Hash",
                                        "value": "Vec<(BlockNumber,EventIndex)>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Mapping between a topic (represented by T::Hash) and a vector of indexes",
                                    " of events in the `<Events<T>>` list.",
                                    "",
                                    " All topic vectors have deterministic storage locations depending on the topic. This",
                                    " allows light-clients to leverage the changes trie storage tracking mechanism and",
                                    " in case of changes fetch the list of events of interest.",
                                    "",
                                    " The value has the type `(T::BlockNumber, EventIndex)` because if we used only just",
                                    " the `EventIndex` then in case if the topic has the same contents on the next block",
                                    " no notification will be triggered thus the event might be lost."
                                ]
                            },
                            {
                                "name": "LastRuntimeUpgrade",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "LastRuntimeUpgradeInfo"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Stores the `spec_version` and `spec_name` of when the last runtime upgrade happened."
                                ]
                            },
                            {
                                "name": "UpgradedToU32RefCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "bool"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " True if we have upgraded so that `type RefCount` is `u32`. False (default) if not."
                                ]
                            },
                            {
                                "name": "UpgradedToTripleRefCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "bool"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " True if we have upgraded so that AccountInfo contains three types of `RefCount`. False",
                                    " (default) if not."
                                ]
                            },
                            {
                                "name": "ExecutionPhase",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "Phase"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The execution phase of the block."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "fill_block",
                            "args": [
                                {
                                    "name": "_ratio",
                                    "type": "Perbill"
                                }
                            ],
                            "docs": [
                                " A dispatch that will fill the block weight up to the given ratio."
                            ]
                        },
                        {
                            "name": "remark",
                            "args": [
                                {
                                    "name": "_remark",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Make some on-chain remark.",
                                "",
                                " # <weight>",
                                " - `O(1)`",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_heap_pages",
                            "args": [
                                {
                                    "name": "pages",
                                    "type": "u64"
                                }
                            ],
                            "docs": [
                                " Set the number of pages in the WebAssembly environment's heap.",
                                "",
                                " # <weight>",
                                " - `O(1)`",
                                " - 1 storage write.",
                                " - Base Weight: 1.405 µs",
                                " - 1 write to HEAP_PAGES",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_code",
                            "args": [
                                {
                                    "name": "code",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Set the new runtime code.",
                                "",
                                " # <weight>",
                                " - `O(C + S)` where `C` length of `code` and `S` complexity of `can_set_code`",
                                " - 1 storage write (codec `O(C)`).",
                                " - 1 call to `can_set_code`: `O(S)` (calls `sp_io::misc::runtime_version` which is expensive).",
                                " - 1 event.",
                                " The weight of this function is dependent on the runtime, but generally this is very expensive.",
                                " We will treat this as a full block.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_code_without_checks",
                            "args": [
                                {
                                    "name": "code",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Set the new runtime code without doing any checks of the given `code`.",
                                "",
                                " # <weight>",
                                " - `O(C)` where `C` length of `code`",
                                " - 1 storage write (codec `O(C)`).",
                                " - 1 event.",
                                " The weight of this function is dependent on the runtime. We will treat this as a full block.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_changes_trie_config",
                            "args": [
                                {
                                    "name": "changes_trie_config",
                                    "type": "Option<ChangesTrieConfiguration>"
                                }
                            ],
                            "docs": [
                                " Set the new changes trie configuration.",
                                "",
                                " # <weight>",
                                " - `O(1)`",
                                " - 1 storage write or delete (codec `O(1)`).",
                                " - 1 call to `deposit_log`: Uses `append` API, so O(1)",
                                " - Base Weight: 7.218 µs",
                                " - DB Weight:",
                                "     - Writes: Changes Trie, System Digest",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_storage",
                            "args": [
                                {
                                    "name": "items",
                                    "type": "Vec<KeyValue>"
                                }
                            ],
                            "docs": [
                                " Set some items of storage.",
                                "",
                                " # <weight>",
                                " - `O(I)` where `I` length of `items`",
                                " - `I` storage writes (`O(1)`).",
                                " - Base Weight: 0.568 * i µs",
                                " - Writes: Number of items",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "kill_storage",
                            "args": [
                                {
                                    "name": "keys",
                                    "type": "Vec<Key>"
                                }
                            ],
                            "docs": [
                                " Kill some items from storage.",
                                "",
                                " # <weight>",
                                " - `O(IK)` where `I` length of `keys` and `K` length of one key",
                                " - `I` storage deletions.",
                                " - Base Weight: .378 * i µs",
                                " - Writes: Number of items",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "kill_prefix",
                            "args": [
                                {
                                    "name": "prefix",
                                    "type": "Key"
                                },
                                {
                                    "name": "_subkeys",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Kill all storage items with a key that starts with the given prefix.",
                                "",
                                " **NOTE:** We rely on the Root origin to provide us the number of subkeys under",
                                " the prefix we are removing to accurately calculate the weight of this function.",
                                "",
                                " # <weight>",
                                " - `O(P)` where `P` amount of keys with prefix `prefix`",
                                " - `P` storage deletions.",
                                " - Base Weight: 0.834 * P µs",
                                " - Writes: Number of subkeys + 1",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "remark_with_event",
                            "args": [
                                {
                                    "name": "remark",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Make some on-chain remark and emit event.",
                                "",
                                " # <weight>",
                                " - `O(b)` where b is the length of the remark.",
                                " - 1 event.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "ExtrinsicSuccess",
                            "args": [
                                "DispatchInfo"
                            ],
                            "docs": [
                                " An extrinsic completed successfully. \\[info\\]"
                            ]
                        },
                        {
                            "name": "ExtrinsicFailed",
                            "args": [
                                "DispatchError",
                                "DispatchInfo"
                            ],
                            "docs": [
                                " An extrinsic failed. \\[error, info\\]"
                            ]
                        },
                        {
                            "name": "CodeUpdated",
                            "args": [],
                            "docs": [
                                " `:code` was updated."
                            ]
                        },
                        {
                            "name": "NewAccount",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " A new \\[account\\] was created."
                            ]
                        },
                        {
                            "name": "KilledAccount",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " An \\[account\\] was reaped."
                            ]
                        },
                        {
                            "name": "Remarked",
                            "args": [
                                "AccountId",
                                "Hash"
                            ],
                            "docs": [
                                " On on-chain remark happened. \\[origin, remark_hash\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "BlockWeights",
                            "type": "BlockWeights",
                            "value": "0x00f2052a0100000000204aa9d1010000405973070000000001c0766c8f58010000010098f73e5d010000010000000000000000405973070000000001c0febef9cc0100000100204aa9d1010000010088526a740000004059730700000000000000",
                            "docs": [
                                " Block & extrinsics weights: base values and limits."
                            ]
                        },
                        {
                            "name": "BlockLength",
                            "type": "BlockLength",
                            "value": "0x00003c000000500000005000",
                            "docs": [
                                " The maximum length of a block (in bytes)."
                            ]
                        },
                        {
                            "name": "BlockHashCount",
                            "type": "BlockNumber",
                            "value": "0x60090000",
                            "docs": [
                                " Maximum number of block number to block hash mappings to keep (oldest pruned first)."
                            ]
                        },
                        {
                            "name": "DbWeight",
                            "type": "RuntimeDbWeight",
                            "value": "0x40787d010000000000e1f50500000000",
                            "docs": [
                                " The weight of runtime database operations the runtime can invoke."
                            ]
                        },
                        {
                            "name": "Version",
                            "type": "RuntimeVersion",
                            "value": "0x1c77657374656e64387061726974792d77657374656e6402000000822300000000000038df6acb689907609b0300000037e397fc7c91f5e40100000040fe3ad401f8959a05000000d2bc9897eed08f1503000000f78b278be53f454c02000000af2c0297a23e6d3d0100000049eaaf1b548a0cb00100000091d5df18b0d2cf5801000000ed99c5acb25eedf503000000cbca25e39f14238702000000687ad44ad37f03c201000000ab3c0572291feb8b01000000bc9d89904f5b923f0100000037c8bb1350a9a2a80100000005000000",
                            "docs": [
                                " Get the chain's current version."
                            ]
                        },
                        {
                            "name": "SS58Prefix",
                            "type": "u16",
                            "value": "0x2a00",
                            "docs": [
                                " The designated SS85 prefix of this chain.",
                                "",
                                " This replaces the \"ss58Format\" property declared in the chain spec. Reason is",
                                " that the runtime should know about the prefix in order to make use of it as",
                                " an identifier of the chain."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "InvalidSpecName",
                            "docs": [
                                " The name of specification does not match between the current runtime",
                                " and the new runtime."
                            ]
                        },
                        {
                            "name": "SpecVersionNeedsToIncrease",
                            "docs": [
                                " The specification version is not allowed to decrease between the current runtime",
                                " and the new runtime."
                            ]
                        },
                        {
                            "name": "FailedToExtractRuntimeVersion",
                            "docs": [
                                " Failed to extract the runtime version from the new runtime.",
                                "",
                                " Either calling `Core_version` or decoding `RuntimeVersion` failed."
                            ]
                        },
                        {
                            "name": "NonDefaultComposite",
                            "docs": [
                                " Suicide called when the account has non-default composite data."
                            ]
                        },
                        {
                            "name": "NonZeroRefCount",
                            "docs": [
                                " There is a non-zero reference count preventing the account from being purged."
                            ]
                        }
                    ],
                    "index": "0"
                },
                {
                    "name": "Babe",
                    "storage": {
                        "prefix": "Babe",
                        "items": [
                            {
                                "name": "EpochIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u64"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " Current epoch index."
                                ]
                            },
                            {
                                "name": "Authorities",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(AuthorityId,BabeAuthorityWeight)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Current epoch authorities."
                                ]
                            },
                            {
                                "name": "GenesisSlot",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Slot"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " The slot at which the first epoch actually started. This is 0",
                                    " until the first block of the chain."
                                ]
                            },
                            {
                                "name": "CurrentSlot",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Slot"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " Current slot number."
                                ]
                            },
                            {
                                "name": "Randomness",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Randomness"
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " The epoch randomness for the *current* epoch.",
                                    "",
                                    " # Security",
                                    "",
                                    " This MUST NOT be used for gambling, as it can be influenced by a",
                                    " malicious validator in the short term. It MAY be used in many",
                                    " cryptographic protocols, however, so long as one remembers that this",
                                    " (like everything else on-chain) it is public. For example, it can be",
                                    " used where a number is needed that cannot have been chosen by an",
                                    " adversary, for purposes such as public-coin zero-knowledge proofs."
                                ]
                            },
                            {
                                "name": "PendingEpochConfigChange",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "NextConfigDescriptor"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Pending epoch configuration change that will be applied when the next epoch is enacted."
                                ]
                            },
                            {
                                "name": "NextRandomness",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Randomness"
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " Next epoch randomness."
                                ]
                            },
                            {
                                "name": "NextAuthorities",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(AuthorityId,BabeAuthorityWeight)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Next epoch authorities."
                                ]
                            },
                            {
                                "name": "SegmentIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " Randomness under construction.",
                                    "",
                                    " We make a tradeoff between storage accesses and list length.",
                                    " We store the under-construction randomness in segments of up to",
                                    " `UNDER_CONSTRUCTION_SEGMENT_LENGTH`.",
                                    "",
                                    " Once a segment reaches this length, we begin the next one.",
                                    " We reset all segments and return to `0` at the beginning of every",
                                    " epoch."
                                ]
                            },
                            {
                                "name": "UnderConstruction",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "u32",
                                        "value": "Vec<Randomness>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " TWOX-NOTE: `SegmentIndex` is an increasing integer, so this is okay."
                                ]
                            },
                            {
                                "name": "Initialized",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "MaybeRandomness"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Temporary value (cleared at block finalization) which is `Some`",
                                    " if per-block initialization has already been called for current block."
                                ]
                            },
                            {
                                "name": "AuthorVrfRandomness",
                                "modifier": "Default",
                                "type": {
                                    "plain": "MaybeRandomness"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " This field should always be populated during block processing unless",
                                    " secondary plain slots are enabled (which don't contain a VRF output).",
                                    "",
                                    " It is set in `on_initialize`, before it will contain the value from the last block."
                                ]
                            },
                            {
                                "name": "EpochStart",
                                "modifier": "Default",
                                "type": {
                                    "plain": "(BlockNumber,BlockNumber)"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " The block numbers when the last and current epoch have started, respectively `N-1` and",
                                    " `N`.",
                                    " NOTE: We track this is in order to annotate the block number when a given pool of",
                                    " entropy was fixed (i.e. it was known to chain observers). Since epochs are defined in",
                                    " slots, which may be skipped, the block numbers may not line up with the slot numbers."
                                ]
                            },
                            {
                                "name": "Lateness",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BlockNumber"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " How late the current block is compared to its parent.",
                                    "",
                                    " This entry is populated as part of block execution and is cleaned up",
                                    " on block finalization. Querying this storage entry outside of block",
                                    " execution context should always yield zero."
                                ]
                            },
                            {
                                "name": "EpochConfig",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "BabeEpochConfiguration"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The configuration for the current epoch. Should never be `None` as it is initialized in genesis."
                                ]
                            },
                            {
                                "name": "NextEpochConfig",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "BabeEpochConfiguration"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The configuration for the next epoch, `None` if the config will not change",
                                    " (you can fallback to `EpochConfig` instead in that case)."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "report_equivocation",
                            "args": [
                                {
                                    "name": "equivocation_proof",
                                    "type": "EquivocationProof"
                                },
                                {
                                    "name": "key_owner_proof",
                                    "type": "KeyOwnerProof"
                                }
                            ],
                            "docs": [
                                " Report authority equivocation/misbehavior. This method will verify",
                                " the equivocation proof and validate the given key ownership proof",
                                " against the extracted offender. If both are valid, the offence will",
                                " be reported."
                            ]
                        },
                        {
                            "name": "report_equivocation_unsigned",
                            "args": [
                                {
                                    "name": "equivocation_proof",
                                    "type": "EquivocationProof"
                                },
                                {
                                    "name": "key_owner_proof",
                                    "type": "KeyOwnerProof"
                                }
                            ],
                            "docs": [
                                " Report authority equivocation/misbehavior. This method will verify",
                                " the equivocation proof and validate the given key ownership proof",
                                " against the extracted offender. If both are valid, the offence will",
                                " be reported.",
                                " This extrinsic must be called unsigned and it is expected that only",
                                " block authors will call it (validated in `ValidateUnsigned`), as such",
                                " if the block author is defined it will be defined as the equivocation",
                                " reporter."
                            ]
                        },
                        {
                            "name": "plan_config_change",
                            "args": [
                                {
                                    "name": "config",
                                    "type": "NextConfigDescriptor"
                                }
                            ],
                            "docs": [
                                " Plan an epoch config change. The epoch config change is recorded and will be enacted on",
                                " the next call to `enact_epoch_change`. The config will be activated one epoch after.",
                                " Multiple calls to this method will replace any existing planned config change that had",
                                " not been enacted yet."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [
                        {
                            "name": "EpochDuration",
                            "type": "u64",
                            "value": "0x5802000000000000",
                            "docs": [
                                " The amount of time, in slots, that each epoch should last.",
                                " NOTE: Currently it is not possible to change the epoch duration after",
                                " the chain has started. Attempting to do so will brick block production."
                            ]
                        },
                        {
                            "name": "ExpectedBlockTime",
                            "type": "Moment",
                            "value": "0x7017000000000000",
                            "docs": [
                                " The expected average block time at which BABE should be creating",
                                " blocks. Since BABE is probabilistic it is not trivial to figure out",
                                " what the expected average block time should be based on the slot",
                                " duration and the security parameter `c` (where `1 - c` represents",
                                " the probability of a slot being empty)."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "InvalidEquivocationProof",
                            "docs": [
                                " An equivocation proof provided as part of an equivocation report is invalid."
                            ]
                        },
                        {
                            "name": "InvalidKeyOwnershipProof",
                            "docs": [
                                " A key ownership proof provided as part of an equivocation report is invalid."
                            ]
                        },
                        {
                            "name": "DuplicateOffenceReport",
                            "docs": [
                                " A given equivocation report is valid but already previously reported."
                            ]
                        }
                    ],
                    "index": "1"
                },
                {
                    "name": "Timestamp",
                    "storage": {
                        "prefix": "Timestamp",
                        "items": [
                            {
                                "name": "Now",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Moment"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " Current time for the current block."
                                ]
                            },
                            {
                                "name": "DidUpdate",
                                "modifier": "Default",
                                "type": {
                                    "plain": "bool"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Did the timestamp get updated in this block?"
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "set",
                            "args": [
                                {
                                    "name": "now",
                                    "type": "Compact<Moment>"
                                }
                            ],
                            "docs": [
                                " Set the current time.",
                                "",
                                " This call should be invoked exactly once per block. It will panic at the finalization",
                                " phase, if this call hasn't been invoked by that time.",
                                "",
                                " The timestamp should be greater than the previous one by the amount specified by",
                                " `MinimumPeriod`.",
                                "",
                                " The dispatch origin for this call must be `Inherent`.",
                                "",
                                " # <weight>",
                                " - `O(1)` (Note that implementations of `OnTimestampSet` must also be `O(1)`)",
                                " - 1 storage read and 1 storage mutation (codec `O(1)`). (because of `DidUpdate::take` in `on_finalize`)",
                                " - 1 event handler `on_timestamp_set`. Must be `O(1)`.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [
                        {
                            "name": "MinimumPeriod",
                            "type": "Moment",
                            "value": "0xb80b000000000000",
                            "docs": [
                                " The minimum period between blocks. Beware that this is different to the *expected* period",
                                " that the block production apparatus provides. Your chosen consensus system will generally",
                                " work with this to determine a sensible block time. e.g. For Aura, it will be double this",
                                " period on default settings."
                            ]
                        }
                    ],
                    "errors": [],
                    "index": "2"
                },
                {
                    "name": "Indices",
                    "storage": {
                        "prefix": "Indices",
                        "items": [
                            {
                                "name": "Accounts",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountIndex",
                                        "value": "(AccountId,BalanceOf,bool)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The lookup from index to account."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "claim",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "AccountIndex"
                                }
                            ],
                            "docs": [
                                " Assign an previously unassigned index.",
                                "",
                                " Payment: `Deposit` is reserved from the sender account.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `index`: the index to be claimed. This must not be in use.",
                                "",
                                " Emits `IndexAssigned` if successful.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - One storage mutation (codec `O(1)`).",
                                " - One reserve operation.",
                                " - One event.",
                                " -------------------",
                                " - DB Weight: 1 Read/Write (Accounts)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "transfer",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "index",
                                    "type": "AccountIndex"
                                }
                            ],
                            "docs": [
                                " Assign an index already owned by the sender to another account. The balance reservation",
                                " is effectively transferred to the new account.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `index`: the index to be re-assigned. This must be owned by the sender.",
                                " - `new`: the new owner of the index. This function is a no-op if it is equal to sender.",
                                "",
                                " Emits `IndexAssigned` if successful.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - One storage mutation (codec `O(1)`).",
                                " - One transfer operation.",
                                " - One event.",
                                " -------------------",
                                " - DB Weight:",
                                "    - Reads: Indices Accounts, System Account (recipient)",
                                "    - Writes: Indices Accounts, System Account (recipient)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "free",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "AccountIndex"
                                }
                            ],
                            "docs": [
                                " Free up an index owned by the sender.",
                                "",
                                " Payment: Any previous deposit placed for the index is unreserved in the sender account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must own the index.",
                                "",
                                " - `index`: the index to be freed. This must be owned by the sender.",
                                "",
                                " Emits `IndexFreed` if successful.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - One storage mutation (codec `O(1)`).",
                                " - One reserve operation.",
                                " - One event.",
                                " -------------------",
                                " - DB Weight: 1 Read/Write (Accounts)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_transfer",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "index",
                                    "type": "AccountIndex"
                                },
                                {
                                    "name": "freeze",
                                    "type": "bool"
                                }
                            ],
                            "docs": [
                                " Force an index to an account. This doesn't require a deposit. If the index is already",
                                " held, then any deposit is reimbursed to its current owner.",
                                "",
                                " The dispatch origin for this call must be _Root_.",
                                "",
                                " - `index`: the index to be (re-)assigned.",
                                " - `new`: the new owner of the index. This function is a no-op if it is equal to sender.",
                                " - `freeze`: if set to `true`, will freeze the index so it cannot be transferred.",
                                "",
                                " Emits `IndexAssigned` if successful.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - One storage mutation (codec `O(1)`).",
                                " - Up to one reserve operation.",
                                " - One event.",
                                " -------------------",
                                " - DB Weight:",
                                "    - Reads: Indices Accounts, System Account (original owner)",
                                "    - Writes: Indices Accounts, System Account (original owner)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "freeze",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "AccountIndex"
                                }
                            ],
                            "docs": [
                                " Freeze an index so it will always point to the sender account. This consumes the deposit.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the signing account must have a",
                                " non-frozen account `index`.",
                                "",
                                " - `index`: the index to be frozen in place.",
                                "",
                                " Emits `IndexFrozen` if successful.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - One storage mutation (codec `O(1)`).",
                                " - Up to one slash operation.",
                                " - One event.",
                                " -------------------",
                                " - DB Weight: 1 Read/Write (Accounts)",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "IndexAssigned",
                            "args": [
                                "AccountId",
                                "AccountIndex"
                            ],
                            "docs": [
                                " A account index was assigned. \\[index, who\\]"
                            ]
                        },
                        {
                            "name": "IndexFreed",
                            "args": [
                                "AccountIndex"
                            ],
                            "docs": [
                                " A account index has been freed up (unassigned). \\[index\\]"
                            ]
                        },
                        {
                            "name": "IndexFrozen",
                            "args": [
                                "AccountIndex",
                                "AccountId"
                            ],
                            "docs": [
                                " A account index has been frozen to its current account ID. \\[index, who\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "Deposit",
                            "type": "BalanceOf",
                            "value": "0x0010a5d4e80000000000000000000000",
                            "docs": [
                                " The deposit needed for reserving an index."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "NotAssigned",
                            "docs": [
                                " The index was not already assigned."
                            ]
                        },
                        {
                            "name": "NotOwner",
                            "docs": [
                                " The index is assigned to another account."
                            ]
                        },
                        {
                            "name": "InUse",
                            "docs": [
                                " The index was not available."
                            ]
                        },
                        {
                            "name": "NotTransfer",
                            "docs": [
                                " The source and destination accounts are identical."
                            ]
                        },
                        {
                            "name": "Permanent",
                            "docs": [
                                " The index is permanent and may not be freed/changed."
                            ]
                        }
                    ],
                    "index": "3"
                },
                {
                    "name": "Balances",
                    "storage": {
                        "prefix": "Balances",
                        "items": [
                            {
                                "name": "TotalIssuance",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Balance"
                                },
                                "fallback": "0x00000000000000000000000000000000",
                                "docs": [
                                    " The total units issued in the system."
                                ]
                            },
                            {
                                "name": "Account",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "AccountData",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " The balance of an account.",
                                    "",
                                    " NOTE: This is only used in the case that this pallet is used to store balances."
                                ]
                            },
                            {
                                "name": "Locks",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "Vec<BalanceLock>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Any liquidity locks on some account balances.",
                                    " NOTE: Should only be accessed when setting, changing and freeing a lock."
                                ]
                            },
                            {
                                "name": "Reserves",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "Vec<ReserveData>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Named reserves on some account balances."
                                ]
                            },
                            {
                                "name": "StorageVersion",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Releases"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Storage version of the pallet.",
                                    "",
                                    " This is set to v2.0.0 for new networks."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "transfer",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "value",
                                    "type": "Compact<Balance>"
                                }
                            ],
                            "docs": [
                                " Transfer some liquid free balance to another account.",
                                "",
                                " `transfer` will set the `FreeBalance` of the sender and receiver.",
                                " It will decrease the total issuance of the system by the `TransferFee`.",
                                " If the sender's account is below the existential deposit as a result",
                                " of the transfer, the account will be reaped.",
                                "",
                                " The dispatch origin for this call must be `Signed` by the transactor.",
                                "",
                                " # <weight>",
                                " - Dependent on arguments but not critical, given proper implementations for",
                                "   input config types. See related functions below.",
                                " - It contains a limited number of reads and writes internally and no complex computation.",
                                "",
                                " Related functions:",
                                "",
                                "   - `ensure_can_withdraw` is always called internally but has a bounded complexity.",
                                "   - Transferring balances to accounts that did not exist before will cause",
                                "      `T::OnNewAccount::on_new_account` to be called.",
                                "   - Removing enough funds from an account will trigger `T::DustRemoval::on_unbalanced`.",
                                "   - `transfer_keep_alive` works the same way as `transfer`, but has an additional",
                                "     check that the transfer will not kill the origin account.",
                                " ---------------------------------",
                                " - Base Weight: 73.64 µs, worst case scenario (account created, account removed)",
                                " - DB Weight: 1 Read and 1 Write to destination account",
                                " - Origin account is already in memory, so no DB operations for them.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_balance",
                            "args": [
                                {
                                    "name": "who",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "new_free",
                                    "type": "Compact<Balance>"
                                },
                                {
                                    "name": "new_reserved",
                                    "type": "Compact<Balance>"
                                }
                            ],
                            "docs": [
                                " Set the balances of a given account.",
                                "",
                                " This will alter `FreeBalance` and `ReservedBalance` in storage. it will",
                                " also decrease the total issuance of the system (`TotalIssuance`).",
                                " If the new free or reserved balance is below the existential deposit,",
                                " it will reset the account nonce (`frame_system::AccountNonce`).",
                                "",
                                " The dispatch origin for this call is `root`.",
                                "",
                                " # <weight>",
                                " - Independent of the arguments.",
                                " - Contains a limited number of reads and writes.",
                                " ---------------------",
                                " - Base Weight:",
                                "     - Creating: 27.56 µs",
                                "     - Killing: 35.11 µs",
                                " - DB Weight: 1 Read, 1 Write to `who`",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_transfer",
                            "args": [
                                {
                                    "name": "source",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "dest",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "value",
                                    "type": "Compact<Balance>"
                                }
                            ],
                            "docs": [
                                " Exactly as `transfer`, except the origin must be root and the source account may be",
                                " specified.",
                                " # <weight>",
                                " - Same as transfer, but additional read and write because the source account is",
                                "   not assumed to be in the overlay.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "transfer_keep_alive",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "value",
                                    "type": "Compact<Balance>"
                                }
                            ],
                            "docs": [
                                " Same as the [`transfer`] call, but with a check that the transfer will not kill the",
                                " origin account.",
                                "",
                                " 99% of the time you want [`transfer`] instead.",
                                "",
                                " [`transfer`]: struct.Pallet.html#method.transfer",
                                " # <weight>",
                                " - Cheaper than transfer because account cannot be killed.",
                                " - Base Weight: 51.4 µs",
                                " - DB Weight: 1 Read and 1 Write to dest (sender is in overlay already)",
                                " #</weight>"
                            ]
                        },
                        {
                            "name": "transfer_all",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "keep_alive",
                                    "type": "bool"
                                }
                            ],
                            "docs": [
                                " Transfer the entire transferable balance from the caller account.",
                                "",
                                " NOTE: This function only attempts to transfer _transferable_ balances. This means that",
                                " any locked, reserved, or existential deposits (when `keep_alive` is `true`), will not be",
                                " transferred by this function. To ensure that this function results in a killed account,",
                                " you might need to prepare the account by removing any reference counters, storage",
                                " deposits, etc...",
                                "",
                                " The dispatch origin of this call must be Signed.",
                                "",
                                " - `dest`: The recipient of the transfer.",
                                " - `keep_alive`: A boolean to determine if the `transfer_all` operation should send all",
                                "   of the funds the account has, causing the sender account to be killed (false), or",
                                "   transfer everything except at least the existential deposit, which will guarantee to",
                                "   keep the sender account alive (true).",
                                "   # <weight>",
                                " - O(1). Just like transfer, but reading the user's transferable balance first.",
                                "   #</weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Endowed",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account was created with some free balance. \\[account, free_balance\\]"
                            ]
                        },
                        {
                            "name": "DustLost",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account was removed whose balance was non-zero but below ExistentialDeposit,",
                                " resulting in an outright loss. \\[account, balance\\]"
                            ]
                        },
                        {
                            "name": "Transfer",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Transfer succeeded. \\[from, to, value\\]"
                            ]
                        },
                        {
                            "name": "BalanceSet",
                            "args": [
                                "AccountId",
                                "Balance",
                                "Balance"
                            ],
                            "docs": [
                                " A balance was set by root. \\[who, free, reserved\\]"
                            ]
                        },
                        {
                            "name": "Deposit",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Some amount was deposited (e.g. for transaction fees). \\[who, deposit\\]"
                            ]
                        },
                        {
                            "name": "Reserved",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Some balance was reserved (moved from free to reserved). \\[who, value\\]"
                            ]
                        },
                        {
                            "name": "Unreserved",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Some balance was unreserved (moved from reserved to free). \\[who, value\\]"
                            ]
                        },
                        {
                            "name": "ReserveRepatriated",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Balance",
                                "Status"
                            ],
                            "docs": [
                                " Some balance was moved from the reserve of the first account to the second account.",
                                " Final argument indicates the destination balance type.",
                                " \\[from, to, balance, destination_status\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "ExistentialDeposit",
                            "type": "Balance",
                            "value": "0x00e40b54020000000000000000000000",
                            "docs": [
                                " The minimum amount required to keep an account open."
                            ]
                        },
                        {
                            "name": "MaxLocks",
                            "type": "u32",
                            "value": "0x32000000",
                            "docs": [
                                " The maximum number of locks that should exist on an account.",
                                " Not strictly enforced, but used for weight estimation."
                            ]
                        },
                        {
                            "name": "MaxReserves",
                            "type": "u32",
                            "value": "0x32000000",
                            "docs": [
                                " The maximum number of named reserves that can exist on an account."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "VestingBalance",
                            "docs": [
                                " Vesting balance too high to send value"
                            ]
                        },
                        {
                            "name": "LiquidityRestrictions",
                            "docs": [
                                " Account liquidity restrictions prevent withdrawal"
                            ]
                        },
                        {
                            "name": "InsufficientBalance",
                            "docs": [
                                " Balance too low to send value"
                            ]
                        },
                        {
                            "name": "ExistentialDeposit",
                            "docs": [
                                " Value too low to create account due to existential deposit"
                            ]
                        },
                        {
                            "name": "KeepAlive",
                            "docs": [
                                " Transfer/payment would kill account"
                            ]
                        },
                        {
                            "name": "ExistingVestingSchedule",
                            "docs": [
                                " A vesting schedule already exists for this account"
                            ]
                        },
                        {
                            "name": "DeadAccount",
                            "docs": [
                                " Beneficiary account must pre-exist"
                            ]
                        },
                        {
                            "name": "TooManyReserves",
                            "docs": [
                                " Number of named reserves exceed MaxReserves"
                            ]
                        }
                    ],
                    "index": "4"
                },
                {
                    "name": "TransactionPayment",
                    "storage": {
                        "prefix": "TransactionPayment",
                        "items": [
                            {
                                "name": "NextFeeMultiplier",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Multiplier"
                                },
                                "fallback": "0x000064a7b3b6e00d0000000000000000",
                                "docs": []
                            },
                            {
                                "name": "StorageVersion",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Releases"
                                },
                                "fallback": "0x00",
                                "docs": []
                            }
                        ]
                    },
                    "calls": null,
                    "events": null,
                    "constants": [
                        {
                            "name": "TransactionByteFee",
                            "type": "BalanceOf",
                            "value": "0x00e1f505000000000000000000000000",
                            "docs": [
                                " The fee to be paid for making a transaction; the per-byte portion."
                            ]
                        },
                        {
                            "name": "WeightToFee",
                            "type": "Vec<WeightToFeeCoefficient>",
                            "value": "0x0408000000000000000000000000000000000000000001",
                            "docs": [
                                " The polynomial that is applied in order to derive fee from weight."
                            ]
                        }
                    ],
                    "errors": [],
                    "index": "26"
                },
                {
                    "name": "Authorship",
                    "storage": {
                        "prefix": "Authorship",
                        "items": [
                            {
                                "name": "Uncles",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<UncleEntryItem>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Uncles"
                                ]
                            },
                            {
                                "name": "Author",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "AccountId"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Author of current block."
                                ]
                            },
                            {
                                "name": "DidSetUncles",
                                "modifier": "Default",
                                "type": {
                                    "plain": "bool"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Whether uncles were already set in this block."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "set_uncles",
                            "args": [
                                {
                                    "name": "new_uncles",
                                    "type": "Vec<Header>"
                                }
                            ],
                            "docs": [
                                " Provide a set of uncles."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [
                        {
                            "name": "UncleGenerations",
                            "type": "BlockNumber",
                            "value": "0x00000000",
                            "docs": [
                                " The number of blocks back we should accept uncles.",
                                " This means that we will deal with uncle-parents that are",
                                " `UncleGenerations + 1` before `now`."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "InvalidUncleParent",
                            "docs": [
                                " The uncle parent not in the chain."
                            ]
                        },
                        {
                            "name": "UnclesAlreadySet",
                            "docs": [
                                " Uncles already set in the block."
                            ]
                        },
                        {
                            "name": "TooManyUncles",
                            "docs": [
                                " Too many uncles."
                            ]
                        },
                        {
                            "name": "GenesisUncle",
                            "docs": [
                                " The uncle is genesis."
                            ]
                        },
                        {
                            "name": "TooHighUncle",
                            "docs": [
                                " The uncle is too high in chain."
                            ]
                        },
                        {
                            "name": "UncleAlreadyIncluded",
                            "docs": [
                                " The uncle is already included."
                            ]
                        },
                        {
                            "name": "OldUncle",
                            "docs": [
                                " The uncle isn't recent enough to be included."
                            ]
                        }
                    ],
                    "index": "5"
                },
                {
                    "name": "Staking",
                    "storage": {
                        "prefix": "Staking",
                        "items": [
                            {
                                "name": "HistoryDepth",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x54000000",
                                "docs": [
                                    " Number of eras to keep in history.",
                                    "",
                                    " Information is kept for eras in `[current_era - history_depth; current_era]`.",
                                    "",
                                    " Must be more than the number of eras delayed by session otherwise. I.e. active era must",
                                    " always be in history. I.e. `active_era > current_era - history_depth` must be",
                                    " guaranteed."
                                ]
                            },
                            {
                                "name": "ValidatorCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The ideal number of staking participants."
                                ]
                            },
                            {
                                "name": "MinimumValidatorCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " Minimum number of staking participants before emergency conditions are imposed."
                                ]
                            },
                            {
                                "name": "Invulnerables",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<AccountId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Any validators that may never be slashed or forcibly kicked. It's a Vec since they're",
                                    " easy to initialize and the performance hit is minimal (we expect no more than four",
                                    " invulnerables) and restricted to testnets."
                                ]
                            },
                            {
                                "name": "Bonded",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "AccountId",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Map from all locked \"stash\" accounts to the controller account."
                                ]
                            },
                            {
                                "name": "MinNominatorBond",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BalanceOf"
                                },
                                "fallback": "0x00000000000000000000000000000000",
                                "docs": [
                                    " The minimum active bond to become and maintain the role of a nominator."
                                ]
                            },
                            {
                                "name": "MinValidatorBond",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BalanceOf"
                                },
                                "fallback": "0x00000000000000000000000000000000",
                                "docs": [
                                    " The minimum active bond to become and maintain the role of a validator."
                                ]
                            },
                            {
                                "name": "Ledger",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "StakingLedger",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Map from all (unlocked) \"controller\" accounts to the info regarding the staking."
                                ]
                            },
                            {
                                "name": "Payee",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "RewardDestination",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Where the reward payment should be made. Keyed by stash."
                                ]
                            },
                            {
                                "name": "Validators",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "ValidatorPrefs",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000",
                                "docs": [
                                    " The map from (wannabe) validator stash key to the preferences of that validator.",
                                    "",
                                    " When updating this storage item, you must also update the `CounterForValidators`."
                                ]
                            },
                            {
                                "name": "CounterForValidators",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " A tracker to keep count of the number of items in the `Validators` map."
                                ]
                            },
                            {
                                "name": "MaxValidatorsCount",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The maximum validator count before we stop allowing new validators to join.",
                                    "",
                                    " When this value is not set, no limits are enforced."
                                ]
                            },
                            {
                                "name": "Nominators",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "Nominations",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The map from nominator stash key to the set of stash keys of all validators to nominate.",
                                    "",
                                    " When updating this storage item, you must also update the `CounterForNominators`."
                                ]
                            },
                            {
                                "name": "CounterForNominators",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " A tracker to keep count of the number of items in the `Nominators` map."
                                ]
                            },
                            {
                                "name": "MaxNominatorsCount",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The maximum nominator count before we stop allowing new validators to join.",
                                    "",
                                    " When this value is not set, no limits are enforced."
                                ]
                            },
                            {
                                "name": "CurrentEra",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "EraIndex"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The current era index.",
                                    "",
                                    " This is the latest planned era, depending on how the Session pallet queues the validator",
                                    " set, it might be active or not."
                                ]
                            },
                            {
                                "name": "ActiveEra",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "ActiveEraInfo"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The active era information, it holds index and start.",
                                    "",
                                    " The active era is the era being currently rewarded. Validator set of this era must be",
                                    " equal to [`SessionInterface::validators`]."
                                ]
                            },
                            {
                                "name": "ErasStartSessionIndex",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "EraIndex",
                                        "value": "SessionIndex",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The session index at which the era start for the last `HISTORY_DEPTH` eras.",
                                    "",
                                    " Note: This tracks the starting session (i.e. session index when era start being active)",
                                    " for the eras in `[CurrentEra - HISTORY_DEPTH, CurrentEra]`."
                                ]
                            },
                            {
                                "name": "ErasStakers",
                                "modifier": "Default",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "EraIndex",
                                        "key2": "AccountId",
                                        "value": "Exposure",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x000000",
                                "docs": [
                                    " Exposure of validator at era.",
                                    "",
                                    " This is keyed first by the era index to allow bulk deletion and then the stash account.",
                                    "",
                                    " Is it removed after `HISTORY_DEPTH` eras.",
                                    " If stakers hasn't been set or has been removed then empty exposure is returned."
                                ]
                            },
                            {
                                "name": "ErasStakersClipped",
                                "modifier": "Default",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "EraIndex",
                                        "key2": "AccountId",
                                        "value": "Exposure",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x000000",
                                "docs": [
                                    " Clipped Exposure of validator at era.",
                                    "",
                                    " This is similar to [`ErasStakers`] but number of nominators exposed is reduced to the",
                                    " `T::MaxNominatorRewardedPerValidator` biggest stakers.",
                                    " (Note: the field `total` and `own` of the exposure remains unchanged).",
                                    " This is used to limit the i/o cost for the nominator payout.",
                                    "",
                                    " This is keyed fist by the era index to allow bulk deletion and then the stash account.",
                                    "",
                                    " Is it removed after `HISTORY_DEPTH` eras.",
                                    " If stakers hasn't been set or has been removed then empty exposure is returned."
                                ]
                            },
                            {
                                "name": "ErasValidatorPrefs",
                                "modifier": "Default",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "EraIndex",
                                        "key2": "AccountId",
                                        "value": "ValidatorPrefs",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x0000",
                                "docs": [
                                    " Similar to `ErasStakers`, this holds the preferences of validators.",
                                    "",
                                    " This is keyed first by the era index to allow bulk deletion and then the stash account.",
                                    "",
                                    " Is it removed after `HISTORY_DEPTH` eras."
                                ]
                            },
                            {
                                "name": "ErasValidatorReward",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "EraIndex",
                                        "value": "BalanceOf",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The total validator era payout for the last `HISTORY_DEPTH` eras.",
                                    "",
                                    " Eras that haven't finished yet or has been removed doesn't have reward."
                                ]
                            },
                            {
                                "name": "ErasRewardPoints",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "EraIndex",
                                        "value": "EraRewardPoints",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000",
                                "docs": [
                                    " Rewards for the last `HISTORY_DEPTH` eras.",
                                    " If reward hasn't been set or has been removed then 0 reward is returned."
                                ]
                            },
                            {
                                "name": "ErasTotalStake",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "EraIndex",
                                        "value": "BalanceOf",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00000000000000000000000000000000",
                                "docs": [
                                    " The total amount staked for the last `HISTORY_DEPTH` eras.",
                                    " If total hasn't been set or has been removed then 0 stake is returned."
                                ]
                            },
                            {
                                "name": "ForceEra",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Forcing"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Mode of era forcing."
                                ]
                            },
                            {
                                "name": "SlashRewardFraction",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Perbill"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The percentage of the slash that is distributed to reporters.",
                                    "",
                                    " The rest of the slashed value is handled by the `Slash`."
                                ]
                            },
                            {
                                "name": "CanceledSlashPayout",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BalanceOf"
                                },
                                "fallback": "0x00000000000000000000000000000000",
                                "docs": [
                                    " The amount of currency given to reporters of a slash event which was",
                                    " canceled by extraordinary circumstances (e.g. governance)."
                                ]
                            },
                            {
                                "name": "UnappliedSlashes",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "EraIndex",
                                        "value": "Vec<UnappliedSlash>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All unapplied slashes that are queued for later."
                                ]
                            },
                            {
                                "name": "BondedEras",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(EraIndex,SessionIndex)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " A mapping from still-bonded eras to the first session index of that era.",
                                    "",
                                    " Must contains information for eras for the range:",
                                    " `[active_era - bounding_duration; active_era]`"
                                ]
                            },
                            {
                                "name": "ValidatorSlashInEra",
                                "modifier": "Optional",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "EraIndex",
                                        "key2": "AccountId",
                                        "value": "(Perbill,BalanceOf)",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All slashing events on validators, mapped by era to the highest slash proportion",
                                    " and slash value of the era."
                                ]
                            },
                            {
                                "name": "NominatorSlashInEra",
                                "modifier": "Optional",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "EraIndex",
                                        "key2": "AccountId",
                                        "value": "BalanceOf",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All slashing events on nominators, mapped by era to the highest slash value of the era."
                                ]
                            },
                            {
                                "name": "SlashingSpans",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "SlashingSpans",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Slashing spans for stash accounts."
                                ]
                            },
                            {
                                "name": "SpanSlash",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "(AccountId,SpanIndex)",
                                        "value": "SpanRecord",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " Records information about the maximum slash of a stash within a slashing span,",
                                    " as well as how much reward has been paid out."
                                ]
                            },
                            {
                                "name": "EarliestUnappliedSlash",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "EraIndex"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The earliest era for which we have a pending, unapplied slash."
                                ]
                            },
                            {
                                "name": "CurrentPlannedSession",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SessionIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The last planned session scheduled by the session pallet.",
                                    "",
                                    " This is basically in sync with the call to [`pallet_session::SessionManager::new_session`]."
                                ]
                            },
                            {
                                "name": "StorageVersion",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Releases"
                                },
                                "fallback": "0x06",
                                "docs": [
                                    " True if network has been upgraded to this version.",
                                    " Storage version of the pallet.",
                                    "",
                                    " This is set to v7.0.0 for new networks."
                                ]
                            },
                            {
                                "name": "ChillThreshold",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "Percent"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The threshold for when users can start calling `chill_other` for other validators / nominators.",
                                    " The threshold is compared to the actual number of validators / nominators (`CountFor*`) in",
                                    " the system compared to the configured max (`Max*Count`)."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "bond",
                            "args": [
                                {
                                    "name": "controller",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "value",
                                    "type": "Compact<BalanceOf>"
                                },
                                {
                                    "name": "payee",
                                    "type": "RewardDestination"
                                }
                            ],
                            "docs": [
                                " Take the origin account as a stash and lock up `value` of its balance. `controller` will",
                                " be the account that controls it.",
                                "",
                                " `value` must be more than the `minimum_balance` specified by `T::Currency`.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the stash account.",
                                "",
                                " Emits `Bonded`.",
                                " # <weight>",
                                " - Independent of the arguments. Moderate complexity.",
                                " - O(1).",
                                " - Three extra DB entries.",
                                "",
                                " NOTE: Two of the storage writes (`Self::bonded`, `Self::payee`) are _never_ cleaned",
                                " unless the `origin` falls below _existential deposit_ and gets removed as dust.",
                                " ------------------",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "bond_extra",
                            "args": [
                                {
                                    "name": "max_additional",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Add some extra amount that have appeared in the stash `free_balance` into the balance up",
                                " for staking.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the stash, not the controller.",
                                "",
                                " Use this if there are additional funds in your stash account that you wish to bond.",
                                " Unlike [`bond`](Self::bond) or [`unbond`](Self::unbond) this function does not impose any limitation",
                                " on the amount that can be added.",
                                "",
                                " Emits `Bonded`.",
                                "",
                                " # <weight>",
                                " - Independent of the arguments. Insignificant complexity.",
                                " - O(1).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "unbond",
                            "args": [
                                {
                                    "name": "value",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Schedule a portion of the stash to be unlocked ready for transfer out after the bond",
                                " period ends. If this leaves an amount actively bonded less than",
                                " T::Currency::minimum_balance(), then it is increased to the full amount.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
                                "",
                                " Once the unlock period is done, you can call `withdraw_unbonded` to actually move",
                                " the funds out of management ready for transfer.",
                                "",
                                " No more than a limited number of unlocking chunks (see `MAX_UNLOCKING_CHUNKS`)",
                                " can co-exists at the same time. In that case, [`Call::withdraw_unbonded`] need",
                                " to be called first to remove some of the chunks (if possible).",
                                "",
                                " If a user encounters the `InsufficientBond` error when calling this extrinsic,",
                                " they should call `chill` first in order to free up their bonded funds.",
                                "",
                                " Emits `Unbonded`.",
                                "",
                                " See also [`Call::withdraw_unbonded`]."
                            ]
                        },
                        {
                            "name": "withdraw_unbonded",
                            "args": [
                                {
                                    "name": "num_slashing_spans",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Remove any unlocked chunks from the `unlocking` queue from our management.",
                                "",
                                " This essentially frees up that balance to be used by the stash account to do",
                                " whatever it wants.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller.",
                                "",
                                " Emits `Withdrawn`.",
                                "",
                                " See also [`Call::unbond`].",
                                "",
                                " # <weight>",
                                " Complexity O(S) where S is the number of slashing spans to remove",
                                " NOTE: Weight annotation is the kill scenario, we refund otherwise.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "validate",
                            "args": [
                                {
                                    "name": "prefs",
                                    "type": "ValidatorPrefs"
                                }
                            ],
                            "docs": [
                                " Declare the desire to validate for the origin controller.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash."
                            ]
                        },
                        {
                            "name": "nominate",
                            "args": [
                                {
                                    "name": "targets",
                                    "type": "Vec<LookupSource>"
                                }
                            ],
                            "docs": [
                                " Declare the desire to nominate `targets` for the origin controller.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
                                "",
                                " # <weight>",
                                " - The transaction's complexity is proportional to the size of `targets` (N)",
                                " which is capped at CompactAssignments::LIMIT (MAX_NOMINATIONS).",
                                " - Both the reads and writes follow a similar pattern.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "chill",
                            "args": [],
                            "docs": [
                                " Declare no desire to either validate or nominate.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
                                "",
                                " # <weight>",
                                " - Independent of the arguments. Insignificant complexity.",
                                " - Contains one read.",
                                " - Writes are limited to the `origin` account key.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_payee",
                            "args": [
                                {
                                    "name": "payee",
                                    "type": "RewardDestination"
                                }
                            ],
                            "docs": [
                                " (Re-)set the payment target for a controller.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
                                "",
                                " # <weight>",
                                " - Independent of the arguments. Insignificant complexity.",
                                " - Contains a limited number of reads.",
                                " - Writes are limited to the `origin` account key.",
                                " ---------",
                                " - Weight: O(1)",
                                " - DB Weight:",
                                "     - Read: Ledger",
                                "     - Write: Payee",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_controller",
                            "args": [
                                {
                                    "name": "controller",
                                    "type": "LookupSource"
                                }
                            ],
                            "docs": [
                                " (Re-)set the controller of a stash.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the stash, not the controller.",
                                "",
                                " # <weight>",
                                " - Independent of the arguments. Insignificant complexity.",
                                " - Contains a limited number of reads.",
                                " - Writes are limited to the `origin` account key.",
                                " ----------",
                                " Weight: O(1)",
                                " DB Weight:",
                                " - Read: Bonded, Ledger New Controller, Ledger Old Controller",
                                " - Write: Bonded, Ledger New Controller, Ledger Old Controller",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_validator_count",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Compact<u32>"
                                }
                            ],
                            "docs": [
                                " Sets the ideal number of validators.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # <weight>",
                                " Weight: O(1)",
                                " Write: Validator Count",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "increase_validator_count",
                            "args": [
                                {
                                    "name": "additional",
                                    "type": "Compact<u32>"
                                }
                            ],
                            "docs": [
                                " Increments the ideal number of validators.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # <weight>",
                                " Same as [`Self::set_validator_count`].",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "scale_validator_count",
                            "args": [
                                {
                                    "name": "factor",
                                    "type": "Percent"
                                }
                            ],
                            "docs": [
                                " Scale up the ideal number of validators by a factor.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # <weight>",
                                " Same as [`Self::set_validator_count`].",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_no_eras",
                            "args": [],
                            "docs": [
                                " Force there to be no new eras indefinitely.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # Warning",
                                "",
                                " The election process starts multiple blocks before the end of the era.",
                                " Thus the election process may be ongoing when this is called. In this case the",
                                " election will continue until the next era is triggered.",
                                "",
                                " # <weight>",
                                " - No arguments.",
                                " - Weight: O(1)",
                                " - Write: ForceEra",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_new_era",
                            "args": [],
                            "docs": [
                                " Force there to be a new era at the end of the next session. After this, it will be",
                                " reset to normal (non-forced) behaviour.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # Warning",
                                "",
                                " The election process starts multiple blocks before the end of the era.",
                                " If this is called just before a new era is triggered, the election process may not",
                                " have enough blocks to get a result.",
                                "",
                                " # <weight>",
                                " - No arguments.",
                                " - Weight: O(1)",
                                " - Write ForceEra",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_invulnerables",
                            "args": [
                                {
                                    "name": "invulnerables",
                                    "type": "Vec<AccountId>"
                                }
                            ],
                            "docs": [
                                " Set the validators who cannot be slashed (if any).",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # <weight>",
                                " - O(V)",
                                " - Write: Invulnerables",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_unstake",
                            "args": [
                                {
                                    "name": "stash",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "num_slashing_spans",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Force a current staker to become completely unstaked, immediately.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # <weight>",
                                " O(S) where S is the number of slashing spans to be removed",
                                " Reads: Bonded, Slashing Spans, Account, Locks",
                                " Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Account, Locks",
                                " Writes Each: SpanSlash * S",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_new_era_always",
                            "args": [],
                            "docs": [
                                " Force there to be a new era at the end of sessions indefinitely.",
                                "",
                                " The dispatch origin must be Root.",
                                "",
                                " # Warning",
                                "",
                                " The election process starts multiple blocks before the end of the era.",
                                " If this is called just before a new era is triggered, the election process may not",
                                " have enough blocks to get a result.",
                                "",
                                " # <weight>",
                                " - Weight: O(1)",
                                " - Write: ForceEra",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel_deferred_slash",
                            "args": [
                                {
                                    "name": "era",
                                    "type": "EraIndex"
                                },
                                {
                                    "name": "slash_indices",
                                    "type": "Vec<u32>"
                                }
                            ],
                            "docs": [
                                " Cancel enactment of a deferred slash.",
                                "",
                                " Can be called by the `T::SlashCancelOrigin`.",
                                "",
                                " Parameters: era and indices of the slashes for that era to kill.",
                                "",
                                " # <weight>",
                                " Complexity: O(U + S)",
                                " with U unapplied slashes weighted with U=1000",
                                " and S is the number of slash indices to be canceled.",
                                " - Read: Unapplied Slashes",
                                " - Write: Unapplied Slashes",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "payout_stakers",
                            "args": [
                                {
                                    "name": "validator_stash",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "era",
                                    "type": "EraIndex"
                                }
                            ],
                            "docs": [
                                " Pay out all the stakers behind a single validator for a single era.",
                                "",
                                " - `validator_stash` is the stash account of the validator. Their nominators, up to",
                                "   `T::MaxNominatorRewardedPerValidator`, will also receive their rewards.",
                                " - `era` may be any era between `[current_era - history_depth; current_era]`.",
                                "",
                                " The origin of this call must be _Signed_. Any account can call this function, even if",
                                " it is not one of the stakers.",
                                "",
                                " # <weight>",
                                " - Time complexity: at most O(MaxNominatorRewardedPerValidator).",
                                " - Contains a limited number of reads and writes.",
                                " -----------",
                                " N is the Number of payouts for the validator (including the validator)",
                                " Weight:",
                                " - Reward Destination Staked: O(N)",
                                " - Reward Destination Controller (Creating): O(N)",
                                "",
                                "   NOTE: weights are assuming that payouts are made to alive stash account (Staked).",
                                "   Paying even a dead controller is cheaper weight-wise. We don't do any refunds here.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "rebond",
                            "args": [
                                {
                                    "name": "value",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Rebond a portion of the stash scheduled to be unlocked.",
                                "",
                                " The dispatch origin must be signed by the controller.",
                                "",
                                " # <weight>",
                                " - Time complexity: O(L), where L is unlocking chunks",
                                " - Bounded by `MAX_UNLOCKING_CHUNKS`.",
                                " - Storage changes: Can't increase storage, only decrease it.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_history_depth",
                            "args": [
                                {
                                    "name": "new_history_depth",
                                    "type": "Compact<EraIndex>"
                                },
                                {
                                    "name": "_era_items_deleted",
                                    "type": "Compact<u32>"
                                }
                            ],
                            "docs": [
                                " Set `HistoryDepth` value. This function will delete any history information",
                                " when `HistoryDepth` is reduced.",
                                "",
                                " Parameters:",
                                " - `new_history_depth`: The new history depth you would like to set.",
                                " - `era_items_deleted`: The number of items that will be deleted by this dispatch.",
                                "    This should report all the storage items that will be deleted by clearing old",
                                "    era history. Needed to report an accurate weight for the dispatch. Trusted by",
                                "    `Root` to report an accurate number.",
                                "",
                                " Origin must be root.",
                                "",
                                " # <weight>",
                                " - E: Number of history depths removed, i.e. 10 -> 7 = 3",
                                " - Weight: O(E)",
                                " - DB Weight:",
                                "     - Reads: Current Era, History Depth",
                                "     - Writes: History Depth",
                                "     - Clear Prefix Each: Era Stakers, EraStakersClipped, ErasValidatorPrefs",
                                "     - Writes Each: ErasValidatorReward, ErasRewardPoints, ErasTotalStake, ErasStartSessionIndex",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "reap_stash",
                            "args": [
                                {
                                    "name": "stash",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "num_slashing_spans",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Remove all data structure concerning a staker/stash once its balance is at the minimum.",
                                " This is essentially equivalent to `withdraw_unbonded` except it can be called by anyone",
                                " and the target `stash` must have no funds left beyond the ED.",
                                "",
                                " This can be called from any origin.",
                                "",
                                " - `stash`: The stash account to reap. Its balance must be zero.",
                                "",
                                " # <weight>",
                                " Complexity: O(S) where S is the number of slashing spans on the account.",
                                " DB Weight:",
                                " - Reads: Stash Account, Bonded, Slashing Spans, Locks",
                                " - Writes: Bonded, Slashing Spans (if S > 0), Ledger, Payee, Validators, Nominators, Stash Account, Locks",
                                " - Writes Each: SpanSlash * S",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "kick",
                            "args": [
                                {
                                    "name": "who",
                                    "type": "Vec<LookupSource>"
                                }
                            ],
                            "docs": [
                                " Remove the given nominations from the calling validator.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_ by the controller, not the stash.",
                                "",
                                " - `who`: A list of nominator stash accounts who are nominating this validator which",
                                "   should no longer be nominating this validator.",
                                "",
                                " Note: Making this call only makes sense if you first set the validator preferences to",
                                " block any further nominations."
                            ]
                        },
                        {
                            "name": "set_staking_limits",
                            "args": [
                                {
                                    "name": "min_nominator_bond",
                                    "type": "BalanceOf"
                                },
                                {
                                    "name": "min_validator_bond",
                                    "type": "BalanceOf"
                                },
                                {
                                    "name": "max_nominator_count",
                                    "type": "Option<u32>"
                                },
                                {
                                    "name": "max_validator_count",
                                    "type": "Option<u32>"
                                },
                                {
                                    "name": "threshold",
                                    "type": "Option<Percent>"
                                }
                            ],
                            "docs": [
                                " Update the various staking limits this pallet.",
                                "",
                                " * `min_nominator_bond`: The minimum active bond needed to be a nominator.",
                                " * `min_validator_bond`: The minimum active bond needed to be a validator.",
                                " * `max_nominator_count`: The max number of users who can be a nominator at once.",
                                "   When set to `None`, no limit is enforced.",
                                " * `max_validator_count`: The max number of users who can be a validator at once.",
                                "   When set to `None`, no limit is enforced.",
                                "",
                                " Origin must be Root to call this function.",
                                "",
                                " NOTE: Existing nominators and validators will not be affected by this update.",
                                " to kick people under the new limits, `chill_other` should be called."
                            ]
                        },
                        {
                            "name": "chill_other",
                            "args": [
                                {
                                    "name": "controller",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Declare a `controller` to stop participating as either a validator or nominator.",
                                "",
                                " Effects will be felt at the beginning of the next era.",
                                "",
                                " The dispatch origin for this call must be _Signed_, but can be called by anyone.",
                                "",
                                " If the caller is the same as the controller being targeted, then no further checks are",
                                " enforced, and this function behaves just like `chill`.",
                                "",
                                " If the caller is different than the controller being targeted, the following conditions",
                                " must be met:",
                                " * A `ChillThreshold` must be set and checked which defines how close to the max",
                                "   nominators or validators we must reach before users can start chilling one-another.",
                                " * A `MaxNominatorCount` and `MaxValidatorCount` must be set which is used to determine",
                                "   how close we are to the threshold.",
                                " * A `MinNominatorBond` and `MinValidatorBond` must be set and checked, which determines",
                                "   if this is a person that should be chilled because they have not met the threshold",
                                "   bond required.",
                                "",
                                " This can be helpful if bond requirements are updated, and we need to remove old users",
                                " who do not satisfy these requirements."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "EraPaid",
                            "args": [
                                "EraIndex",
                                "Balance",
                                "Balance"
                            ],
                            "docs": [
                                " The era payout has been set; the first balance is the validator-payout; the second is",
                                " the remainder from the maximum amount of reward.",
                                " \\[era_index, validator_payout, remainder\\]"
                            ]
                        },
                        {
                            "name": "Rewarded",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " The nominator has been rewarded by this amount. \\[stash, amount\\]"
                            ]
                        },
                        {
                            "name": "Slashed",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " One validator (and its nominators) has been slashed by the given amount.",
                                " \\[validator, amount\\]"
                            ]
                        },
                        {
                            "name": "OldSlashingReportDiscarded",
                            "args": [
                                "SessionIndex"
                            ],
                            "docs": [
                                " An old slashing report from a prior era was discarded because it could",
                                " not be processed. \\[session_index\\]"
                            ]
                        },
                        {
                            "name": "StakersElected",
                            "args": [],
                            "docs": [
                                " A new set of stakers was elected."
                            ]
                        },
                        {
                            "name": "Bonded",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account has bonded this amount. \\[stash, amount\\]",
                                "",
                                " NOTE: This event is only emitted when funds are bonded via a dispatchable. Notably,",
                                " it will not be emitted for staking rewards when they are added to stake."
                            ]
                        },
                        {
                            "name": "Unbonded",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account has unbonded this amount. \\[stash, amount\\]"
                            ]
                        },
                        {
                            "name": "Withdrawn",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account has called `withdraw_unbonded` and removed unbonding chunks worth `Balance`",
                                " from the unlocking queue. \\[stash, amount\\]"
                            ]
                        },
                        {
                            "name": "Kicked",
                            "args": [
                                "AccountId",
                                "AccountId"
                            ],
                            "docs": [
                                " A nominator has been kicked from a validator. \\[nominator, stash\\]"
                            ]
                        },
                        {
                            "name": "StakingElectionFailed",
                            "args": [],
                            "docs": [
                                " The election failed. No new era is planned."
                            ]
                        },
                        {
                            "name": "Chilled",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " An account has stopped participating as either a validator or nominator.",
                                " \\[stash\\]"
                            ]
                        },
                        {
                            "name": "PayoutStarted",
                            "args": [
                                "EraIndex",
                                "AccountId"
                            ],
                            "docs": [
                                " The stakers' rewards are getting paid. \\[era_index, validator_stash\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "SessionsPerEra",
                            "type": "SessionIndex",
                            "value": "0x06000000",
                            "docs": [
                                " Number of sessions per era."
                            ]
                        },
                        {
                            "name": "BondingDuration",
                            "type": "EraIndex",
                            "value": "0x1c000000",
                            "docs": [
                                " Number of eras that staked funds must remain bonded for."
                            ]
                        },
                        {
                            "name": "SlashDeferDuration",
                            "type": "EraIndex",
                            "value": "0x1b000000",
                            "docs": [
                                " Number of eras that slashes are deferred by, after computation.",
                                "",
                                " This should be less than the bonding duration. Set to 0 if slashes",
                                " should be applied immediately, without opportunity for intervention."
                            ]
                        },
                        {
                            "name": "MaxNominatorRewardedPerValidator",
                            "type": "u32",
                            "value": "0x40000000",
                            "docs": [
                                " The maximum number of nominators rewarded for each validator.",
                                "",
                                " For each validator only the `$MaxNominatorRewardedPerValidator` biggest stakers can claim",
                                " their reward. This used to limit the i/o cost for the nominator payout."
                            ]
                        },
                        {
                            "name": "MaxNominations",
                            "type": "u32",
                            "value": "0x10000000",
                            "docs": []
                        }
                    ],
                    "errors": [
                        {
                            "name": "NotController",
                            "docs": [
                                " Not a controller account."
                            ]
                        },
                        {
                            "name": "NotStash",
                            "docs": [
                                " Not a stash account."
                            ]
                        },
                        {
                            "name": "AlreadyBonded",
                            "docs": [
                                " Stash is already bonded."
                            ]
                        },
                        {
                            "name": "AlreadyPaired",
                            "docs": [
                                " Controller is already paired."
                            ]
                        },
                        {
                            "name": "EmptyTargets",
                            "docs": [
                                " Targets cannot be empty."
                            ]
                        },
                        {
                            "name": "DuplicateIndex",
                            "docs": [
                                " Duplicate index."
                            ]
                        },
                        {
                            "name": "InvalidSlashIndex",
                            "docs": [
                                " Slash record index out of bounds."
                            ]
                        },
                        {
                            "name": "InsufficientBond",
                            "docs": [
                                " Can not bond with value less than minimum required."
                            ]
                        },
                        {
                            "name": "NoMoreChunks",
                            "docs": [
                                " Can not schedule more unlock chunks."
                            ]
                        },
                        {
                            "name": "NoUnlockChunk",
                            "docs": [
                                " Can not rebond without unlocking chunks."
                            ]
                        },
                        {
                            "name": "FundedTarget",
                            "docs": [
                                " Attempting to target a stash that still has funds."
                            ]
                        },
                        {
                            "name": "InvalidEraToReward",
                            "docs": [
                                " Invalid era to reward."
                            ]
                        },
                        {
                            "name": "InvalidNumberOfNominations",
                            "docs": [
                                " Invalid number of nominations."
                            ]
                        },
                        {
                            "name": "NotSortedAndUnique",
                            "docs": [
                                " Items are not sorted and unique."
                            ]
                        },
                        {
                            "name": "AlreadyClaimed",
                            "docs": [
                                " Rewards for this era have already been claimed for this validator."
                            ]
                        },
                        {
                            "name": "IncorrectHistoryDepth",
                            "docs": [
                                " Incorrect previous history depth input provided."
                            ]
                        },
                        {
                            "name": "IncorrectSlashingSpans",
                            "docs": [
                                " Incorrect number of slashing spans provided."
                            ]
                        },
                        {
                            "name": "BadState",
                            "docs": [
                                " Internal state has become somehow corrupted and the operation cannot continue."
                            ]
                        },
                        {
                            "name": "TooManyTargets",
                            "docs": [
                                " Too many nomination targets supplied."
                            ]
                        },
                        {
                            "name": "BadTarget",
                            "docs": [
                                " A nomination target was supplied that was blocked or otherwise not a validator."
                            ]
                        },
                        {
                            "name": "CannotChillOther",
                            "docs": [
                                " The user has enough bond and thus cannot be chilled forcefully by an external person."
                            ]
                        },
                        {
                            "name": "TooManyNominators",
                            "docs": [
                                " There are too many nominators in the system. Governance needs to adjust the staking settings",
                                " to keep things safe for the runtime."
                            ]
                        },
                        {
                            "name": "TooManyValidators",
                            "docs": [
                                " There are too many validators in the system. Governance needs to adjust the staking settings",
                                " to keep things safe for the runtime."
                            ]
                        }
                    ],
                    "index": "6"
                },
                {
                    "name": "Offences",
                    "storage": {
                        "prefix": "Offences",
                        "items": [
                            {
                                "name": "Reports",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ReportIdOf",
                                        "value": "OffenceDetails",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The primary structure that holds all offence records keyed by report identifiers."
                                ]
                            },
                            {
                                "name": "ConcurrentReportsIndex",
                                "modifier": "Default",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "Kind",
                                        "key2": "OpaqueTimeSlot",
                                        "value": "Vec<ReportIdOf>",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " A vector of reports of the same kind that happened at the same time slot."
                                ]
                            },
                            {
                                "name": "ReportsByKindIndex",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "Kind",
                                        "value": "Bytes",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Enumerates all reports of a kind along with the time they happened.",
                                    "",
                                    " All reports are sorted by the time of offence.",
                                    "",
                                    " Note that the actual type of this mapping is `Vec<u8>`, this is because values of",
                                    " different types are not supported at the moment so we are doing the manual serialization."
                                ]
                            }
                        ]
                    },
                    "calls": null,
                    "events": [
                        {
                            "name": "Offence",
                            "args": [
                                "Kind",
                                "OpaqueTimeSlot"
                            ],
                            "docs": [
                                " There is an offence reported of the given `kind` happened at the `session_index` and",
                                " (kind-specific) time slot. This event is not deposited for duplicate slashes.",
                                " \\[kind, timeslot\\]."
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [],
                    "index": "7"
                },
                {
                    "name": "Historical",
                    "storage": null,
                    "calls": null,
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "27"
                },
                {
                    "name": "Session",
                    "storage": {
                        "prefix": "Session",
                        "items": [
                            {
                                "name": "Validators",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ValidatorId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The current set of validators."
                                ]
                            },
                            {
                                "name": "CurrentIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SessionIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " Current index of the session."
                                ]
                            },
                            {
                                "name": "QueuedChanged",
                                "modifier": "Default",
                                "type": {
                                    "plain": "bool"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " True if the underlying economic identities or weighting behind the validators",
                                    " has changed in the queued validator set."
                                ]
                            },
                            {
                                "name": "QueuedKeys",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(ValidatorId,Keys)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The queued keys for the next session. When the next session begins, these keys",
                                    " will be used to determine the validator's session keys."
                                ]
                            },
                            {
                                "name": "DisabledValidators",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<u32>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Indices of disabled validators.",
                                    "",
                                    " The set is cleared when `on_session_ending` returns a new set of identities."
                                ]
                            },
                            {
                                "name": "NextKeys",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ValidatorId",
                                        "value": "Keys",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The next session keys for a validator."
                                ]
                            },
                            {
                                "name": "KeyOwner",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "(KeyTypeId,Bytes)",
                                        "value": "ValidatorId",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The owner of a key. The key is the `KeyTypeId` + the encoded key."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "set_keys",
                            "args": [
                                {
                                    "name": "keys",
                                    "type": "Keys"
                                },
                                {
                                    "name": "proof",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Sets the session key(s) of the function caller to `keys`.",
                                " Allows an account to set its session key prior to becoming a validator.",
                                " This doesn't take effect until the next session.",
                                "",
                                " The dispatch origin of this function must be signed.",
                                "",
                                " # <weight>",
                                " - Complexity: `O(1)`",
                                "   Actual cost depends on the number of length of `T::Keys::key_ids()` which is fixed.",
                                " - DbReads: `origin account`, `T::ValidatorIdOf`, `NextKeys`",
                                " - DbWrites: `origin account`, `NextKeys`",
                                " - DbReads per key id: `KeyOwner`",
                                " - DbWrites per key id: `KeyOwner`",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "purge_keys",
                            "args": [],
                            "docs": [
                                " Removes any session key(s) of the function caller.",
                                " This doesn't take effect until the next session.",
                                "",
                                " The dispatch origin of this function must be signed.",
                                "",
                                " # <weight>",
                                " - Complexity: `O(1)` in number of key types.",
                                "   Actual cost depends on the number of length of `T::Keys::key_ids()` which is fixed.",
                                " - DbReads: `T::ValidatorIdOf`, `NextKeys`, `origin account`",
                                " - DbWrites: `NextKeys`, `origin account`",
                                " - DbWrites per key id: `KeyOwner`",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "NewSession",
                            "args": [
                                "SessionIndex"
                            ],
                            "docs": [
                                " New session has happened. Note that the argument is the \\[session_index\\], not the block",
                                " number as the type might suggest."
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "InvalidProof",
                            "docs": [
                                " Invalid ownership proof."
                            ]
                        },
                        {
                            "name": "NoAssociatedValidatorId",
                            "docs": [
                                " No associated validator ID for account."
                            ]
                        },
                        {
                            "name": "DuplicatedKey",
                            "docs": [
                                " Registered duplicate key."
                            ]
                        },
                        {
                            "name": "NoKeys",
                            "docs": [
                                " No keys are associated with this account."
                            ]
                        },
                        {
                            "name": "NoAccount",
                            "docs": [
                                " Key setting account is not live, so it's impossible to associate keys."
                            ]
                        }
                    ],
                    "index": "8"
                },
                {
                    "name": "Grandpa",
                    "storage": {
                        "prefix": "Grandpa",
                        "items": [
                            {
                                "name": "State",
                                "modifier": "Default",
                                "type": {
                                    "plain": "StoredState"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " State of the current authority set."
                                ]
                            },
                            {
                                "name": "PendingChange",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "StoredPendingChange"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Pending change: (signaled at, scheduled change)."
                                ]
                            },
                            {
                                "name": "NextForced",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "BlockNumber"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " next block number where we can force a change."
                                ]
                            },
                            {
                                "name": "Stalled",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "(BlockNumber,BlockNumber)"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " `true` if we are currently stalled."
                                ]
                            },
                            {
                                "name": "CurrentSetId",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SetId"
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " The number of changes (both in terms of keys and underlying economic responsibilities)",
                                    " in the \"set\" of Grandpa validators from genesis."
                                ]
                            },
                            {
                                "name": "SetIdSession",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "SetId",
                                        "value": "SessionIndex",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " A mapping from grandpa set ID to the index of the *most recent* session for which its",
                                    " members were responsible.",
                                    "",
                                    " TWOX-NOTE: `SetId` is not under user control."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "report_equivocation",
                            "args": [
                                {
                                    "name": "equivocation_proof",
                                    "type": "EquivocationProof"
                                },
                                {
                                    "name": "key_owner_proof",
                                    "type": "KeyOwnerProof"
                                }
                            ],
                            "docs": [
                                " Report voter equivocation/misbehavior. This method will verify the",
                                " equivocation proof and validate the given key ownership proof",
                                " against the extracted offender. If both are valid, the offence",
                                " will be reported."
                            ]
                        },
                        {
                            "name": "report_equivocation_unsigned",
                            "args": [
                                {
                                    "name": "equivocation_proof",
                                    "type": "EquivocationProof"
                                },
                                {
                                    "name": "key_owner_proof",
                                    "type": "KeyOwnerProof"
                                }
                            ],
                            "docs": [
                                " Report voter equivocation/misbehavior. This method will verify the",
                                " equivocation proof and validate the given key ownership proof",
                                " against the extracted offender. If both are valid, the offence",
                                " will be reported.",
                                "",
                                " This extrinsic must be called unsigned and it is expected that only",
                                " block authors will call it (validated in `ValidateUnsigned`), as such",
                                " if the block author is defined it will be defined as the equivocation",
                                " reporter."
                            ]
                        },
                        {
                            "name": "note_stalled",
                            "args": [
                                {
                                    "name": "delay",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "best_finalized_block_number",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Note that the current authority set of the GRANDPA finality gadget has",
                                " stalled. This will trigger a forced authority set change at the beginning",
                                " of the next session, to be enacted `delay` blocks after that. The delay",
                                " should be high enough to safely assume that the block signalling the",
                                " forced change will not be re-orged (e.g. 1000 blocks). The GRANDPA voters",
                                " will start the new authority set using the given finalized block as base.",
                                " Only callable by root."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "NewAuthorities",
                            "args": [
                                "AuthorityList"
                            ],
                            "docs": [
                                " New authority set has been applied. \\[authority_set\\]"
                            ]
                        },
                        {
                            "name": "Paused",
                            "args": [],
                            "docs": [
                                " Current authority set has been paused."
                            ]
                        },
                        {
                            "name": "Resumed",
                            "args": [],
                            "docs": [
                                " Current authority set has been resumed."
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "PauseFailed",
                            "docs": [
                                " Attempt to signal GRANDPA pause when the authority set isn't live",
                                " (either paused or already pending pause)."
                            ]
                        },
                        {
                            "name": "ResumeFailed",
                            "docs": [
                                " Attempt to signal GRANDPA resume when the authority set isn't paused",
                                " (either live or already pending resume)."
                            ]
                        },
                        {
                            "name": "ChangePending",
                            "docs": [
                                " Attempt to signal GRANDPA change with one already pending."
                            ]
                        },
                        {
                            "name": "TooSoon",
                            "docs": [
                                " Cannot signal forced change so soon after last."
                            ]
                        },
                        {
                            "name": "InvalidKeyOwnershipProof",
                            "docs": [
                                " A key ownership proof provided as part of an equivocation report is invalid."
                            ]
                        },
                        {
                            "name": "InvalidEquivocationProof",
                            "docs": [
                                " An equivocation proof provided as part of an equivocation report is invalid."
                            ]
                        },
                        {
                            "name": "DuplicateOffenceReport",
                            "docs": [
                                " A given equivocation report is valid but already previously reported."
                            ]
                        }
                    ],
                    "index": "10"
                },
                {
                    "name": "ImOnline",
                    "storage": {
                        "prefix": "ImOnline",
                        "items": [
                            {
                                "name": "HeartbeatAfter",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BlockNumber"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The block number after which it's ok to send heartbeats in the current",
                                    " session.",
                                    "",
                                    " At the beginning of each session we set this to a value that should fall",
                                    " roughly in the middle of the session duration. The idea is to first wait for",
                                    " the validators to produce a block in the current session, so that the",
                                    " heartbeat later on will not be necessary.",
                                    "",
                                    " This value will only be used as a fallback if we fail to get a proper session",
                                    " progress estimate from `NextSessionRotation`, as those estimates should be",
                                    " more accurate then the value we calculate for `HeartbeatAfter`."
                                ]
                            },
                            {
                                "name": "Keys",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<AuthorityId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The current set of keys that may issue a heartbeat."
                                ]
                            },
                            {
                                "name": "ReceivedHeartbeats",
                                "modifier": "Optional",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "SessionIndex",
                                        "key2": "AuthIndex",
                                        "value": "Bytes",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " For each session index, we keep a mapping of `AuthIndex` to",
                                    " `offchain::OpaqueNetworkState`."
                                ]
                            },
                            {
                                "name": "AuthoredBlocks",
                                "modifier": "Default",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "SessionIndex",
                                        "key2": "ValidatorId",
                                        "value": "u32",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " For each session index, we keep a mapping of `ValidatorId<T>` to the",
                                    " number of blocks authored by the given authority."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "heartbeat",
                            "args": [
                                {
                                    "name": "heartbeat",
                                    "type": "Heartbeat"
                                },
                                {
                                    "name": "_signature",
                                    "type": "Signature"
                                }
                            ],
                            "docs": [
                                " # <weight>",
                                " - Complexity: `O(K + E)` where K is length of `Keys` (heartbeat.validators_len)",
                                "   and E is length of `heartbeat.network_state.external_address`",
                                "   - `O(K)`: decoding of length `K`",
                                "   - `O(E)`: decoding/encoding of length `E`",
                                " - DbReads: pallet_session `Validators`, pallet_session `CurrentIndex`, `Keys`,",
                                "   `ReceivedHeartbeats`",
                                " - DbWrites: `ReceivedHeartbeats`",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "HeartbeatReceived",
                            "args": [
                                "AuthorityId"
                            ],
                            "docs": [
                                " A new heartbeat was received from `AuthorityId` \\[authority_id\\]"
                            ]
                        },
                        {
                            "name": "AllGood",
                            "args": [],
                            "docs": [
                                " At the end of the session, no offence was committed."
                            ]
                        },
                        {
                            "name": "SomeOffline",
                            "args": [
                                "Vec<IdentificationTuple>"
                            ],
                            "docs": [
                                " At the end of the session, at least one validator was found to be \\[offline\\]."
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "UnsignedPriority",
                            "type": "TransactionPriority",
                            "value": "0xffffffffffffffff",
                            "docs": [
                                " A configuration for base priority of unsigned transactions.",
                                "",
                                " This is exposed so that it can be tuned for particular runtime, when",
                                " multiple pallets send unsigned transactions."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "InvalidKey",
                            "docs": [
                                " Non existent public key."
                            ]
                        },
                        {
                            "name": "DuplicatedHeartbeat",
                            "docs": [
                                " Duplicated heartbeat."
                            ]
                        }
                    ],
                    "index": "11"
                },
                {
                    "name": "AuthorityDiscovery",
                    "storage": null,
                    "calls": null,
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "12"
                },
                {
                    "name": "Utility",
                    "storage": null,
                    "calls": [
                        {
                            "name": "batch",
                            "args": [
                                {
                                    "name": "calls",
                                    "type": "Vec<Call>"
                                }
                            ],
                            "docs": [
                                " Send a batch of dispatch calls.",
                                "",
                                " May be called from any origin.",
                                "",
                                " - `calls`: The calls to be dispatched from the same origin. The number of call must not",
                                "   exceed the constant: `batched_calls_limit` (available in constant metadata).",
                                "",
                                " If origin is root then call are dispatch without checking origin filter. (This includes",
                                " bypassing `frame_system::Config::BaseCallFilter`).",
                                "",
                                " # <weight>",
                                " - Complexity: O(C) where C is the number of calls to be batched.",
                                " # </weight>",
                                "",
                                " This will return `Ok` in all circumstances. To determine the success of the batch, an",
                                " event is deposited. If a call failed and the batch was interrupted, then the",
                                " `BatchInterrupted` event is deposited, along with the number of successful calls made",
                                " and the error of the failed call. If all were successful, then the `BatchCompleted`",
                                " event is deposited."
                            ]
                        },
                        {
                            "name": "as_derivative",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "u16"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Send a call through an indexed pseudonym of the sender.",
                                "",
                                " Filter from origin are passed along. The call will be dispatched with an origin which",
                                " use the same filter as the origin of this call.",
                                "",
                                " NOTE: If you need to ensure that any account-based filtering is not honored (i.e.",
                                " because you expect `proxy` to have been used prior in the call stack and you do not want",
                                " the call restrictions to apply to any sub-accounts), then use `as_multi_threshold_1`",
                                " in the Multisig pallet instead.",
                                "",
                                " NOTE: Prior to version *12, this was called `as_limited_sub`.",
                                "",
                                " The dispatch origin for this call must be _Signed_."
                            ]
                        },
                        {
                            "name": "batch_all",
                            "args": [
                                {
                                    "name": "calls",
                                    "type": "Vec<Call>"
                                }
                            ],
                            "docs": [
                                " Send a batch of dispatch calls and atomically execute them.",
                                " The whole transaction will rollback and fail if any of the calls failed.",
                                "",
                                " May be called from any origin.",
                                "",
                                " - `calls`: The calls to be dispatched from the same origin. The number of call must not",
                                "   exceed the constant: `batched_calls_limit` (available in constant metadata).",
                                "",
                                " If origin is root then call are dispatch without checking origin filter. (This includes",
                                " bypassing `frame_system::Config::BaseCallFilter`).",
                                "",
                                " # <weight>",
                                " - Complexity: O(C) where C is the number of calls to be batched.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "BatchInterrupted",
                            "args": [
                                "u32",
                                "DispatchError"
                            ],
                            "docs": [
                                " Batch of dispatches did not complete fully. Index of first failing dispatch given, as",
                                " well as the error. \\[index, error\\]"
                            ]
                        },
                        {
                            "name": "BatchCompleted",
                            "args": [],
                            "docs": [
                                " Batch of dispatches completed fully with no error."
                            ]
                        },
                        {
                            "name": "ItemCompleted",
                            "args": [],
                            "docs": [
                                " A single item within a Batch of dispatches has completed with no error."
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "batched_calls_limit",
                            "type": "u32",
                            "value": "0x822d0000",
                            "docs": [
                                " The limit on the number of batched calls."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "TooManyCalls",
                            "docs": [
                                " Too many calls batched."
                            ]
                        }
                    ],
                    "index": "16"
                },
                {
                    "name": "Identity",
                    "storage": {
                        "prefix": "Identity",
                        "items": [
                            {
                                "name": "IdentityOf",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "Registration",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Information that is pertinent to identify the entity behind an account.",
                                    "",
                                    " TWOX-NOTE: OK ― `AccountId` is a secure hash."
                                ]
                            },
                            {
                                "name": "SuperOf",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "(AccountId,Data)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The super-identity of an alternative \"sub\" identity together with its name, within that",
                                    " context. If the account is not some other account's sub-identity, then just `None`."
                                ]
                            },
                            {
                                "name": "SubsOf",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "(BalanceOf,Vec<AccountId>)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000",
                                "docs": [
                                    " Alternative \"sub\" identities of this account.",
                                    "",
                                    " The first item is the deposit, the second is a vector of the accounts.",
                                    "",
                                    " TWOX-NOTE: OK ― `AccountId` is a secure hash."
                                ]
                            },
                            {
                                "name": "Registrars",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<Option<RegistrarInfo>>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The set of registrars. Not expected to get very big as can only be added through a",
                                    " special origin (likely a council motion).",
                                    "",
                                    " The index into this can be cast to `RegistrarIndex` to get a valid value."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "add_registrar",
                            "args": [
                                {
                                    "name": "account",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Add a registrar to the system.",
                                "",
                                " The dispatch origin for this call must be `T::RegistrarOrigin`.",
                                "",
                                " - `account`: the account of the registrar.",
                                "",
                                " Emits `RegistrarAdded` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R)` where `R` registrar-count (governance-bounded and code-bounded).",
                                " - One storage mutation (codec `O(R)`).",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_identity",
                            "args": [
                                {
                                    "name": "info",
                                    "type": "IdentityInfo"
                                }
                            ],
                            "docs": [
                                " Set an account's identity information and reserve the appropriate deposit.",
                                "",
                                " If the account already has identity information, the deposit is taken as part payment",
                                " for the new deposit.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `info`: The identity information.",
                                "",
                                " Emits `IdentitySet` if successful.",
                                "",
                                " # <weight>",
                                " - `O(X + X' + R)`",
                                "   - where `X` additional-field-count (deposit-bounded and code-bounded)",
                                "   - where `R` judgements-count (registrar-count-bounded)",
                                " - One balance reserve operation.",
                                " - One storage mutation (codec-read `O(X' + R)`, codec-write `O(X + R)`).",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_subs",
                            "args": [
                                {
                                    "name": "subs",
                                    "type": "Vec<(AccountId,Data)>"
                                }
                            ],
                            "docs": [
                                " Set the sub-accounts of the sender.",
                                "",
                                " Payment: Any aggregate balance reserved by previous `set_subs` calls will be returned",
                                " and an amount `SubAccountDeposit` will be reserved for each item in `subs`.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " identity.",
                                "",
                                " - `subs`: The identity's (new) sub-accounts.",
                                "",
                                " # <weight>",
                                " - `O(P + S)`",
                                "   - where `P` old-subs-count (hard- and deposit-bounded).",
                                "   - where `S` subs-count (hard- and deposit-bounded).",
                                " - At most one balance operations.",
                                " - DB:",
                                "   - `P + S` storage mutations (codec complexity `O(1)`)",
                                "   - One storage read (codec complexity `O(P)`).",
                                "   - One storage write (codec complexity `O(S)`).",
                                "   - One storage-exists (`IdentityOf::contains_key`).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "clear_identity",
                            "args": [],
                            "docs": [
                                " Clear an account's identity info and all sub-accounts and return all deposits.",
                                "",
                                " Payment: All reserved balances on the account are returned.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " identity.",
                                "",
                                " Emits `IdentityCleared` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R + S + X)`",
                                "   - where `R` registrar-count (governance-bounded).",
                                "   - where `S` subs-count (hard- and deposit-bounded).",
                                "   - where `X` additional-field-count (deposit-bounded and code-bounded).",
                                " - One balance-unreserve operation.",
                                " - `2` storage reads and `S + 2` storage deletions.",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "request_judgement",
                            "args": [
                                {
                                    "name": "reg_index",
                                    "type": "Compact<RegistrarIndex>"
                                },
                                {
                                    "name": "max_fee",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Request a judgement from a registrar.",
                                "",
                                " Payment: At most `max_fee` will be reserved for payment to the registrar if judgement",
                                " given.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a",
                                " registered identity.",
                                "",
                                " - `reg_index`: The index of the registrar whose judgement is requested.",
                                " - `max_fee`: The maximum fee that may be paid. This should just be auto-populated as:",
                                "",
                                " ```nocompile",
                                " Self::registrars().get(reg_index).unwrap().fee",
                                " ```",
                                "",
                                " Emits `JudgementRequested` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R + X)`.",
                                " - One balance-reserve operation.",
                                " - Storage: 1 read `O(R)`, 1 mutate `O(X + R)`.",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel_request",
                            "args": [
                                {
                                    "name": "reg_index",
                                    "type": "RegistrarIndex"
                                }
                            ],
                            "docs": [
                                " Cancel a previous request.",
                                "",
                                " Payment: A previously reserved deposit is returned on success.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a",
                                " registered identity.",
                                "",
                                " - `reg_index`: The index of the registrar whose judgement is no longer requested.",
                                "",
                                " Emits `JudgementUnrequested` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R + X)`.",
                                " - One balance-reserve operation.",
                                " - One storage mutation `O(R + X)`.",
                                " - One event",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_fee",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<RegistrarIndex>"
                                },
                                {
                                    "name": "fee",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Set the fee required for a judgement to be requested from a registrar.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must be the account",
                                " of the registrar whose index is `index`.",
                                "",
                                " - `index`: the index of the registrar whose fee is to be set.",
                                " - `fee`: the new fee.",
                                "",
                                " # <weight>",
                                " - `O(R)`.",
                                " - One storage mutation `O(R)`.",
                                " - Benchmark: 7.315 + R * 0.329 µs (min squares analysis)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_account_id",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<RegistrarIndex>"
                                },
                                {
                                    "name": "new",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Change the account associated with a registrar.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must be the account",
                                " of the registrar whose index is `index`.",
                                "",
                                " - `index`: the index of the registrar whose fee is to be set.",
                                " - `new`: the new account ID.",
                                "",
                                " # <weight>",
                                " - `O(R)`.",
                                " - One storage mutation `O(R)`.",
                                " - Benchmark: 8.823 + R * 0.32 µs (min squares analysis)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_fields",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<RegistrarIndex>"
                                },
                                {
                                    "name": "fields",
                                    "type": "IdentityFields"
                                }
                            ],
                            "docs": [
                                " Set the field information for a registrar.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must be the account",
                                " of the registrar whose index is `index`.",
                                "",
                                " - `index`: the index of the registrar whose fee is to be set.",
                                " - `fields`: the fields that the registrar concerns themselves with.",
                                "",
                                " # <weight>",
                                " - `O(R)`.",
                                " - One storage mutation `O(R)`.",
                                " - Benchmark: 7.464 + R * 0.325 µs (min squares analysis)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "provide_judgement",
                            "args": [
                                {
                                    "name": "reg_index",
                                    "type": "Compact<RegistrarIndex>"
                                },
                                {
                                    "name": "target",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "judgement",
                                    "type": "Judgement"
                                }
                            ],
                            "docs": [
                                " Provide a judgement for an account's identity.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must be the account",
                                " of the registrar whose index is `reg_index`.",
                                "",
                                " - `reg_index`: the index of the registrar whose judgement is being made.",
                                " - `target`: the account whose identity the judgement is upon. This must be an account",
                                "   with a registered identity.",
                                " - `judgement`: the judgement of the registrar of index `reg_index` about `target`.",
                                "",
                                " Emits `JudgementGiven` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R + X)`.",
                                " - One balance-transfer operation.",
                                " - Up to one account-lookup operation.",
                                " - Storage: 1 read `O(R)`, 1 mutate `O(R + X)`.",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "kill_identity",
                            "args": [
                                {
                                    "name": "target",
                                    "type": "LookupSource"
                                }
                            ],
                            "docs": [
                                " Remove an account's identity and sub-account information and slash the deposits.",
                                "",
                                " Payment: Reserved balances from `set_subs` and `set_identity` are slashed and handled by",
                                " `Slash`. Verification request deposits are not returned; they should be cancelled",
                                " manually using `cancel_request`.",
                                "",
                                " The dispatch origin for this call must match `T::ForceOrigin`.",
                                "",
                                " - `target`: the account whose identity the judgement is upon. This must be an account",
                                "   with a registered identity.",
                                "",
                                " Emits `IdentityKilled` if successful.",
                                "",
                                " # <weight>",
                                " - `O(R + S + X)`.",
                                " - One balance-reserve operation.",
                                " - `S + 2` storage mutations.",
                                " - One event.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "add_sub",
                            "args": [
                                {
                                    "name": "sub",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "data",
                                    "type": "Data"
                                }
                            ],
                            "docs": [
                                " Add the given account to the sender's subs.",
                                "",
                                " Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated",
                                " to the sender.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " sub identity of `sub`."
                            ]
                        },
                        {
                            "name": "rename_sub",
                            "args": [
                                {
                                    "name": "sub",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "data",
                                    "type": "Data"
                                }
                            ],
                            "docs": [
                                " Alter the associated name of the given sub-account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " sub identity of `sub`."
                            ]
                        },
                        {
                            "name": "remove_sub",
                            "args": [
                                {
                                    "name": "sub",
                                    "type": "LookupSource"
                                }
                            ],
                            "docs": [
                                " Remove the given account from the sender's subs.",
                                "",
                                " Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated",
                                " to the sender.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " sub identity of `sub`."
                            ]
                        },
                        {
                            "name": "quit_sub",
                            "args": [],
                            "docs": [
                                " Remove the sender as a sub-account.",
                                "",
                                " Payment: Balance reserved by a previous `set_subs` call for one sub will be repatriated",
                                " to the sender (*not* the original depositor).",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have a registered",
                                " super-identity.",
                                "",
                                " NOTE: This should not normally be used, but is provided in the case that the non-",
                                " controller of an account is maliciously registered as a sub-account."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "IdentitySet",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " A name was set or reset (which will remove all judgements). \\[who\\]"
                            ]
                        },
                        {
                            "name": "IdentityCleared",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " A name was cleared, and the given balance returned. \\[who, deposit\\]"
                            ]
                        },
                        {
                            "name": "IdentityKilled",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " A name was removed and the given balance slashed. \\[who, deposit\\]"
                            ]
                        },
                        {
                            "name": "JudgementRequested",
                            "args": [
                                "AccountId",
                                "RegistrarIndex"
                            ],
                            "docs": [
                                " A judgement was asked from a registrar. \\[who, registrar_index\\]"
                            ]
                        },
                        {
                            "name": "JudgementUnrequested",
                            "args": [
                                "AccountId",
                                "RegistrarIndex"
                            ],
                            "docs": [
                                " A judgement request was retracted. \\[who, registrar_index\\]"
                            ]
                        },
                        {
                            "name": "JudgementGiven",
                            "args": [
                                "AccountId",
                                "RegistrarIndex"
                            ],
                            "docs": [
                                " A judgement was given by a registrar. \\[target, registrar_index\\]"
                            ]
                        },
                        {
                            "name": "RegistrarAdded",
                            "args": [
                                "RegistrarIndex"
                            ],
                            "docs": [
                                " A registrar was added. \\[registrar_index\\]"
                            ]
                        },
                        {
                            "name": "SubIdentityAdded",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " A sub-identity was added to an identity and the deposit paid. \\[sub, main, deposit\\]"
                            ]
                        },
                        {
                            "name": "SubIdentityRemoved",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " A sub-identity was removed from an identity and the deposit freed.",
                                " \\[sub, main, deposit\\]"
                            ]
                        },
                        {
                            "name": "SubIdentityRevoked",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " A sub-identity was cleared, and the given deposit repatriated from the",
                                " main identity account to the sub-identity account. \\[sub, main, deposit\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "BasicDeposit",
                            "type": "BalanceOf",
                            "value": "0x00a0724e180900000000000000000000",
                            "docs": [
                                " The amount held on deposit for a registered identity"
                            ]
                        },
                        {
                            "name": "FieldDeposit",
                            "type": "BalanceOf",
                            "value": "0x00a89c13460200000000000000000000",
                            "docs": [
                                " The amount held on deposit per additional field for a registered identity."
                            ]
                        },
                        {
                            "name": "SubAccountDeposit",
                            "type": "BalanceOf",
                            "value": "0x00204aa9d10100000000000000000000",
                            "docs": [
                                " The amount held on deposit for a registered subaccount. This should account for the fact",
                                " that one storage item's value will increase by the size of an account ID, and there will be",
                                " another trie item whose value is the size of an account ID plus 32 bytes."
                            ]
                        },
                        {
                            "name": "MaxSubAccounts",
                            "type": "u32",
                            "value": "0x64000000",
                            "docs": [
                                " The maximum number of sub-accounts allowed per identified account."
                            ]
                        },
                        {
                            "name": "MaxAdditionalFields",
                            "type": "u32",
                            "value": "0x64000000",
                            "docs": [
                                " Maximum number of additional fields that may be stored in an ID. Needed to bound the I/O",
                                " required to access an identity, but can be pretty high."
                            ]
                        },
                        {
                            "name": "MaxRegistrars",
                            "type": "u32",
                            "value": "0x14000000",
                            "docs": [
                                " Maxmimum number of registrars allowed in the system. Needed to bound the complexity",
                                " of, e.g., updating judgements."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "TooManySubAccounts",
                            "docs": [
                                " Too many subs-accounts."
                            ]
                        },
                        {
                            "name": "NotFound",
                            "docs": [
                                " Account isn't found."
                            ]
                        },
                        {
                            "name": "NotNamed",
                            "docs": [
                                " Account isn't named."
                            ]
                        },
                        {
                            "name": "EmptyIndex",
                            "docs": [
                                " Empty index."
                            ]
                        },
                        {
                            "name": "FeeChanged",
                            "docs": [
                                " Fee is changed."
                            ]
                        },
                        {
                            "name": "NoIdentity",
                            "docs": [
                                " No identity found."
                            ]
                        },
                        {
                            "name": "StickyJudgement",
                            "docs": [
                                " Sticky judgement."
                            ]
                        },
                        {
                            "name": "JudgementGiven",
                            "docs": [
                                " Judgement given."
                            ]
                        },
                        {
                            "name": "InvalidJudgement",
                            "docs": [
                                " Invalid judgement."
                            ]
                        },
                        {
                            "name": "InvalidIndex",
                            "docs": [
                                " The index is invalid."
                            ]
                        },
                        {
                            "name": "InvalidTarget",
                            "docs": [
                                " The target is invalid."
                            ]
                        },
                        {
                            "name": "TooManyFields",
                            "docs": [
                                " Too many additional fields."
                            ]
                        },
                        {
                            "name": "TooManyRegistrars",
                            "docs": [
                                " Maximum amount of registrars reached. Cannot add any more."
                            ]
                        },
                        {
                            "name": "AlreadyClaimed",
                            "docs": [
                                " Account ID is already named."
                            ]
                        },
                        {
                            "name": "NotSub",
                            "docs": [
                                " Sender is not a sub-account."
                            ]
                        },
                        {
                            "name": "NotOwned",
                            "docs": [
                                " Sub-account isn't owned by sender."
                            ]
                        }
                    ],
                    "index": "17"
                },
                {
                    "name": "Recovery",
                    "storage": {
                        "prefix": "Recovery",
                        "items": [
                            {
                                "name": "Recoverable",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "RecoveryConfig",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The set of recoverable accounts and their recovery configuration."
                                ]
                            },
                            {
                                "name": "ActiveRecoveries",
                                "modifier": "Optional",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "AccountId",
                                        "key2": "AccountId",
                                        "value": "ActiveRecovery",
                                        "key2Hasher": "Twox64Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Active recovery attempts.",
                                    "",
                                    " First account is the account to be recovered, and the second account",
                                    " is the user trying to recover the account."
                                ]
                            },
                            {
                                "name": "Proxy",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "AccountId",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The list of allowed proxy accounts.",
                                    "",
                                    " Map from the user who can access it to the recovered account."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "as_recovered",
                            "args": [
                                {
                                    "name": "account",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Send a call through a recovered account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and registered to",
                                " be able to make calls on behalf of the recovered account.",
                                "",
                                " Parameters:",
                                " - `account`: The recovered account you want to make a call on-behalf-of.",
                                " - `call`: The call you want to make with the recovered account.",
                                "",
                                " # <weight>",
                                " - The weight of the `call` + 10,000.",
                                " - One storage lookup to check account is recovered by `who`. O(1)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_recovered",
                            "args": [
                                {
                                    "name": "lost",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "rescuer",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Allow ROOT to bypass the recovery process and set an a rescuer account",
                                " for a lost account directly.",
                                "",
                                " The dispatch origin for this call must be _ROOT_.",
                                "",
                                " Parameters:",
                                " - `lost`: The \"lost account\" to be recovered.",
                                " - `rescuer`: The \"rescuer account\" which can call as the lost account.",
                                "",
                                " # <weight>",
                                " - One storage write O(1)",
                                " - One event",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "create_recovery",
                            "args": [
                                {
                                    "name": "friends",
                                    "type": "Vec<AccountId>"
                                },
                                {
                                    "name": "threshold",
                                    "type": "u16"
                                },
                                {
                                    "name": "delay_period",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Create a recovery configuration for your account. This makes your account recoverable.",
                                "",
                                " Payment: `ConfigDepositBase` + `FriendDepositFactor` * #_of_friends balance",
                                " will be reserved for storing the recovery configuration. This deposit is returned",
                                " in full when the user calls `remove_recovery`.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `friends`: A list of friends you trust to vouch for recovery attempts.",
                                "   Should be ordered and contain no duplicate values.",
                                " - `threshold`: The number of friends that must vouch for a recovery attempt",
                                "   before the account can be recovered. Should be less than or equal to",
                                "   the length of the list of friends.",
                                " - `delay_period`: The number of blocks after a recovery attempt is initialized",
                                "   that needs to pass before the account can be recovered.",
                                "",
                                " # <weight>",
                                " - Key: F (len of friends)",
                                " - One storage read to check that account is not already recoverable. O(1).",
                                " - A check that the friends list is sorted and unique. O(F)",
                                " - One currency reserve operation. O(X)",
                                " - One storage write. O(1). Codec O(F).",
                                " - One event.",
                                "",
                                " Total Complexity: O(F + X)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "initiate_recovery",
                            "args": [
                                {
                                    "name": "account",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Initiate the process for recovering a recoverable account.",
                                "",
                                " Payment: `RecoveryDeposit` balance will be reserved for initiating the",
                                " recovery process. This deposit will always be repatriated to the account",
                                " trying to be recovered. See `close_recovery`.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `account`: The lost account that you want to recover. This account",
                                "   needs to be recoverable (i.e. have a recovery configuration).",
                                "",
                                " # <weight>",
                                " - One storage read to check that account is recoverable. O(F)",
                                " - One storage read to check that this recovery process hasn't already started. O(1)",
                                " - One currency reserve operation. O(X)",
                                " - One storage read to get the current block number. O(1)",
                                " - One storage write. O(1).",
                                " - One event.",
                                "",
                                " Total Complexity: O(F + X)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "vouch_recovery",
                            "args": [
                                {
                                    "name": "lost",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "rescuer",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Allow a \"friend\" of a recoverable account to vouch for an active recovery",
                                " process for that account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and must be a \"friend\"",
                                " for the recoverable account.",
                                "",
                                " Parameters:",
                                " - `lost`: The lost account that you want to recover.",
                                " - `rescuer`: The account trying to rescue the lost account that you",
                                "   want to vouch for.",
                                "",
                                " The combination of these two parameters must point to an active recovery",
                                " process.",
                                "",
                                " # <weight>",
                                " Key: F (len of friends in config), V (len of vouching friends)",
                                " - One storage read to get the recovery configuration. O(1), Codec O(F)",
                                " - One storage read to get the active recovery process. O(1), Codec O(V)",
                                " - One binary search to confirm caller is a friend. O(logF)",
                                " - One binary search to confirm caller has not already vouched. O(logV)",
                                " - One storage write. O(1), Codec O(V).",
                                " - One event.",
                                "",
                                " Total Complexity: O(F + logF + V + logV)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "claim_recovery",
                            "args": [
                                {
                                    "name": "account",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Allow a successful rescuer to claim their recovered account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and must be a \"rescuer\"",
                                " who has successfully completed the account recovery process: collected",
                                " `threshold` or more vouches, waited `delay_period` blocks since initiation.",
                                "",
                                " Parameters:",
                                " - `account`: The lost account that you want to claim has been successfully",
                                "   recovered by you.",
                                "",
                                " # <weight>",
                                " Key: F (len of friends in config), V (len of vouching friends)",
                                " - One storage read to get the recovery configuration. O(1), Codec O(F)",
                                " - One storage read to get the active recovery process. O(1), Codec O(V)",
                                " - One storage read to get the current block number. O(1)",
                                " - One storage write. O(1), Codec O(V).",
                                " - One event.",
                                "",
                                " Total Complexity: O(F + V)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "close_recovery",
                            "args": [
                                {
                                    "name": "rescuer",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " As the controller of a recoverable account, close an active recovery",
                                " process for your account.",
                                "",
                                " Payment: By calling this function, the recoverable account will receive",
                                " the recovery deposit `RecoveryDeposit` placed by the rescuer.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and must be a",
                                " recoverable account with an active recovery process for it.",
                                "",
                                " Parameters:",
                                " - `rescuer`: The account trying to rescue this recoverable account.",
                                "",
                                " # <weight>",
                                " Key: V (len of vouching friends)",
                                " - One storage read/remove to get the active recovery process. O(1), Codec O(V)",
                                " - One balance call to repatriate reserved. O(X)",
                                " - One event.",
                                "",
                                " Total Complexity: O(V + X)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "remove_recovery",
                            "args": [],
                            "docs": [
                                " Remove the recovery process for your account. Recovered accounts are still accessible.",
                                "",
                                " NOTE: The user must make sure to call `close_recovery` on all active",
                                " recovery attempts before calling this function else it will fail.",
                                "",
                                " Payment: By calling this function the recoverable account will unreserve",
                                " their recovery configuration deposit.",
                                " (`ConfigDepositBase` + `FriendDepositFactor` * #_of_friends)",
                                "",
                                " The dispatch origin for this call must be _Signed_ and must be a",
                                " recoverable account (i.e. has a recovery configuration).",
                                "",
                                " # <weight>",
                                " Key: F (len of friends)",
                                " - One storage read to get the prefix iterator for active recoveries. O(1)",
                                " - One storage read/remove to get the recovery configuration. O(1), Codec O(F)",
                                " - One balance call to unreserved. O(X)",
                                " - One event.",
                                "",
                                " Total Complexity: O(F + X)",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel_recovered",
                            "args": [
                                {
                                    "name": "account",
                                    "type": "AccountId"
                                }
                            ],
                            "docs": [
                                " Cancel the ability to use `as_recovered` for `account`.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and registered to",
                                " be able to make calls on behalf of the recovered account.",
                                "",
                                " Parameters:",
                                " - `account`: The recovered account you are able to call on-behalf-of.",
                                "",
                                " # <weight>",
                                " - One storage mutation to check account is recovered by `who`. O(1)",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "RecoveryCreated",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " A recovery process has been set up for an \\[account\\]."
                            ]
                        },
                        {
                            "name": "RecoveryInitiated",
                            "args": [
                                "AccountId",
                                "AccountId"
                            ],
                            "docs": [
                                " A recovery process has been initiated for lost account by rescuer account.",
                                " \\[lost, rescuer\\]"
                            ]
                        },
                        {
                            "name": "RecoveryVouched",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "AccountId"
                            ],
                            "docs": [
                                " A recovery process for lost account by rescuer account has been vouched for by sender.",
                                " \\[lost, rescuer, sender\\]"
                            ]
                        },
                        {
                            "name": "RecoveryClosed",
                            "args": [
                                "AccountId",
                                "AccountId"
                            ],
                            "docs": [
                                " A recovery process for lost account by rescuer account has been closed.",
                                " \\[lost, rescuer\\]"
                            ]
                        },
                        {
                            "name": "AccountRecovered",
                            "args": [
                                "AccountId",
                                "AccountId"
                            ],
                            "docs": [
                                " Lost account has been successfully recovered by rescuer account.",
                                " \\[lost, rescuer\\]"
                            ]
                        },
                        {
                            "name": "RecoveryRemoved",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " A recovery process has been removed for an \\[account\\]."
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "ConfigDepositBase",
                            "type": "BalanceOf",
                            "value": "0x005039278c0400000000000000000000",
                            "docs": [
                                " The base amount of currency needed to reserve for creating a recovery configuration.",
                                "",
                                " This is held for an additional storage item whose value size is",
                                " `2 + sizeof(BlockNumber, Balance)` bytes."
                            ]
                        },
                        {
                            "name": "FriendDepositFactor",
                            "type": "BalanceOf",
                            "value": "0x0088526a740000000000000000000000",
                            "docs": [
                                " The amount of currency needed per additional user when creating a recovery configuration.",
                                "",
                                " This is held for adding `sizeof(AccountId)` bytes more into a pre-existing storage value."
                            ]
                        },
                        {
                            "name": "MaxFriends",
                            "type": "u16",
                            "value": "0x0900",
                            "docs": [
                                " The maximum amount of friends allowed in a recovery configuration."
                            ]
                        },
                        {
                            "name": "RecoveryDeposit",
                            "type": "BalanceOf",
                            "value": "0x005039278c0400000000000000000000",
                            "docs": [
                                " The base amount of currency needed to reserve for starting a recovery.",
                                "",
                                " This is primarily held for deterring malicious recovery attempts, and should",
                                " have a value large enough that a bad actor would choose not to place this",
                                " deposit. It also acts to fund additional storage item whose value size is",
                                " `sizeof(BlockNumber, Balance + T * AccountId)` bytes. Where T is a configurable",
                                " threshold."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "NotAllowed",
                            "docs": [
                                " User is not allowed to make a call on behalf of this account"
                            ]
                        },
                        {
                            "name": "ZeroThreshold",
                            "docs": [
                                " Threshold must be greater than zero"
                            ]
                        },
                        {
                            "name": "NotEnoughFriends",
                            "docs": [
                                " Friends list must be greater than zero and threshold"
                            ]
                        },
                        {
                            "name": "MaxFriends",
                            "docs": [
                                " Friends list must be less than max friends"
                            ]
                        },
                        {
                            "name": "NotSorted",
                            "docs": [
                                " Friends list must be sorted and free of duplicates"
                            ]
                        },
                        {
                            "name": "NotRecoverable",
                            "docs": [
                                " This account is not set up for recovery"
                            ]
                        },
                        {
                            "name": "AlreadyRecoverable",
                            "docs": [
                                " This account is already set up for recovery"
                            ]
                        },
                        {
                            "name": "AlreadyStarted",
                            "docs": [
                                " A recovery process has already started for this account"
                            ]
                        },
                        {
                            "name": "NotStarted",
                            "docs": [
                                " A recovery process has not started for this rescuer"
                            ]
                        },
                        {
                            "name": "NotFriend",
                            "docs": [
                                " This account is not a friend who can vouch"
                            ]
                        },
                        {
                            "name": "DelayPeriod",
                            "docs": [
                                " The friend must wait until the delay period to vouch for this recovery"
                            ]
                        },
                        {
                            "name": "AlreadyVouched",
                            "docs": [
                                " This user has already vouched for this recovery"
                            ]
                        },
                        {
                            "name": "Threshold",
                            "docs": [
                                " The threshold for recovering this account has not been met"
                            ]
                        },
                        {
                            "name": "StillActive",
                            "docs": [
                                " There are still active recovery attempts that need to be closed"
                            ]
                        },
                        {
                            "name": "AlreadyProxy",
                            "docs": [
                                " This account is already set up for recovery"
                            ]
                        },
                        {
                            "name": "BadState",
                            "docs": [
                                " Some internal state is broken."
                            ]
                        }
                    ],
                    "index": "18"
                },
                {
                    "name": "Vesting",
                    "storage": {
                        "prefix": "Vesting",
                        "items": [
                            {
                                "name": "Vesting",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Blake2_128Concat",
                                        "key": "AccountId",
                                        "value": "VestingInfo",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Information regarding the vesting of a given account."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "vest",
                            "args": [],
                            "docs": [
                                " Unlock any vested funds of the sender account.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and the sender must have funds still",
                                " locked under this pallet.",
                                "",
                                " Emits either `VestingCompleted` or `VestingUpdated`.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - DbWeight: 2 Reads, 2 Writes",
                                "     - Reads: Vesting Storage, Balances Locks, [Sender Account]",
                                "     - Writes: Vesting Storage, Balances Locks, [Sender Account]",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "vest_other",
                            "args": [
                                {
                                    "name": "target",
                                    "type": "LookupSource"
                                }
                            ],
                            "docs": [
                                " Unlock any vested funds of a `target` account.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `target`: The account whose vested funds should be unlocked. Must have funds still",
                                " locked under this pallet.",
                                "",
                                " Emits either `VestingCompleted` or `VestingUpdated`.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - DbWeight: 3 Reads, 3 Writes",
                                "     - Reads: Vesting Storage, Balances Locks, Target Account",
                                "     - Writes: Vesting Storage, Balances Locks, Target Account",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "vested_transfer",
                            "args": [
                                {
                                    "name": "target",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "schedule",
                                    "type": "VestingInfo"
                                }
                            ],
                            "docs": [
                                " Create a vested transfer.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `target`: The account that should be transferred the vested funds.",
                                " - `amount`: The amount of funds to transfer and will be vested.",
                                " - `schedule`: The vesting schedule attached to the transfer.",
                                "",
                                " Emits `VestingCreated`.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - DbWeight: 3 Reads, 3 Writes",
                                "     - Reads: Vesting Storage, Balances Locks, Target Account, [Sender Account]",
                                "     - Writes: Vesting Storage, Balances Locks, Target Account, [Sender Account]",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "force_vested_transfer",
                            "args": [
                                {
                                    "name": "source",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "target",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "schedule",
                                    "type": "VestingInfo"
                                }
                            ],
                            "docs": [
                                " Force a vested transfer.",
                                "",
                                " The dispatch origin for this call must be _Root_.",
                                "",
                                " - `source`: The account whose funds should be transferred.",
                                " - `target`: The account that should be transferred the vested funds.",
                                " - `amount`: The amount of funds to transfer and will be vested.",
                                " - `schedule`: The vesting schedule attached to the transfer.",
                                "",
                                " Emits `VestingCreated`.",
                                "",
                                " # <weight>",
                                " - `O(1)`.",
                                " - DbWeight: 4 Reads, 4 Writes",
                                "     - Reads: Vesting Storage, Balances Locks, Target Account, Source Account",
                                "     - Writes: Vesting Storage, Balances Locks, Target Account, Source Account",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "VestingUpdated",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " The amount vested has been updated. This could indicate more funds are available. The",
                                " balance given is the amount which is left unvested (and thus locked).",
                                " \\[account, unvested\\]"
                            ]
                        },
                        {
                            "name": "VestingCompleted",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " An \\[account\\] has become fully vested. No further vesting can happen."
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "MinVestedTransfer",
                            "type": "BalanceOf",
                            "value": "0x0010a5d4e80000000000000000000000",
                            "docs": [
                                " The minimum amount transferred to call `vested_transfer`."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "NotVesting",
                            "docs": [
                                " The account given is not vesting."
                            ]
                        },
                        {
                            "name": "ExistingVestingSchedule",
                            "docs": [
                                " An existing vesting schedule already exists for this account that cannot be clobbered."
                            ]
                        },
                        {
                            "name": "AmountLow",
                            "docs": [
                                " Amount being transferred is too low to create a vesting schedule."
                            ]
                        }
                    ],
                    "index": "19"
                },
                {
                    "name": "Scheduler",
                    "storage": {
                        "prefix": "Scheduler",
                        "items": [
                            {
                                "name": "Agenda",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "BlockNumber",
                                        "value": "Vec<Option<Scheduled>>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Items to be executed, indexed by the block number that they should be executed on."
                                ]
                            },
                            {
                                "name": "Lookup",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "Bytes",
                                        "value": "TaskAddress",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Lookup from identity to the block number and index of the task."
                                ]
                            },
                            {
                                "name": "StorageVersion",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Releases"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Storage version of the pallet.",
                                    "",
                                    " New networks start with last version."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "schedule",
                            "args": [
                                {
                                    "name": "when",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "maybe_periodic",
                                    "type": "Option<Period>"
                                },
                                {
                                    "name": "priority",
                                    "type": "Priority"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Anonymously schedule a task.",
                                "",
                                " # <weight>",
                                " - S = Number of already scheduled calls",
                                " - Base Weight: 22.29 + .126 * S µs",
                                " - DB Weight:",
                                "     - Read: Agenda",
                                "     - Write: Agenda",
                                " - Will use base weight of 25 which should be good for up to 30 scheduled calls",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel",
                            "args": [
                                {
                                    "name": "when",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "index",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Cancel an anonymously scheduled task.",
                                "",
                                " # <weight>",
                                " - S = Number of already scheduled calls",
                                " - Base Weight: 22.15 + 2.869 * S µs",
                                " - DB Weight:",
                                "     - Read: Agenda",
                                "     - Write: Agenda, Lookup",
                                " - Will use base weight of 100 which should be good for up to 30 scheduled calls",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "schedule_named",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "Bytes"
                                },
                                {
                                    "name": "when",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "maybe_periodic",
                                    "type": "Option<Period>"
                                },
                                {
                                    "name": "priority",
                                    "type": "Priority"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Schedule a named task.",
                                "",
                                " # <weight>",
                                " - S = Number of already scheduled calls",
                                " - Base Weight: 29.6 + .159 * S µs",
                                " - DB Weight:",
                                "     - Read: Agenda, Lookup",
                                "     - Write: Agenda, Lookup",
                                " - Will use base weight of 35 which should be good for more than 30 scheduled calls",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel_named",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Cancel a named scheduled task.",
                                "",
                                " # <weight>",
                                " - S = Number of already scheduled calls",
                                " - Base Weight: 24.91 + 2.907 * S µs",
                                " - DB Weight:",
                                "     - Read: Agenda, Lookup",
                                "     - Write: Agenda, Lookup",
                                " - Will use base weight of 100 which should be good for up to 30 scheduled calls",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "schedule_after",
                            "args": [
                                {
                                    "name": "after",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "maybe_periodic",
                                    "type": "Option<Period>"
                                },
                                {
                                    "name": "priority",
                                    "type": "Priority"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Anonymously schedule a task after a delay.",
                                "",
                                " # <weight>",
                                " Same as [`schedule`].",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "schedule_named_after",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "Bytes"
                                },
                                {
                                    "name": "after",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "maybe_periodic",
                                    "type": "Option<Period>"
                                },
                                {
                                    "name": "priority",
                                    "type": "Priority"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Schedule a named task after a delay.",
                                "",
                                " # <weight>",
                                " Same as [`schedule_named`](Self::schedule_named).",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Scheduled",
                            "args": [
                                "BlockNumber",
                                "u32"
                            ],
                            "docs": [
                                " Scheduled some task. \\[when, index\\]"
                            ]
                        },
                        {
                            "name": "Canceled",
                            "args": [
                                "BlockNumber",
                                "u32"
                            ],
                            "docs": [
                                " Canceled some task. \\[when, index\\]"
                            ]
                        },
                        {
                            "name": "Dispatched",
                            "args": [
                                "TaskAddress",
                                "Option<Bytes>",
                                "DispatchResult"
                            ],
                            "docs": [
                                " Dispatched some task. \\[task, id, result\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "MaximumWeight",
                            "type": "Weight",
                            "value": "0x00806e8774010000",
                            "docs": [
                                " The maximum weight that may be scheduled per block for any dispatchables of less priority",
                                " than `schedule::HARD_DEADLINE`."
                            ]
                        },
                        {
                            "name": "MaxScheduledPerBlock",
                            "type": "u32",
                            "value": "0x32000000",
                            "docs": [
                                " The maximum number of scheduled calls in the queue for a single block.",
                                " Not strictly enforced, but used for weight estimation."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "FailedToSchedule",
                            "docs": [
                                " Failed to schedule a call"
                            ]
                        },
                        {
                            "name": "NotFound",
                            "docs": [
                                " Cannot find the scheduled call."
                            ]
                        },
                        {
                            "name": "TargetBlockNumberInPast",
                            "docs": [
                                " Given target block number is in the past."
                            ]
                        },
                        {
                            "name": "RescheduleNoChange",
                            "docs": [
                                " Reschedule failed because it does not change scheduled time."
                            ]
                        }
                    ],
                    "index": "20"
                },
                {
                    "name": "Sudo",
                    "storage": {
                        "prefix": "Sudo",
                        "items": [
                            {
                                "name": "Key",
                                "modifier": "Default",
                                "type": {
                                    "plain": "AccountId"
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " The `AccountId` of the sudo key."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "sudo",
                            "args": [
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Authenticates the sudo key and dispatches a function call with `Root` origin.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " # <weight>",
                                " - O(1).",
                                " - Limited storage reads.",
                                " - One DB write (event).",
                                " - Weight of derivative `call` execution + 10,000.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "sudo_unchecked_weight",
                            "args": [
                                {
                                    "name": "call",
                                    "type": "Call"
                                },
                                {
                                    "name": "_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Authenticates the sudo key and dispatches a function call with `Root` origin.",
                                " This function does not check the weight of the call, and instead allows the",
                                " Sudo user to specify the weight of the call.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " # <weight>",
                                " - O(1).",
                                " - The weight of this call is defined by the caller.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "set_key",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "LookupSource"
                                }
                            ],
                            "docs": [
                                " Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo key.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " # <weight>",
                                " - O(1).",
                                " - Limited storage reads.",
                                " - One DB change.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "sudo_as",
                            "args": [
                                {
                                    "name": "who",
                                    "type": "LookupSource"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Authenticates the sudo key and dispatches a function call with `Signed` origin from",
                                " a given account.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " # <weight>",
                                " - O(1).",
                                " - Limited storage reads.",
                                " - One DB write (event).",
                                " - Weight of derivative `call` execution + 10,000.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Sudid",
                            "args": [
                                "DispatchResult"
                            ],
                            "docs": [
                                " A sudo just took place. \\[result\\]"
                            ]
                        },
                        {
                            "name": "KeyChanged",
                            "args": [
                                "AccountId"
                            ],
                            "docs": [
                                " The \\[sudoer\\] just switched identity; the old key is supplied."
                            ]
                        },
                        {
                            "name": "SudoAsDone",
                            "args": [
                                "DispatchResult"
                            ],
                            "docs": [
                                " A sudo just took place. \\[result\\]"
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "RequireSudo",
                            "docs": [
                                " Sender must be the Sudo account"
                            ]
                        }
                    ],
                    "index": "21"
                },
                {
                    "name": "Proxy",
                    "storage": {
                        "prefix": "Proxy",
                        "items": [
                            {
                                "name": "Proxies",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "(Vec<ProxyDefinition>,BalanceOf)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000",
                                "docs": [
                                    " The set of account proxies. Maps the account which has delegated to the accounts",
                                    " which are being delegated to, together with the amount held on deposit."
                                ]
                            },
                            {
                                "name": "Announcements",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "AccountId",
                                        "value": "(Vec<Announcement>,BalanceOf)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000",
                                "docs": [
                                    " The announcements made by the proxy (key)."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "proxy",
                            "args": [
                                {
                                    "name": "real",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "force_proxy_type",
                                    "type": "Option<ProxyType>"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Dispatch the given `call` from an account that the sender is authorised for through",
                                " `add_proxy`.",
                                "",
                                " Removes any corresponding announcement(s).",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `real`: The account that the proxy will make a call on behalf of.",
                                " - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.",
                                " - `call`: The call to be made by the `real` account.",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "add_proxy",
                            "args": [
                                {
                                    "name": "delegate",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "proxy_type",
                                    "type": "ProxyType"
                                },
                                {
                                    "name": "delay",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Register a proxy account for the sender that is able to make calls on its behalf.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `proxy`: The account that the `caller` would like to make a proxy.",
                                " - `proxy_type`: The permissions allowed for this proxy account.",
                                " - `delay`: The announcement period required of the initial proxy. Will generally be",
                                " zero.",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "remove_proxy",
                            "args": [
                                {
                                    "name": "delegate",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "proxy_type",
                                    "type": "ProxyType"
                                },
                                {
                                    "name": "delay",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Unregister a proxy account for the sender.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `proxy`: The account that the `caller` would like to remove as a proxy.",
                                " - `proxy_type`: The permissions currently enabled for the removed proxy account.",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "remove_proxies",
                            "args": [],
                            "docs": [
                                " Unregister all proxy accounts for the sender.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " WARNING: This may be called on accounts created by `anonymous`, however if done, then",
                                " the unreserved fees will be inaccessible. **All access to this account will be lost.**",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "anonymous",
                            "args": [
                                {
                                    "name": "proxy_type",
                                    "type": "ProxyType"
                                },
                                {
                                    "name": "delay",
                                    "type": "BlockNumber"
                                },
                                {
                                    "name": "index",
                                    "type": "u16"
                                }
                            ],
                            "docs": [
                                " Spawn a fresh new account that is guaranteed to be otherwise inaccessible, and",
                                " initialize it with a proxy of `proxy_type` for `origin` sender.",
                                "",
                                " Requires a `Signed` origin.",
                                "",
                                " - `proxy_type`: The type of the proxy that the sender will be registered as over the",
                                " new account. This will almost always be the most permissive `ProxyType` possible to",
                                " allow for maximum flexibility.",
                                " - `index`: A disambiguation index, in case this is called multiple times in the same",
                                " transaction (e.g. with `utility::batch`). Unless you're using `batch` you probably just",
                                " want to use `0`.",
                                " - `delay`: The announcement period required of the initial proxy. Will generally be",
                                " zero.",
                                "",
                                " Fails with `Duplicate` if this has already been called in this transaction, from the",
                                " same sender, with the same parameters.",
                                "",
                                " Fails if there are insufficient funds to pay for deposit.",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>",
                                " TODO: Might be over counting 1 read"
                            ]
                        },
                        {
                            "name": "kill_anonymous",
                            "args": [
                                {
                                    "name": "spawner",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "proxy_type",
                                    "type": "ProxyType"
                                },
                                {
                                    "name": "index",
                                    "type": "u16"
                                },
                                {
                                    "name": "height",
                                    "type": "Compact<BlockNumber>"
                                },
                                {
                                    "name": "ext_index",
                                    "type": "Compact<u32>"
                                }
                            ],
                            "docs": [
                                " Removes a previously spawned anonymous proxy.",
                                "",
                                " WARNING: **All access to this account will be lost.** Any funds held in it will be",
                                " inaccessible.",
                                "",
                                " Requires a `Signed` origin, and the sender account must have been created by a call to",
                                " `anonymous` with corresponding parameters.",
                                "",
                                " - `spawner`: The account that originally called `anonymous` to create this account.",
                                " - `index`: The disambiguation index originally passed to `anonymous`. Probably `0`.",
                                " - `proxy_type`: The proxy type originally passed to `anonymous`.",
                                " - `height`: The height of the chain when the call to `anonymous` was processed.",
                                " - `ext_index`: The extrinsic index in which the call to `anonymous` was processed.",
                                "",
                                " Fails with `NoPermission` in case the caller is not a previously created anonymous",
                                " account whose `anonymous` call has corresponding parameters.",
                                "",
                                " # <weight>",
                                " Weight is a function of the number of proxies the user has (P).",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "announce",
                            "args": [
                                {
                                    "name": "real",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "call_hash",
                                    "type": "CallHashOf"
                                }
                            ],
                            "docs": [
                                " Publish the hash of a proxy-call that will be made in the future.",
                                "",
                                " This must be called some number of blocks before the corresponding `proxy` is attempted",
                                " if the delay associated with the proxy relationship is greater than zero.",
                                "",
                                " No more than `MaxPending` announcements may be made at any one time.",
                                "",
                                " This will take a deposit of `AnnouncementDepositFactor` as well as",
                                " `AnnouncementDepositBase` if there are no other pending announcements.",
                                "",
                                " The dispatch origin for this call must be _Signed_ and a proxy of `real`.",
                                "",
                                " Parameters:",
                                " - `real`: The account that the proxy will make a call on behalf of.",
                                " - `call_hash`: The hash of the call to be made by the `real` account.",
                                "",
                                " # <weight>",
                                " Weight is a function of:",
                                " - A: the number of announcements made.",
                                " - P: the number of proxies the user has.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "remove_announcement",
                            "args": [
                                {
                                    "name": "real",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "call_hash",
                                    "type": "CallHashOf"
                                }
                            ],
                            "docs": [
                                " Remove a given announcement.",
                                "",
                                " May be called by a proxy account to remove a call they previously announced and return",
                                " the deposit.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `real`: The account that the proxy will make a call on behalf of.",
                                " - `call_hash`: The hash of the call to be made by the `real` account.",
                                "",
                                " # <weight>",
                                " Weight is a function of:",
                                " - A: the number of announcements made.",
                                " - P: the number of proxies the user has.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "reject_announcement",
                            "args": [
                                {
                                    "name": "delegate",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "call_hash",
                                    "type": "CallHashOf"
                                }
                            ],
                            "docs": [
                                " Remove the given announcement of a delegate.",
                                "",
                                " May be called by a target (proxied) account to remove a call that one of their delegates",
                                " (`delegate`) has announced they want to execute. The deposit is returned.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `delegate`: The account that previously announced the call.",
                                " - `call_hash`: The hash of the call to be made.",
                                "",
                                " # <weight>",
                                " Weight is a function of:",
                                " - A: the number of announcements made.",
                                " - P: the number of proxies the user has.",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "proxy_announced",
                            "args": [
                                {
                                    "name": "delegate",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "real",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "force_proxy_type",
                                    "type": "Option<ProxyType>"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Dispatch the given `call` from an account that the sender is authorized for through",
                                " `add_proxy`.",
                                "",
                                " Removes any corresponding announcement(s).",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " Parameters:",
                                " - `real`: The account that the proxy will make a call on behalf of.",
                                " - `force_proxy_type`: Specify the exact proxy type to be used and checked for this call.",
                                " - `call`: The call to be made by the `real` account.",
                                "",
                                " # <weight>",
                                " Weight is a function of:",
                                " - A: the number of announcements made.",
                                " - P: the number of proxies the user has.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "ProxyExecuted",
                            "args": [
                                "DispatchResult"
                            ],
                            "docs": [
                                " A proxy was executed correctly, with the given \\[result\\]."
                            ]
                        },
                        {
                            "name": "AnonymousCreated",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "ProxyType",
                                "u16"
                            ],
                            "docs": [
                                " Anonymous account has been created by new proxy with given",
                                " disambiguation index and proxy type. \\[anonymous, who, proxy_type, disambiguation_index\\]"
                            ]
                        },
                        {
                            "name": "Announced",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "Hash"
                            ],
                            "docs": [
                                " An announcement was placed to make a call in the future. \\[real, proxy, call_hash\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "ProxyDepositBase",
                            "type": "BalanceOf",
                            "value": "0x00947cece80000000000000000000000",
                            "docs": [
                                " The base amount of currency needed to reserve for creating a proxy.",
                                "",
                                " This is held for an additional storage item whose value size is",
                                " `sizeof(Balance)` bytes and whose key size is `sizeof(AccountId)` bytes."
                            ]
                        },
                        {
                            "name": "ProxyDepositFactor",
                            "type": "BalanceOf",
                            "value": "0x80005962000000000000000000000000",
                            "docs": [
                                " The amount of currency needed per proxy added.",
                                "",
                                " This is held for adding 32 bytes plus an instance of `ProxyType` more into a pre-existing",
                                " storage value. Thus, when configuring `ProxyDepositFactor` one should take into account",
                                " `32 + proxy_type.encode().len()` bytes of data."
                            ]
                        },
                        {
                            "name": "MaxProxies",
                            "type": "u32",
                            "value": "0x20000000",
                            "docs": [
                                " The maximum amount of proxies allowed for a single account."
                            ]
                        },
                        {
                            "name": "MaxPending",
                            "type": "u32",
                            "value": "0x20000000",
                            "docs": [
                                " The maximum amount of time-delayed announcements that are allowed to be pending."
                            ]
                        },
                        {
                            "name": "AnnouncementDepositBase",
                            "type": "BalanceOf",
                            "value": "0x00947cece80000000000000000000000",
                            "docs": [
                                " The base amount of currency needed to reserve for creating an announcement.",
                                "",
                                " This is held when a new storage item holding a `Balance` is created (typically 16 bytes)."
                            ]
                        },
                        {
                            "name": "AnnouncementDepositFactor",
                            "type": "BalanceOf",
                            "value": "0x0001b2c4000000000000000000000000",
                            "docs": [
                                " The amount of currency needed per announcement made.",
                                "",
                                " This is held for adding an `AccountId`, `Hash` and `BlockNumber` (typically 68 bytes)",
                                " into a pre-existing storage value."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "TooMany",
                            "docs": [
                                " There are too many proxies registered or too many announcements pending."
                            ]
                        },
                        {
                            "name": "NotFound",
                            "docs": [
                                " Proxy registration not found."
                            ]
                        },
                        {
                            "name": "NotProxy",
                            "docs": [
                                " Sender is not a proxy of the account to be proxied."
                            ]
                        },
                        {
                            "name": "Unproxyable",
                            "docs": [
                                " A call which is incompatible with the proxy type's filter was attempted."
                            ]
                        },
                        {
                            "name": "Duplicate",
                            "docs": [
                                " Account is already a proxy."
                            ]
                        },
                        {
                            "name": "NoPermission",
                            "docs": [
                                " Call may not be made by proxy because it may escalate its privileges."
                            ]
                        },
                        {
                            "name": "Unannounced",
                            "docs": [
                                " Announcement, if made at all, was made too recently."
                            ]
                        },
                        {
                            "name": "NoSelfProxy",
                            "docs": [
                                " Cannot add self as proxy."
                            ]
                        }
                    ],
                    "index": "22"
                },
                {
                    "name": "Multisig",
                    "storage": {
                        "prefix": "Multisig",
                        "items": [
                            {
                                "name": "Multisigs",
                                "modifier": "Optional",
                                "type": {
                                    "doubleMap": {
                                        "hasher": "Twox64Concat",
                                        "key1": "AccountId",
                                        "key2": "[u8;32]",
                                        "value": "Multisig",
                                        "key2Hasher": "Blake2_128Concat"
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The set of open multisig operations."
                                ]
                            },
                            {
                                "name": "Calls",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Identity",
                                        "key": "[u8;32]",
                                        "value": "(OpaqueCall,AccountId,BalanceOf)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": []
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "as_multi_threshold_1",
                            "args": [
                                {
                                    "name": "other_signatories",
                                    "type": "Vec<AccountId>"
                                },
                                {
                                    "name": "call",
                                    "type": "Call"
                                }
                            ],
                            "docs": [
                                " Immediately dispatch a multi-signature call using a single approval from the caller.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `other_signatories`: The accounts (other than the sender) who are part of the",
                                " multi-signature, but do not participate in the approval process.",
                                " - `call`: The call to be executed.",
                                "",
                                " Result is equivalent to the dispatched result.",
                                "",
                                " # <weight>",
                                " O(Z + C) where Z is the length of the call and C its execution weight.",
                                " -------------------------------",
                                " - DB Weight: None",
                                " - Plus Call Weight",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "as_multi",
                            "args": [
                                {
                                    "name": "threshold",
                                    "type": "u16"
                                },
                                {
                                    "name": "other_signatories",
                                    "type": "Vec<AccountId>"
                                },
                                {
                                    "name": "maybe_timepoint",
                                    "type": "Option<Timepoint>"
                                },
                                {
                                    "name": "call",
                                    "type": "OpaqueCall"
                                },
                                {
                                    "name": "store_call",
                                    "type": "bool"
                                },
                                {
                                    "name": "max_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Register approval for a dispatch to be made from a deterministic composite account if",
                                " approved by a total of `threshold - 1` of `other_signatories`.",
                                "",
                                " If there are enough, then dispatch the call.",
                                "",
                                " Payment: `DepositBase` will be reserved if this is the first approval, plus",
                                " `threshold` times `DepositFactor`. It is returned once this dispatch happens or",
                                " is cancelled.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `threshold`: The total number of approvals for this dispatch before it is executed.",
                                " - `other_signatories`: The accounts (other than the sender) who can approve this",
                                " dispatch. May not be empty.",
                                " - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is",
                                " not the first approval, then it must be `Some`, with the timepoint (block number and",
                                " transaction index) of the first approval transaction.",
                                " - `call`: The call to be executed.",
                                "",
                                " NOTE: Unless this is the final approval, you will generally want to use",
                                " `approve_as_multi` instead, since it only requires a hash of the call.",
                                "",
                                " Result is equivalent to the dispatched result if `threshold` is exactly `1`. Otherwise",
                                " on success, result is `Ok` and the result from the interior call, if it was executed,",
                                " may be found in the deposited `MultisigExecuted` event.",
                                "",
                                " # <weight>",
                                " - `O(S + Z + Call)`.",
                                " - Up to one balance-reserve or unreserve operation.",
                                " - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
                                "   signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
                                " - One call encode & hash, both of complexity `O(Z)` where `Z` is tx-len.",
                                " - One encode & hash, both of complexity `O(S)`.",
                                " - Up to one binary search and insert (`O(logS + S)`).",
                                " - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.",
                                " - One event.",
                                " - The weight of the `call`.",
                                " - Storage: inserts one item, value size bounded by `MaxSignatories`, with a",
                                "   deposit taken for its lifetime of",
                                "   `DepositBase + threshold * DepositFactor`.",
                                " -------------------------------",
                                " - DB Weight:",
                                "     - Reads: Multisig Storage, [Caller Account], Calls (if `store_call`)",
                                "     - Writes: Multisig Storage, [Caller Account], Calls (if `store_call`)",
                                " - Plus Call Weight",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "approve_as_multi",
                            "args": [
                                {
                                    "name": "threshold",
                                    "type": "u16"
                                },
                                {
                                    "name": "other_signatories",
                                    "type": "Vec<AccountId>"
                                },
                                {
                                    "name": "maybe_timepoint",
                                    "type": "Option<Timepoint>"
                                },
                                {
                                    "name": "call_hash",
                                    "type": "[u8;32]"
                                },
                                {
                                    "name": "max_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Register approval for a dispatch to be made from a deterministic composite account if",
                                " approved by a total of `threshold - 1` of `other_signatories`.",
                                "",
                                " Payment: `DepositBase` will be reserved if this is the first approval, plus",
                                " `threshold` times `DepositFactor`. It is returned once this dispatch happens or",
                                " is cancelled.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `threshold`: The total number of approvals for this dispatch before it is executed.",
                                " - `other_signatories`: The accounts (other than the sender) who can approve this",
                                " dispatch. May not be empty.",
                                " - `maybe_timepoint`: If this is the first approval, then this must be `None`. If it is",
                                " not the first approval, then it must be `Some`, with the timepoint (block number and",
                                " transaction index) of the first approval transaction.",
                                " - `call_hash`: The hash of the call to be executed.",
                                "",
                                " NOTE: If this is the final approval, you will want to use `as_multi` instead.",
                                "",
                                " # <weight>",
                                " - `O(S)`.",
                                " - Up to one balance-reserve or unreserve operation.",
                                " - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
                                "   signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
                                " - One encode & hash, both of complexity `O(S)`.",
                                " - Up to one binary search and insert (`O(logS + S)`).",
                                " - I/O: 1 read `O(S)`, up to 1 mutate `O(S)`. Up to one remove.",
                                " - One event.",
                                " - Storage: inserts one item, value size bounded by `MaxSignatories`, with a",
                                "   deposit taken for its lifetime of",
                                "   `DepositBase + threshold * DepositFactor`.",
                                " ----------------------------------",
                                " - DB Weight:",
                                "     - Read: Multisig Storage, [Caller Account]",
                                "     - Write: Multisig Storage, [Caller Account]",
                                " # </weight>"
                            ]
                        },
                        {
                            "name": "cancel_as_multi",
                            "args": [
                                {
                                    "name": "threshold",
                                    "type": "u16"
                                },
                                {
                                    "name": "other_signatories",
                                    "type": "Vec<AccountId>"
                                },
                                {
                                    "name": "timepoint",
                                    "type": "Timepoint"
                                },
                                {
                                    "name": "call_hash",
                                    "type": "[u8;32]"
                                }
                            ],
                            "docs": [
                                " Cancel a pre-existing, on-going multisig transaction. Any deposit reserved previously",
                                " for this operation will be unreserved on success.",
                                "",
                                " The dispatch origin for this call must be _Signed_.",
                                "",
                                " - `threshold`: The total number of approvals for this dispatch before it is executed.",
                                " - `other_signatories`: The accounts (other than the sender) who can approve this",
                                " dispatch. May not be empty.",
                                " - `timepoint`: The timepoint (block number and transaction index) of the first approval",
                                " transaction for this dispatch.",
                                " - `call_hash`: The hash of the call to be executed.",
                                "",
                                " # <weight>",
                                " - `O(S)`.",
                                " - Up to one balance-reserve or unreserve operation.",
                                " - One passthrough operation, one insert, both `O(S)` where `S` is the number of",
                                "   signatories. `S` is capped by `MaxSignatories`, with weight being proportional.",
                                " - One encode & hash, both of complexity `O(S)`.",
                                " - One event.",
                                " - I/O: 1 read `O(S)`, one remove.",
                                " - Storage: removes one item.",
                                " ----------------------------------",
                                " - DB Weight:",
                                "     - Read: Multisig Storage, [Caller Account], Refund Account, Calls",
                                "     - Write: Multisig Storage, [Caller Account], Refund Account, Calls",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "NewMultisig",
                            "args": [
                                "AccountId",
                                "AccountId",
                                "CallHash"
                            ],
                            "docs": [
                                " A new multisig operation has begun. \\[approving, multisig, call_hash\\]"
                            ]
                        },
                        {
                            "name": "MultisigApproval",
                            "args": [
                                "AccountId",
                                "Timepoint",
                                "AccountId",
                                "CallHash"
                            ],
                            "docs": [
                                " A multisig operation has been approved by someone.",
                                " \\[approving, timepoint, multisig, call_hash\\]"
                            ]
                        },
                        {
                            "name": "MultisigExecuted",
                            "args": [
                                "AccountId",
                                "Timepoint",
                                "AccountId",
                                "CallHash",
                                "DispatchResult"
                            ],
                            "docs": [
                                " A multisig operation has been executed. \\[approving, timepoint, multisig, call_hash\\]"
                            ]
                        },
                        {
                            "name": "MultisigCancelled",
                            "args": [
                                "AccountId",
                                "Timepoint",
                                "AccountId",
                                "CallHash"
                            ],
                            "docs": [
                                " A multisig operation has been cancelled. \\[cancelling, timepoint, multisig, call_hash\\]"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "DepositBase",
                            "type": "BalanceOf",
                            "value": "0x00bce7dae90000000000000000000000",
                            "docs": [
                                " The base amount of currency needed to reserve for creating a multisig execution or to store",
                                " a dispatch call for later.",
                                "",
                                " This is held for an additional storage item whose value size is",
                                " `4 + sizeof((BlockNumber, Balance, AccountId))` bytes and whose key size is",
                                " `32 + sizeof(AccountId)` bytes."
                            ]
                        },
                        {
                            "name": "DepositFactor",
                            "type": "BalanceOf",
                            "value": "0x00105e5f000000000000000000000000",
                            "docs": [
                                " The amount of currency needed per unit threshold when creating a multisig execution.",
                                "",
                                " This is held for adding 32 bytes more into a pre-existing storage value."
                            ]
                        },
                        {
                            "name": "MaxSignatories",
                            "type": "u16",
                            "value": "0x6400",
                            "docs": [
                                " The maximum amount of signatories allowed in the multisig."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "MinimumThreshold",
                            "docs": [
                                " Threshold must be 2 or greater."
                            ]
                        },
                        {
                            "name": "AlreadyApproved",
                            "docs": [
                                " Call is already approved by this signatory."
                            ]
                        },
                        {
                            "name": "NoApprovalsNeeded",
                            "docs": [
                                " Call doesn't need any (more) approvals."
                            ]
                        },
                        {
                            "name": "TooFewSignatories",
                            "docs": [
                                " There are too few signatories in the list."
                            ]
                        },
                        {
                            "name": "TooManySignatories",
                            "docs": [
                                " There are too many signatories in the list."
                            ]
                        },
                        {
                            "name": "SignatoriesOutOfOrder",
                            "docs": [
                                " The signatories were provided out of order; they should be ordered."
                            ]
                        },
                        {
                            "name": "SenderInSignatories",
                            "docs": [
                                " The sender was contained in the other signatories; it shouldn't be."
                            ]
                        },
                        {
                            "name": "NotFound",
                            "docs": [
                                " Multisig operation not found when attempting to cancel."
                            ]
                        },
                        {
                            "name": "NotOwner",
                            "docs": [
                                " Only the account that originally created the multisig is able to cancel it."
                            ]
                        },
                        {
                            "name": "NoTimepoint",
                            "docs": [
                                " No timepoint was given, yet the multisig operation is already underway."
                            ]
                        },
                        {
                            "name": "WrongTimepoint",
                            "docs": [
                                " A different timepoint was given to the multisig operation that is underway."
                            ]
                        },
                        {
                            "name": "UnexpectedTimepoint",
                            "docs": [
                                " A timepoint was given, yet no multisig operation is underway."
                            ]
                        },
                        {
                            "name": "MaxWeightTooLow",
                            "docs": [
                                " The maximum weight information provided was too low."
                            ]
                        },
                        {
                            "name": "AlreadyStored",
                            "docs": [
                                " The data to be stored is already stored."
                            ]
                        }
                    ],
                    "index": "23"
                },
                {
                    "name": "ElectionProviderMultiPhase",
                    "storage": {
                        "prefix": "ElectionProviderMultiPhase",
                        "items": [
                            {
                                "name": "Round",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x01000000",
                                "docs": [
                                    " Internal counter for the number of rounds.",
                                    "",
                                    " This is useful for de-duplication of transactions submitted to the pool, and general",
                                    " diagnostics of the pallet.",
                                    "",
                                    " This is merely incremented once per every time that an upstream `elect` is called."
                                ]
                            },
                            {
                                "name": "CurrentPhase",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Phase"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Current phase."
                                ]
                            },
                            {
                                "name": "QueuedSolution",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "ReadySolution"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Current best solution, signed or unsigned, queued to be returned upon `elect`."
                                ]
                            },
                            {
                                "name": "Snapshot",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "RoundSnapshot"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Snapshot data of the round.",
                                    "",
                                    " This is created at the beginning of the signed phase and cleared upon calling `elect`."
                                ]
                            },
                            {
                                "name": "DesiredTargets",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Desired number of targets to elect for this round.",
                                    "",
                                    " Only exists when [`Snapshot`] is present."
                                ]
                            },
                            {
                                "name": "SnapshotMetadata",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "SolutionOrSnapshotSize"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The metadata of the [`RoundSnapshot`]",
                                    "",
                                    " Only exists when [`Snapshot`] is present."
                                ]
                            },
                            {
                                "name": "SignedSubmissionNextIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The next index to be assigned to an incoming signed submission.",
                                    "",
                                    " Every accepted submission is assigned a unique index; that index is bound to that particular",
                                    " submission for the duration of the election. On election finalization, the next index is",
                                    " reset to 0.",
                                    "",
                                    " We can't just use `SignedSubmissionIndices.len()`, because that's a bounded set; past its",
                                    " capacity, it will simply saturate. We can't just iterate over `SignedSubmissionsMap`,",
                                    " because iteration is slow. Instead, we store the value here."
                                ]
                            },
                            {
                                "name": "SignedSubmissionIndices",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SubmissionIndicesOf"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " A sorted, bounded set of `(score, index)`, where each `index` points to a value in",
                                    " `SignedSubmissions`.",
                                    "",
                                    " We never need to process more than a single signed submission at a time. Signed submissions",
                                    " can be quite large, so we're willing to pay the cost of multiple database accesses to access",
                                    " them one at a time instead of reading and decoding all of them at once."
                                ]
                            },
                            {
                                "name": "SignedSubmissionsMap",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "u32",
                                        "value": "SignedSubmissionOf",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000",
                                "docs": [
                                    " Unchecked, signed solutions.",
                                    "",
                                    " Together with `SubmissionIndices`, this stores a bounded set of `SignedSubmissions` while",
                                    " allowing us to keep only a single one in memory at a time.",
                                    "",
                                    " Twox note: the key of the map is an auto-incrementing index which users cannot inspect or",
                                    " affect; we shouldn't need a cryptographically secure hasher."
                                ]
                            },
                            {
                                "name": "MinimumUntrustedScore",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "ElectionScore"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The minimum score that each 'untrusted' solution must attain in order to be considered",
                                    " feasible.",
                                    "",
                                    " Can be set via `set_minimum_untrusted_score`."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "submit_unsigned",
                            "args": [
                                {
                                    "name": "solution",
                                    "type": "RawSolution"
                                },
                                {
                                    "name": "witness",
                                    "type": "SolutionOrSnapshotSize"
                                }
                            ],
                            "docs": [
                                " Submit a solution for the unsigned phase.",
                                "",
                                " The dispatch origin fo this call must be __none__.",
                                "",
                                " This submission is checked on the fly. Moreover, this unsigned solution is only",
                                " validated when submitted to the pool from the **local** node. Effectively, this means",
                                " that only active validators can submit this transaction when authoring a block (similar",
                                " to an inherent).",
                                "",
                                " To prevent any incorrect solution (and thus wasted time/weight), this transaction will",
                                " panic if the solution submitted by the validator is invalid in any way, effectively",
                                " putting their authoring reward at risk.",
                                "",
                                " No deposit or reward is associated with this submission."
                            ]
                        },
                        {
                            "name": "set_minimum_untrusted_score",
                            "args": [
                                {
                                    "name": "maybe_next_score",
                                    "type": "Option<ElectionScore>"
                                }
                            ],
                            "docs": [
                                " Set a new value for `MinimumUntrustedScore`.",
                                "",
                                " Dispatch origin must be aligned with `T::ForceOrigin`.",
                                "",
                                " This check can be turned off by setting the value to `None`."
                            ]
                        },
                        {
                            "name": "set_emergency_election_result",
                            "args": [
                                {
                                    "name": "supports",
                                    "type": "Supports"
                                }
                            ],
                            "docs": [
                                " Set a solution in the queue, to be handed out to the client of this pallet in the next",
                                " call to `ElectionProvider::elect`.",
                                "",
                                " This can only be set by `T::ForceOrigin`, and only when the phase is `Emergency`.",
                                "",
                                " The solution is not checked for any feasibility and is assumed to be trustworthy, as any",
                                " feasibility check itself can in principle cause the election process to fail (due to",
                                " memory/weight constrains)."
                            ]
                        },
                        {
                            "name": "submit",
                            "args": [
                                {
                                    "name": "solution",
                                    "type": "RawSolution"
                                },
                                {
                                    "name": "num_signed_submissions",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Submit a solution for the signed phase.",
                                "",
                                " The dispatch origin fo this call must be __signed__.",
                                "",
                                " The solution is potentially queued, based on the claimed score and processed at the end",
                                " of the signed phase.",
                                "",
                                " A deposit is reserved and recorded for the solution. Based on the outcome, the solution",
                                " might be rewarded, slashed, or get all or a part of the deposit back.",
                                "",
                                " # <weight>",
                                " Queue size must be provided as witness data.",
                                " # </weight>"
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "SolutionStored",
                            "args": [
                                "ElectionCompute",
                                "bool"
                            ],
                            "docs": [
                                " A solution was stored with the given compute.",
                                "",
                                " If the solution is signed, this means that it hasn't yet been processed. If the",
                                " solution is unsigned, this means that it has also been processed.",
                                "",
                                " The `bool` is `true` when a previous solution was ejected to make room for this one."
                            ]
                        },
                        {
                            "name": "ElectionFinalized",
                            "args": [
                                "Option<ElectionCompute>"
                            ],
                            "docs": [
                                " The election has been finalized, with `Some` of the given computation, or else if the",
                                " election failed, `None`."
                            ]
                        },
                        {
                            "name": "Rewarded",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account has been rewarded for their signed submission being finalized."
                            ]
                        },
                        {
                            "name": "Slashed",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " An account has been slashed for submitting an invalid signed submission."
                            ]
                        },
                        {
                            "name": "SignedPhaseStarted",
                            "args": [
                                "u32"
                            ],
                            "docs": [
                                " The signed phase of the given round has started."
                            ]
                        },
                        {
                            "name": "UnsignedPhaseStarted",
                            "args": [
                                "u32"
                            ],
                            "docs": [
                                " The unsigned phase of the given round has started."
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "UnsignedPhase",
                            "type": "BlockNumber",
                            "value": "0x96000000",
                            "docs": [
                                " Duration of the unsigned phase."
                            ]
                        },
                        {
                            "name": "SignedPhase",
                            "type": "BlockNumber",
                            "value": "0x96000000",
                            "docs": [
                                " Duration of the signed phase."
                            ]
                        },
                        {
                            "name": "SolutionImprovementThreshold",
                            "type": "Perbill",
                            "value": "0x20a10700",
                            "docs": [
                                " The minimum amount of improvement to the solution score that defines a solution as",
                                " \"better\" (in any phase)."
                            ]
                        },
                        {
                            "name": "OffchainRepeat",
                            "type": "BlockNumber",
                            "value": "0x05000000",
                            "docs": [
                                " The repeat threshold of the offchain worker.",
                                "",
                                " For example, if it is 5, that means that at least 5 blocks will elapse between attempts",
                                " to submit the worker's solution."
                            ]
                        },
                        {
                            "name": "MinerTxPriority",
                            "type": "TransactionPriority",
                            "value": "0xffffffffffffff7f",
                            "docs": [
                                " The priority of the unsigned transaction submitted in the unsigned-phase"
                            ]
                        },
                        {
                            "name": "MinerMaxIterations",
                            "type": "u32",
                            "value": "0x0a000000",
                            "docs": [
                                " Maximum number of iteration of balancing that will be executed in the embedded miner of",
                                " the pallet."
                            ]
                        },
                        {
                            "name": "MinerMaxWeight",
                            "type": "Weight",
                            "value": "0xc084666557010000",
                            "docs": [
                                " Maximum weight that the miner should consume.",
                                "",
                                " The miner will ensure that the total weight of the unsigned solution will not exceed",
                                " this value, based on [`WeightInfo::submit_unsigned`]."
                            ]
                        },
                        {
                            "name": "SignedMaxSubmissions",
                            "type": "u32",
                            "value": "0x80000000",
                            "docs": [
                                " Maximum number of signed submissions that can be queued.",
                                "",
                                " It is best to avoid adjusting this during an election, as it impacts downstream data",
                                " structures. In particular, `SignedSubmissionIndices<T>` is bounded on this value. If you",
                                " update this value during an election, you _must_ ensure that",
                                " `SignedSubmissionIndices.len()` is less than or equal to the new value. Otherwise,",
                                " attempts to submit new solutions may cause a runtime panic."
                            ]
                        },
                        {
                            "name": "SignedMaxWeight",
                            "type": "Weight",
                            "value": "0xc084666557010000",
                            "docs": [
                                " Maximum weight of a signed solution.",
                                "",
                                " This should probably be similar to [`Config::MinerMaxWeight`]."
                            ]
                        },
                        {
                            "name": "SignedRewardBase",
                            "type": "BalanceOf",
                            "value": "0x0010a5d4e80000000000000000000000",
                            "docs": [
                                " Base reward for a signed solution"
                            ]
                        },
                        {
                            "name": "SignedDepositBase",
                            "type": "BalanceOf",
                            "value": "0x0010a5d4e80000000000000000000000",
                            "docs": [
                                " Base deposit for a signed solution."
                            ]
                        },
                        {
                            "name": "SignedDepositByte",
                            "type": "BalanceOf",
                            "value": "0xf2052a01000000000000000000000000",
                            "docs": [
                                " Per-byte deposit for a signed solution."
                            ]
                        },
                        {
                            "name": "SignedDepositWeight",
                            "type": "BalanceOf",
                            "value": "0x00000000000000000000000000000000",
                            "docs": [
                                " Per-weight deposit for a signed solution."
                            ]
                        },
                        {
                            "name": "MinerMaxLength",
                            "type": "u32",
                            "value": "0x00003600",
                            "docs": [
                                " Maximum length (bytes) that the mined solution should consume.",
                                "",
                                " The miner will ensure that the total length of the unsigned solution will not exceed",
                                " this value."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "PreDispatchEarlySubmission",
                            "docs": [
                                " Submission was too early."
                            ]
                        },
                        {
                            "name": "PreDispatchWrongWinnerCount",
                            "docs": [
                                " Wrong number of winners presented."
                            ]
                        },
                        {
                            "name": "PreDispatchWeakSubmission",
                            "docs": [
                                " Submission was too weak, score-wise."
                            ]
                        },
                        {
                            "name": "SignedQueueFull",
                            "docs": [
                                " The queue was full, and the solution was not better than any of the existing ones."
                            ]
                        },
                        {
                            "name": "SignedCannotPayDeposit",
                            "docs": [
                                " The origin failed to pay the deposit."
                            ]
                        },
                        {
                            "name": "SignedInvalidWitness",
                            "docs": [
                                " Witness data to dispatchable is invalid."
                            ]
                        },
                        {
                            "name": "SignedTooMuchWeight",
                            "docs": [
                                " The signed submission consumes too much weight"
                            ]
                        },
                        {
                            "name": "OcwCallWrongEra",
                            "docs": [
                                " OCW submitted solution for wrong round"
                            ]
                        },
                        {
                            "name": "MissingSnapshotMetadata",
                            "docs": [
                                " Snapshot metadata should exist but didn't."
                            ]
                        },
                        {
                            "name": "InvalidSubmissionIndex",
                            "docs": [
                                " `Self::insert_submission` returned an invalid index."
                            ]
                        },
                        {
                            "name": "CallNotAllowed",
                            "docs": [
                                " The call is not allowed at this point."
                            ]
                        }
                    ],
                    "index": "24"
                },
                {
                    "name": "ParachainsOrigin",
                    "storage": null,
                    "calls": null,
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "41"
                },
                {
                    "name": "Configuration",
                    "storage": {
                        "prefix": "Configuration",
                        "items": [
                            {
                                "name": "ActiveConfig",
                                "modifier": "Default",
                                "type": {
                                    "plain": "HostConfiguration"
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000000000000000060000006400000002000000c80000000100000000000000000000000000000000000000",
                                "docs": [
                                    " The active configuration for the current session."
                                ]
                            },
                            {
                                "name": "PendingConfig",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "SessionIndex",
                                        "value": "HostConfiguration",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Pending configuration (if any) for the next session."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "set_validation_upgrade_frequency",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the validation upgrade frequency."
                            ]
                        },
                        {
                            "name": "set_validation_upgrade_delay",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the validation upgrade delay."
                            ]
                        },
                        {
                            "name": "set_code_retention_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the acceptance period for an included candidate."
                            ]
                        },
                        {
                            "name": "set_max_code_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the max validation code size for incoming upgrades."
                            ]
                        },
                        {
                            "name": "set_max_pov_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the max POV block size for incoming upgrades."
                            ]
                        },
                        {
                            "name": "set_max_head_data_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the max head data size for paras."
                            ]
                        },
                        {
                            "name": "set_parathread_cores",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the number of parathread execution cores."
                            ]
                        },
                        {
                            "name": "set_parathread_retries",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the number of retries for a particular parathread."
                            ]
                        },
                        {
                            "name": "set_group_rotation_frequency",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the parachain validator-group rotation frequency"
                            ]
                        },
                        {
                            "name": "set_chain_availability_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the availability period for parachains."
                            ]
                        },
                        {
                            "name": "set_thread_availability_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the availability period for parathreads."
                            ]
                        },
                        {
                            "name": "set_scheduling_lookahead",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the scheduling lookahead, in expected number of blocks at peak throughput."
                            ]
                        },
                        {
                            "name": "set_max_validators_per_core",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Option<u32>"
                                }
                            ],
                            "docs": [
                                " Set the maximum number of validators to assign to any core."
                            ]
                        },
                        {
                            "name": "set_max_validators",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Option<u32>"
                                }
                            ],
                            "docs": [
                                " Set the maximum number of validators to use in parachain consensus."
                            ]
                        },
                        {
                            "name": "set_dispute_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "SessionIndex"
                                }
                            ],
                            "docs": [
                                " Set the dispute period, in number of sessions to keep for disputes."
                            ]
                        },
                        {
                            "name": "set_dispute_post_conclusion_acceptance_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the dispute post conclusion acceptance period."
                            ]
                        },
                        {
                            "name": "set_dispute_max_spam_slots",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the maximum number of dispute spam slots."
                            ]
                        },
                        {
                            "name": "set_dispute_conclusion_by_time_out_period",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Set the dispute conclusion by time out period."
                            ]
                        },
                        {
                            "name": "set_no_show_slots",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the no show slots, in number of number of consensus slots.",
                                " Must be at least 1."
                            ]
                        },
                        {
                            "name": "set_n_delay_tranches",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the total number of delay tranches."
                            ]
                        },
                        {
                            "name": "set_zeroth_delay_tranche_width",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the zeroth delay tranche width."
                            ]
                        },
                        {
                            "name": "set_needed_approvals",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the number of validators needed to approve a block."
                            ]
                        },
                        {
                            "name": "set_relay_vrf_modulo_samples",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the number of samples to do of the `RelayVRFModulo` approval assignment criterion."
                            ]
                        },
                        {
                            "name": "set_max_upward_queue_count",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum items that can present in a upward dispatch queue at once."
                            ]
                        },
                        {
                            "name": "set_max_upward_queue_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum total size of items that can present in a upward dispatch queue at once."
                            ]
                        },
                        {
                            "name": "set_max_downward_message_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Set the critical downward message size."
                            ]
                        },
                        {
                            "name": "set_ump_service_total_weight",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Sets the soft limit for the phase of dispatching dispatchable upward messages."
                            ]
                        },
                        {
                            "name": "set_max_upward_message_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum size of an upward message that can be sent by a candidate."
                            ]
                        },
                        {
                            "name": "set_max_upward_message_num_per_candidate",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of messages that a candidate can contain."
                            ]
                        },
                        {
                            "name": "set_hrmp_open_request_ttl",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the number of sessions after which an HRMP open channel request expires."
                            ]
                        },
                        {
                            "name": "set_hrmp_sender_deposit",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Balance"
                                }
                            ],
                            "docs": [
                                " Sets the amount of funds that the sender should provide for opening an HRMP channel."
                            ]
                        },
                        {
                            "name": "set_hrmp_recipient_deposit",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "Balance"
                                }
                            ],
                            "docs": [
                                " Sets the amount of funds that the recipient should provide for accepting opening an HRMP",
                                " channel."
                            ]
                        },
                        {
                            "name": "set_hrmp_channel_max_capacity",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of messages allowed in an HRMP channel at once."
                            ]
                        },
                        {
                            "name": "set_hrmp_channel_max_total_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum total size of messages in bytes allowed in an HRMP channel at once."
                            ]
                        },
                        {
                            "name": "set_hrmp_max_parachain_inbound_channels",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of inbound HRMP channels a parachain is allowed to accept."
                            ]
                        },
                        {
                            "name": "set_hrmp_max_parathread_inbound_channels",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of inbound HRMP channels a parathread is allowed to accept."
                            ]
                        },
                        {
                            "name": "set_hrmp_channel_max_message_size",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum size of a message that could ever be put into an HRMP channel."
                            ]
                        },
                        {
                            "name": "set_hrmp_max_parachain_outbound_channels",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of outbound HRMP channels a parachain is allowed to open."
                            ]
                        },
                        {
                            "name": "set_hrmp_max_parathread_outbound_channels",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of outbound HRMP channels a parathread is allowed to open."
                            ]
                        },
                        {
                            "name": "set_hrmp_max_message_num_per_candidate",
                            "args": [
                                {
                                    "name": "new",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Sets the maximum number of outbound HRMP messages can be sent by a candidate."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [],
                    "errors": [
                        {
                            "name": "InvalidNewValue",
                            "docs": [
                                " The new value for a configuration parameter is invalid."
                            ]
                        }
                    ],
                    "index": "42"
                },
                {
                    "name": "ParasShared",
                    "storage": {
                        "prefix": "ParasShared",
                        "items": [
                            {
                                "name": "CurrentSessionIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SessionIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The current session index."
                                ]
                            },
                            {
                                "name": "ActiveValidatorIndices",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ValidatorIndex>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All the validators actively participating in parachain consensus.",
                                    " Indices are into the broader validator set."
                                ]
                            },
                            {
                                "name": "ActiveValidatorKeys",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ValidatorId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The parachain attestation keys of the validators actively participating in parachain consensus.",
                                    " This should be the same length as `ActiveValidatorIndices`."
                                ]
                            }
                        ]
                    },
                    "calls": [],
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "43"
                },
                {
                    "name": "ParaInclusion",
                    "storage": {
                        "prefix": "ParaInclusion",
                        "items": [
                            {
                                "name": "AvailabilityBitfields",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ValidatorIndex",
                                        "value": "AvailabilityBitfieldRecord",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The latest bitfield for each validator, referred to by their index in the validator set."
                                ]
                            },
                            {
                                "name": "PendingAvailability",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "CandidatePendingAvailability",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Candidates pending availability by `ParaId`."
                                ]
                            },
                            {
                                "name": "PendingAvailabilityCommitments",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "CandidateCommitments",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The commitments of candidates pending availability, by `ParaId`."
                                ]
                            }
                        ]
                    },
                    "calls": [],
                    "events": [
                        {
                            "name": "CandidateBacked",
                            "args": [
                                "CandidateReceipt",
                                "HeadData",
                                "CoreIndex",
                                "GroupIndex"
                            ],
                            "docs": [
                                " A candidate was backed. `[candidate, head_data]`"
                            ]
                        },
                        {
                            "name": "CandidateIncluded",
                            "args": [
                                "CandidateReceipt",
                                "HeadData",
                                "CoreIndex",
                                "GroupIndex"
                            ],
                            "docs": [
                                " A candidate was included. `[candidate, head_data]`"
                            ]
                        },
                        {
                            "name": "CandidateTimedOut",
                            "args": [
                                "CandidateReceipt",
                                "HeadData",
                                "CoreIndex"
                            ],
                            "docs": [
                                " A candidate timed out. `[candidate, head_data]`"
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "WrongBitfieldSize",
                            "docs": [
                                " Availability bitfield has unexpected size."
                            ]
                        },
                        {
                            "name": "BitfieldDuplicateOrUnordered",
                            "docs": [
                                " Multiple bitfields submitted by same validator or validators out of order by index."
                            ]
                        },
                        {
                            "name": "ValidatorIndexOutOfBounds",
                            "docs": [
                                " Validator index out of bounds."
                            ]
                        },
                        {
                            "name": "InvalidBitfieldSignature",
                            "docs": [
                                " Invalid signature"
                            ]
                        },
                        {
                            "name": "UnscheduledCandidate",
                            "docs": [
                                " Candidate submitted but para not scheduled."
                            ]
                        },
                        {
                            "name": "CandidateScheduledBeforeParaFree",
                            "docs": [
                                " Candidate scheduled despite pending candidate already existing for the para."
                            ]
                        },
                        {
                            "name": "WrongCollator",
                            "docs": [
                                " Candidate included with the wrong collator."
                            ]
                        },
                        {
                            "name": "ScheduledOutOfOrder",
                            "docs": [
                                " Scheduled cores out of order."
                            ]
                        },
                        {
                            "name": "HeadDataTooLarge",
                            "docs": [
                                " Head data exceeds the configured maximum."
                            ]
                        },
                        {
                            "name": "PrematureCodeUpgrade",
                            "docs": [
                                " Code upgrade prematurely."
                            ]
                        },
                        {
                            "name": "NewCodeTooLarge",
                            "docs": [
                                " Output code is too large"
                            ]
                        },
                        {
                            "name": "CandidateNotInParentContext",
                            "docs": [
                                " Candidate not in parent context."
                            ]
                        },
                        {
                            "name": "UnoccupiedBitInBitfield",
                            "docs": [
                                " The bitfield contains a bit relating to an unassigned availability core."
                            ]
                        },
                        {
                            "name": "InvalidGroupIndex",
                            "docs": [
                                " Invalid group index in core assignment."
                            ]
                        },
                        {
                            "name": "InsufficientBacking",
                            "docs": [
                                " Insufficient (non-majority) backing."
                            ]
                        },
                        {
                            "name": "InvalidBacking",
                            "docs": [
                                " Invalid (bad signature, unknown validator, etc.) backing."
                            ]
                        },
                        {
                            "name": "NotCollatorSigned",
                            "docs": [
                                " Collator did not sign PoV."
                            ]
                        },
                        {
                            "name": "ValidationDataHashMismatch",
                            "docs": [
                                " The validation data hash does not match expected."
                            ]
                        },
                        {
                            "name": "InternalError",
                            "docs": [
                                " Internal error only returned when compiled with debug assertions."
                            ]
                        },
                        {
                            "name": "IncorrectDownwardMessageHandling",
                            "docs": [
                                " The downward message queue is not processed correctly."
                            ]
                        },
                        {
                            "name": "InvalidUpwardMessages",
                            "docs": [
                                " At least one upward message sent does not pass the acceptance criteria."
                            ]
                        },
                        {
                            "name": "HrmpWatermarkMishandling",
                            "docs": [
                                " The candidate didn't follow the rules of HRMP watermark advancement."
                            ]
                        },
                        {
                            "name": "InvalidOutboundHrmp",
                            "docs": [
                                " The HRMP messages sent by the candidate is not valid."
                            ]
                        },
                        {
                            "name": "InvalidValidationCodeHash",
                            "docs": [
                                " The validation code hash of the candidate is not valid."
                            ]
                        }
                    ],
                    "index": "44"
                },
                {
                    "name": "ParaInherent",
                    "storage": {
                        "prefix": "ParaInherent",
                        "items": [
                            {
                                "name": "Included",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "()"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Whether the paras inherent was included within this block.",
                                    "",
                                    " The `Option<()>` is effectively a `bool`, but it never hits storage in the `None` variant",
                                    " due to the guarantees of FRAME's storage APIs.",
                                    "",
                                    " If this is `None` at the end of the block, we panic and render the block invalid."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "enter",
                            "args": [
                                {
                                    "name": "data",
                                    "type": "ParachainsInherentData"
                                }
                            ],
                            "docs": [
                                " Enter the paras inherent. This will process bitfields and backed candidates."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [],
                    "errors": [
                        {
                            "name": "TooManyInclusionInherents",
                            "docs": [
                                " Inclusion inherent called more than once per block."
                            ]
                        },
                        {
                            "name": "InvalidParentHeader",
                            "docs": [
                                " The hash of the submitted parent header doesn't correspond to the saved block hash of",
                                " the parent."
                            ]
                        },
                        {
                            "name": "CandidateCouldBeInvalid",
                            "docs": [
                                " Potentially invalid candidate."
                            ]
                        }
                    ],
                    "index": "45"
                },
                {
                    "name": "ParaScheduler",
                    "storage": {
                        "prefix": "ParaScheduler",
                        "items": [
                            {
                                "name": "ValidatorGroups",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<Vec<ValidatorIndex>>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All the validator groups. One for each core. Indices are into `ActiveValidators` - not the",
                                    " broader set of Polkadot validators, but instead just the subset used for parachains during",
                                    " this session.",
                                    "",
                                    " Bound: The number of cores is the sum of the numbers of parachains and parathread multiplexers.",
                                    " Reasonably, 100-1000. The dominant factor is the number of validators: safe upper bound at 10k."
                                ]
                            },
                            {
                                "name": "ParathreadQueue",
                                "modifier": "Default",
                                "type": {
                                    "plain": "ParathreadClaimQueue"
                                },
                                "fallback": "0x0000000000",
                                "docs": [
                                    " A queue of upcoming claims and which core they should be mapped onto.",
                                    "",
                                    " The number of queued claims is bounded at the `scheduling_lookahead`",
                                    " multiplied by the number of parathread multiplexer cores. Reasonably, 10 * 50 = 500."
                                ]
                            },
                            {
                                "name": "AvailabilityCores",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<Option<CoreOccupied>>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " One entry for each availability core. Entries are `None` if the core is not currently occupied. Can be",
                                    " temporarily `Some` if scheduled but not occupied.",
                                    " The i'th parachain belongs to the i'th core, with the remaining cores all being",
                                    " parathread-multiplexers.",
                                    "",
                                    " Bounded by the maximum of either of these two values:",
                                    "   * The number of parachains and parathread multiplexers",
                                    "   * The number of validators divided by `configuration.max_validators_per_core`."
                                ]
                            },
                            {
                                "name": "ParathreadClaimIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ParaId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " An index used to ensure that only one claim on a parathread exists in the queue or is",
                                    " currently being handled by an occupied core.",
                                    "",
                                    " Bounded by the number of parathread cores and scheduling lookahead. Reasonably, 10 * 50 = 500."
                                ]
                            },
                            {
                                "name": "SessionStartBlock",
                                "modifier": "Default",
                                "type": {
                                    "plain": "BlockNumber"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The block number where the session start occurred. Used to track how many group rotations have occurred.",
                                    "",
                                    " Note that in the context of parachains modules the session change is signaled during",
                                    " the block and enacted at the end of the block (at the finalization stage, to be exact).",
                                    " Thus for all intents and purposes the effect of the session change is observed at the",
                                    " block following the session change, block number of which we save in this storage value."
                                ]
                            },
                            {
                                "name": "Scheduled",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<CoreAssignment>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Currently scheduled cores - free but up to be occupied.",
                                    "",
                                    " Bounded by the number of cores: one for each parachain and parathread multiplexer.",
                                    "",
                                    " The value contained here will not be valid after the end of a block. Runtime APIs should be used to determine scheduled cores/",
                                    " for the upcoming block."
                                ]
                            }
                        ]
                    },
                    "calls": null,
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "46"
                },
                {
                    "name": "Paras",
                    "storage": {
                        "prefix": "Paras",
                        "items": [
                            {
                                "name": "Parachains",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ParaId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " All parachains. Ordered ascending by `ParaId`. Parathreads are not included."
                                ]
                            },
                            {
                                "name": "ParaLifecycles",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ParaLifecycle",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The current lifecycle of a all known Para IDs."
                                ]
                            },
                            {
                                "name": "Heads",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "HeadData",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The head-data of every registered para."
                                ]
                            },
                            {
                                "name": "CurrentCodeHash",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ValidationCodeHash",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The validation code hash of every live para.",
                                    "",
                                    " Corresponding code can be retrieved with [`CodeByHash`]."
                                ]
                            },
                            {
                                "name": "PastCodeHash",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "(ParaId,BlockNumber)",
                                        "value": "ValidationCodeHash",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Actual past code hash, indicated by the para id as well as the block number at which it",
                                    " became outdated.",
                                    "",
                                    " Corresponding code can be retrieved with [`CodeByHash`]."
                                ]
                            },
                            {
                                "name": "PastCodeMeta",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ParaPastCodeMeta",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000",
                                "docs": [
                                    " Past code of parachains. The parachains themselves may not be registered anymore,",
                                    " but we also keep their code on-chain for the same amount of time as outdated code",
                                    " to keep it available for secondary checkers."
                                ]
                            },
                            {
                                "name": "PastCodePruning",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(ParaId,BlockNumber)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Which paras have past code that needs pruning and the relay-chain block at which the code was replaced.",
                                    " Note that this is the actual height of the included block, not the expected height at which the",
                                    " code upgrade would be applied, although they may be equal.",
                                    " This is to ensure the entire acceptance period is covered, not an offset acceptance period starting",
                                    " from the time at which the parachain perceives a code upgrade as having occurred.",
                                    " Multiple entries for a single para are permitted. Ordered ascending by block number."
                                ]
                            },
                            {
                                "name": "FutureCodeUpgrades",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "BlockNumber",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The block number at which the planned code change is expected for a para.",
                                    " The change will be applied after the first parablock for this ID included which executes",
                                    " in the context of a relay chain block with a number >= `expected_at`."
                                ]
                            },
                            {
                                "name": "FutureCodeHash",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ValidationCodeHash",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The actual future code hash of a para.",
                                    "",
                                    " Corresponding code can be retrieved with [`CodeByHash`]."
                                ]
                            },
                            {
                                "name": "UpgradeGoAheadSignal",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "UpgradeGoAhead",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " This is used by the relay-chain to communicate to a parachain a go-ahead with in the upgrade procedure.",
                                    "",
                                    " This value is absent when there are no upgrades scheduled or during the time the relay chain",
                                    " performs the checks. It is set at the first relay-chain block when the corresponding parachain",
                                    " can switch its upgrade function. As soon as the parachain's block is included, the value",
                                    " gets reset to `None`.",
                                    "",
                                    " NOTE that this field is used by parachains via merkle storage proofs, therefore changing",
                                    " the format will require migration of parachains."
                                ]
                            },
                            {
                                "name": "UpgradeRestrictionSignal",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "UpgradeRestriction",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " This is used by the relay-chain to communicate that there are restrictions for performing",
                                    " an upgrade for this parachain.",
                                    "",
                                    " This may be a because the parachain waits for the upgrade cooldown to expire. Another",
                                    " potential use case is when we want to perform some maintenance (such as storage migration)",
                                    " we could restrict upgrades to make the process simpler.",
                                    "",
                                    " NOTE that this field is used by parachains via merkle storage proofs, therefore changing",
                                    " the format will require migration of parachains."
                                ]
                            },
                            {
                                "name": "UpgradeCooldowns",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(ParaId,BlockNumber)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The list of parachains that are awaiting for their upgrade restriction to cooldown.",
                                    "",
                                    " Ordered ascending by block number."
                                ]
                            },
                            {
                                "name": "UpcomingUpgrades",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<(ParaId,BlockNumber)>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The list of upcoming code upgrades. Each item is a pair of which para performs a code",
                                    " upgrade and at which relay-chain block it is expected at.",
                                    "",
                                    " Ordered ascending by block number."
                                ]
                            },
                            {
                                "name": "ActionsQueue",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "SessionIndex",
                                        "value": "Vec<ParaId>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The actions to perform during the start of a specific session index."
                                ]
                            },
                            {
                                "name": "UpcomingParasGenesis",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ParaGenesisArgs",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Upcoming paras instantiation arguments."
                                ]
                            },
                            {
                                "name": "CodeByHashRefs",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Identity",
                                        "key": "ValidationCodeHash",
                                        "value": "u32",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The number of reference on the validation code in [`CodeByHash`] storage."
                                ]
                            },
                            {
                                "name": "CodeByHash",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Identity",
                                        "key": "ValidationCodeHash",
                                        "value": "ValidationCode",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Validation code stored by its hash.",
                                    "",
                                    " This storage is consistent with [`FutureCodeHash`], [`CurrentCodeHash`] and",
                                    " [`PastCodeHash`]."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "force_set_current_code",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "new_code",
                                    "type": "ValidationCode"
                                }
                            ],
                            "docs": [
                                " Set the storage for the parachain validation code immediately."
                            ]
                        },
                        {
                            "name": "force_set_current_head",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "new_head",
                                    "type": "HeadData"
                                }
                            ],
                            "docs": [
                                " Set the storage for the current parachain head data immediately."
                            ]
                        },
                        {
                            "name": "force_schedule_code_upgrade",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "new_code",
                                    "type": "ValidationCode"
                                },
                                {
                                    "name": "relay_parent_number",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Schedule an upgrade as if it was scheduled in the given relay parent block."
                            ]
                        },
                        {
                            "name": "force_note_new_head",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "new_head",
                                    "type": "HeadData"
                                }
                            ],
                            "docs": [
                                " Note a new block head for para within the context of the current block."
                            ]
                        },
                        {
                            "name": "force_queue_action",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Put a parachain directly into the next session's action queue.",
                                " We can't queue it any sooner than this without going into the",
                                " initializer..."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "CurrentCodeUpdated",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " Current code has been updated for a Para. `para_id`"
                            ]
                        },
                        {
                            "name": "CurrentHeadUpdated",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " Current head has been updated for a Para. `para_id`"
                            ]
                        },
                        {
                            "name": "CodeUpgradeScheduled",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " A code upgrade has been scheduled for a Para. `para_id`"
                            ]
                        },
                        {
                            "name": "NewHeadNoted",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " A new head has been noted for a Para. `para_id`"
                            ]
                        },
                        {
                            "name": "ActionQueued",
                            "args": [
                                "ParaId",
                                "SessionIndex"
                            ],
                            "docs": [
                                " A para has been queued to execute pending actions. `para_id`"
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "NotRegistered",
                            "docs": [
                                " Para is not registered in our system."
                            ]
                        },
                        {
                            "name": "CannotOnboard",
                            "docs": [
                                " Para cannot be onboarded because it is already tracked by our system."
                            ]
                        },
                        {
                            "name": "CannotOffboard",
                            "docs": [
                                " Para cannot be offboarded at this time."
                            ]
                        },
                        {
                            "name": "CannotUpgrade",
                            "docs": [
                                " Para cannot be upgraded to a parachain."
                            ]
                        },
                        {
                            "name": "CannotDowngrade",
                            "docs": [
                                " Para cannot be downgraded to a parathread."
                            ]
                        }
                    ],
                    "index": "47"
                },
                {
                    "name": "Initializer",
                    "storage": {
                        "prefix": "Initializer",
                        "items": [
                            {
                                "name": "HasInitialized",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "()"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Whether the parachains modules have been initialized within this block.",
                                    "",
                                    " Semantically a `bool`, but this guarantees it should never hit the trie,",
                                    " as this is cleared in `on_finalize` and Frame optimizes `None` values to be empty values.",
                                    "",
                                    " As a `bool`, `set(false)` and `remove()` both lead to the next `get()` being false, but one of",
                                    " them writes to the trie and one does not. This confusion makes `Option<()>` more suitable for",
                                    " the semantics of this variable."
                                ]
                            },
                            {
                                "name": "BufferedSessionChanges",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<BufferedSessionChange>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Buffered session changes along with the block number at which they should be applied.",
                                    "",
                                    " Typically this will be empty or one element long. Apart from that this item never hits",
                                    " the storage.",
                                    "",
                                    " However this is a `Vec` regardless to handle various edge cases that may occur at runtime",
                                    " upgrade boundaries or if governance intervenes."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "force_approve",
                            "args": [
                                {
                                    "name": "up_to",
                                    "type": "BlockNumber"
                                }
                            ],
                            "docs": [
                                " Issue a signal to the consensus engine to forcibly act as though all parachain",
                                " blocks in all relay chain blocks up to and including the given number in the current",
                                " chain are valid and should be finalized."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "48"
                },
                {
                    "name": "Dmp",
                    "storage": {
                        "prefix": "Dmp",
                        "items": [
                            {
                                "name": "DownwardMessageQueues",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<InboundDownwardMessage>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The downward messages addressed for a certain para."
                                ]
                            },
                            {
                                "name": "DownwardMessageQueueHeads",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Hash",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000000000000000000000000000000000000000000000000000",
                                "docs": [
                                    " A mapping that stores the downward message queue MQC head for each para.",
                                    "",
                                    " Each link in this chain has a form:",
                                    " `(prev_head, B, H(M))`, where",
                                    " - `prev_head`: is the previous head hash or zero if none.",
                                    " - `B`: is the relay-chain block number in which a message was appended.",
                                    " - `H(M)`: is the hash of the message being appended."
                                ]
                            }
                        ]
                    },
                    "calls": [],
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "49"
                },
                {
                    "name": "Ump",
                    "storage": {
                        "prefix": "Ump",
                        "items": [
                            {
                                "name": "RelayDispatchQueues",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<UpwardMessage>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The messages waiting to be handled by the relay-chain originating from a certain parachain.",
                                    "",
                                    " Note that some upward messages might have been already processed by the inclusion logic. E.g.",
                                    " channel management messages.",
                                    "",
                                    " The messages are processed in FIFO order."
                                ]
                            },
                            {
                                "name": "RelayDispatchQueueSize",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "(u32,u32)",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x0000000000000000",
                                "docs": [
                                    " Size of the dispatch queues. Caches sizes of the queues in `RelayDispatchQueue`.",
                                    "",
                                    " First item in the tuple is the count of messages and second",
                                    " is the total length (in bytes) of the message payloads.",
                                    "",
                                    " Note that this is an auxiliary mapping: it's possible to tell the byte size and the number of",
                                    " messages only looking at `RelayDispatchQueues`. This mapping is separate to avoid the cost of",
                                    " loading the whole message queue if only the total size and count are required.",
                                    "",
                                    " Invariant:",
                                    " - The set of keys should exactly match the set of keys of `RelayDispatchQueues`."
                                ]
                            },
                            {
                                "name": "NeedsDispatch",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ParaId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The ordered list of `ParaId`s that have a `RelayDispatchQueue` entry.",
                                    "",
                                    " Invariant:",
                                    " - The set of items from this vector should be exactly the set of the keys in",
                                    "   `RelayDispatchQueues` and `RelayDispatchQueueSize`."
                                ]
                            },
                            {
                                "name": "NextDispatchRoundStartWith",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "ParaId"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " This is the para that gets will get dispatched first during the next upward dispatchable queue",
                                    " execution round.",
                                    "",
                                    " Invariant:",
                                    " - If `Some(para)`, then `para` must be present in `NeedsDispatch`."
                                ]
                            }
                        ]
                    },
                    "calls": [],
                    "events": [
                        {
                            "name": "InvalidFormat",
                            "args": [
                                "MessageId"
                            ],
                            "docs": [
                                " Upward message is invalid XCM.",
                                " \\[ id \\]"
                            ]
                        },
                        {
                            "name": "UnsupportedVersion",
                            "args": [
                                "MessageId"
                            ],
                            "docs": [
                                " Upward message is unsupported version of XCM.",
                                " \\[ id \\]"
                            ]
                        },
                        {
                            "name": "ExecutedUpward",
                            "args": [
                                "MessageId",
                                "Outcome"
                            ],
                            "docs": [
                                " Upward message executed with the given outcome.",
                                " \\[ id, outcome \\]"
                            ]
                        },
                        {
                            "name": "WeightExhausted",
                            "args": [
                                "MessageId",
                                "Weight",
                                "Weight"
                            ],
                            "docs": [
                                " The weight limit for handling downward messages was reached.",
                                " \\[ id, remaining, required \\]"
                            ]
                        },
                        {
                            "name": "UpwardMessagesReceived",
                            "args": [
                                "ParaId",
                                "u32",
                                "u32"
                            ],
                            "docs": [
                                " Some downward messages have been received and will be processed.",
                                " \\[ para, count, size \\]"
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [],
                    "index": "50"
                },
                {
                    "name": "Hrmp",
                    "storage": {
                        "prefix": "Hrmp",
                        "items": [
                            {
                                "name": "HrmpOpenChannelRequests",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "HrmpChannelId",
                                        "value": "HrmpOpenChannelRequest",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The set of pending HRMP open channel requests.",
                                    "",
                                    " The set is accompanied by a list for iteration.",
                                    "",
                                    " Invariant:",
                                    " - There are no channels that exists in list but not in the set and vice versa."
                                ]
                            },
                            {
                                "name": "HrmpOpenChannelRequestsList",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<HrmpChannelId>"
                                },
                                "fallback": "0x00",
                                "docs": []
                            },
                            {
                                "name": "HrmpOpenChannelRequestCount",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "u32",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " This mapping tracks how many open channel requests are initiated by a given sender para.",
                                    " Invariant: `HrmpOpenChannelRequests` should contain the same number of items that has `(X, _)`",
                                    " as the number of `HrmpOpenChannelRequestCount` for `X`."
                                ]
                            },
                            {
                                "name": "HrmpAcceptedChannelRequestCount",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "u32",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " This mapping tracks how many open channel requests were accepted by a given recipient para.",
                                    " Invariant: `HrmpOpenChannelRequests` should contain the same number of items `(_, X)` with",
                                    " `confirmed` set to true, as the number of `HrmpAcceptedChannelRequestCount` for `X`."
                                ]
                            },
                            {
                                "name": "HrmpCloseChannelRequests",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "HrmpChannelId",
                                        "value": "()",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " A set of pending HRMP close channel requests that are going to be closed during the session change.",
                                    " Used for checking if a given channel is registered for closure.",
                                    "",
                                    " The set is accompanied by a list for iteration.",
                                    "",
                                    " Invariant:",
                                    " - There are no channels that exists in list but not in the set and vice versa."
                                ]
                            },
                            {
                                "name": "HrmpCloseChannelRequestsList",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<HrmpChannelId>"
                                },
                                "fallback": "0x00",
                                "docs": []
                            },
                            {
                                "name": "HrmpWatermarks",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "BlockNumber",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The HRMP watermark associated with each para.",
                                    " Invariant:",
                                    " - each para `P` used here as a key should satisfy `Paras::is_valid_para(P)` within a session."
                                ]
                            },
                            {
                                "name": "HrmpChannels",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "HrmpChannelId",
                                        "value": "HrmpChannel",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " HRMP channel data associated with each para.",
                                    " Invariant:",
                                    " - each participant in the channel should satisfy `Paras::is_valid_para(P)` within a session."
                                ]
                            },
                            {
                                "name": "HrmpIngressChannelsIndex",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<ParaId>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Ingress/egress indexes allow to find all the senders and receivers given the opposite",
                                    " side. I.e.",
                                    "",
                                    " (a) ingress index allows to find all the senders for a given recipient.",
                                    " (b) egress index allows to find all the recipients for a given sender.",
                                    "",
                                    " Invariants:",
                                    " - for each ingress index entry for `P` each item `I` in the index should present in `HrmpChannels`",
                                    "   as `(I, P)`.",
                                    " - for each egress index entry for `P` each item `E` in the index should present in `HrmpChannels`",
                                    "   as `(P, E)`.",
                                    " - there should be no other dangling channels in `HrmpChannels`.",
                                    " - the vectors are sorted."
                                ]
                            },
                            {
                                "name": "HrmpEgressChannelsIndex",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<ParaId>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": []
                            },
                            {
                                "name": "HrmpChannelContents",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "HrmpChannelId",
                                        "value": "Vec<InboundHrmpMessage>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Storage for the messages for each channel.",
                                    " Invariant: cannot be non-empty if the corresponding channel in `HrmpChannels` is `None`."
                                ]
                            },
                            {
                                "name": "HrmpChannelDigests",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<(BlockNumber,Vec<ParaId>)>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Maintains a mapping that can be used to answer the question:",
                                    " What paras sent a message at the given block number for a given receiver.",
                                    " Invariants:",
                                    " - The inner `Vec<ParaId>` is never empty.",
                                    " - The inner `Vec<ParaId>` cannot store two same `ParaId`.",
                                    " - The outer vector is sorted ascending by block number and cannot store two items with the same",
                                    "   block number."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "hrmp_init_open_channel",
                            "args": [
                                {
                                    "name": "recipient",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "proposed_max_capacity",
                                    "type": "u32"
                                },
                                {
                                    "name": "proposed_max_message_size",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Initiate opening a channel from a parachain to a given recipient with given channel",
                                " parameters.",
                                "",
                                " - `proposed_max_capacity` - specifies how many messages can be in the channel at once.",
                                " - `proposed_max_message_size` - specifies the maximum size of any of the messages.",
                                "",
                                " These numbers are a subject to the relay-chain configuration limits.",
                                "",
                                " The channel can be opened only after the recipient confirms it and only on a session",
                                " change."
                            ]
                        },
                        {
                            "name": "hrmp_accept_open_channel",
                            "args": [
                                {
                                    "name": "sender",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Accept a pending open channel request from the given sender.",
                                "",
                                " The channel will be opened only on the next session boundary."
                            ]
                        },
                        {
                            "name": "hrmp_close_channel",
                            "args": [
                                {
                                    "name": "channel_id",
                                    "type": "HrmpChannelId"
                                }
                            ],
                            "docs": [
                                " Initiate unilateral closing of a channel. The origin must be either the sender or the",
                                " recipient in the channel being closed.",
                                "",
                                " The closure can only happen on a session change."
                            ]
                        },
                        {
                            "name": "force_clean_hrmp",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " This extrinsic triggers the cleanup of all the HRMP storage items that",
                                " a para may have. Normally this happens once per session, but this allows",
                                " you to trigger the cleanup immediately for a specific parachain.",
                                "",
                                " Origin must be Root."
                            ]
                        },
                        {
                            "name": "force_process_hrmp_open",
                            "args": [],
                            "docs": [
                                " Force process HRMP open channel requests.",
                                "",
                                " If there are pending HRMP open channel requests, you can use this",
                                " function process all of those requests immediately."
                            ]
                        },
                        {
                            "name": "force_process_hrmp_close",
                            "args": [],
                            "docs": [
                                " Force process HRMP close channel requests.",
                                "",
                                " If there are pending HRMP close channel requests, you can use this",
                                " function process all of those requests immediately."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "OpenChannelRequested",
                            "args": [
                                "ParaId",
                                "ParaId",
                                "u32",
                                "u32"
                            ],
                            "docs": [
                                " Open HRMP channel requested.",
                                " `[sender, recipient, proposed_max_capacity, proposed_max_message_size]`"
                            ]
                        },
                        {
                            "name": "OpenChannelAccepted",
                            "args": [
                                "ParaId",
                                "ParaId"
                            ],
                            "docs": [
                                " Open HRMP channel accepted. `[sender, recipient]`"
                            ]
                        },
                        {
                            "name": "ChannelClosed",
                            "args": [
                                "ParaId",
                                "HrmpChannelId"
                            ],
                            "docs": [
                                " HRMP channel closed. `[by_parachain, channel_id]`"
                            ]
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "OpenHrmpChannelToSelf",
                            "docs": [
                                " The sender tried to open a channel to themselves."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelInvalidRecipient",
                            "docs": [
                                " The recipient is not a valid para."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelZeroCapacity",
                            "docs": [
                                " The requested capacity is zero."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelCapacityExceedsLimit",
                            "docs": [
                                " The requested capacity exceeds the global limit."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelZeroMessageSize",
                            "docs": [
                                " The requested maximum message size is 0."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelMessageSizeExceedsLimit",
                            "docs": [
                                " The open request requested the message size that exceeds the global limit."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelAlreadyExists",
                            "docs": [
                                " The channel already exists"
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelAlreadyRequested",
                            "docs": [
                                " There is already a request to open the same channel."
                            ]
                        },
                        {
                            "name": "OpenHrmpChannelLimitExceeded",
                            "docs": [
                                " The sender already has the maximum number of allowed outbound channels."
                            ]
                        },
                        {
                            "name": "AcceptHrmpChannelDoesntExist",
                            "docs": [
                                " The channel from the sender to the origin doesn't exist."
                            ]
                        },
                        {
                            "name": "AcceptHrmpChannelAlreadyConfirmed",
                            "docs": [
                                " The channel is already confirmed."
                            ]
                        },
                        {
                            "name": "AcceptHrmpChannelLimitExceeded",
                            "docs": [
                                " The recipient already has the maximum number of allowed inbound channels."
                            ]
                        },
                        {
                            "name": "CloseHrmpChannelUnauthorized",
                            "docs": [
                                " The origin tries to close a channel where it is neither the sender nor the recipient."
                            ]
                        },
                        {
                            "name": "CloseHrmpChannelDoesntExist",
                            "docs": [
                                " The channel to be closed doesn't exist."
                            ]
                        },
                        {
                            "name": "CloseHrmpChannelAlreadyUnderway",
                            "docs": [
                                " The channel close request is already requested."
                            ]
                        }
                    ],
                    "index": "51"
                },
                {
                    "name": "ParaSessionInfo",
                    "storage": {
                        "prefix": "ParaSessionInfo",
                        "items": [
                            {
                                "name": "AssignmentKeysUnsafe",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<AssignmentId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Assignment keys for the current session.",
                                    " Note that this API is private due to it being prone to 'off-by-one' at session boundaries.",
                                    " When in doubt, use `Sessions` API instead."
                                ]
                            },
                            {
                                "name": "EarliestStoredSession",
                                "modifier": "Default",
                                "type": {
                                    "plain": "SessionIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The earliest session for which previous session info is stored."
                                ]
                            },
                            {
                                "name": "Sessions",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Identity",
                                        "key": "SessionIndex",
                                        "value": "SessionInfo",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Session information in a rolling window.",
                                    " Should have an entry in range `EarliestStoredSession..=CurrentSessionIndex`.",
                                    " Does not have any entries before the session index in the first session change notification."
                                ]
                            }
                        ]
                    },
                    "calls": null,
                    "events": null,
                    "constants": [],
                    "errors": [],
                    "index": "52"
                },
                {
                    "name": "Registrar",
                    "storage": {
                        "prefix": "Registrar",
                        "items": [
                            {
                                "name": "PendingSwap",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ParaId",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Pending swap operations."
                                ]
                            },
                            {
                                "name": "Paras",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "ParaInfo",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Amount held on deposit for each para and the original depositor.",
                                    "",
                                    " The given account ID is responsible for registering the code and initial head data, but may only do",
                                    " so if it isn't yet registered. (After that, it's up to governance to do so.)"
                                ]
                            },
                            {
                                "name": "NextFreeParaId",
                                "modifier": "Default",
                                "type": {
                                    "plain": "ParaId"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The next free `ParaId`."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "register",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "genesis_head",
                                    "type": "HeadData"
                                },
                                {
                                    "name": "validation_code",
                                    "type": "ValidationCode"
                                }
                            ],
                            "docs": [
                                " Register head data and validation code for a reserved Para Id.",
                                "",
                                " ## Arguments",
                                " - `origin`: Must be called by a `Signed` origin.",
                                " - `id`: The para ID. Must be owned/managed by the `origin` signing account.",
                                " - `genesis_head`: The genesis head data of the parachain/thread.",
                                " - `validation_code`: The initial validation code of the parachain/thread.",
                                "",
                                " ## Deposits/Fees",
                                " The origin signed account must reserve a corresponding deposit for the registration. Anything already",
                                " reserved previously for this para ID is accounted for.",
                                "",
                                " ## Events",
                                " The `Registered` event is emitted in case of success."
                            ]
                        },
                        {
                            "name": "force_register",
                            "args": [
                                {
                                    "name": "who",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "deposit",
                                    "type": "BalanceOf"
                                },
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "genesis_head",
                                    "type": "HeadData"
                                },
                                {
                                    "name": "validation_code",
                                    "type": "ValidationCode"
                                }
                            ],
                            "docs": [
                                " Force the registration of a Para Id on the relay chain.",
                                "",
                                " This function must be called by a Root origin.",
                                "",
                                " The deposit taken can be specified for this registration. Any `ParaId`",
                                " can be registered, including sub-1000 IDs which are System Parachains."
                            ]
                        },
                        {
                            "name": "deregister",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Deregister a Para Id, freeing all data and returning any deposit.",
                                "",
                                " The caller must be Root, the `para` owner, or the `para` itself. The para must be a parathread."
                            ]
                        },
                        {
                            "name": "swap",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "other",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Swap a parachain with another parachain or parathread.",
                                "",
                                " The origin must be Root, the `para` owner, or the `para` itself.",
                                "",
                                " The swap will happen only if there is already an opposite swap pending. If there is not,",
                                " the swap will be stored in the pending swaps map, ready for a later confirmatory swap.",
                                "",
                                " The `ParaId`s remain mapped to the same head data and code so external code can rely on",
                                " `ParaId` to be a long-term identifier of a notional \"parachain\". However, their",
                                " scheduling info (i.e. whether they're a parathread or parachain), auction information",
                                " and the auction deposit are switched."
                            ]
                        },
                        {
                            "name": "force_remove_lock",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Remove a manager lock from a para. This will allow the manager of a",
                                " previously locked para to deregister or swap a para without using governance.",
                                "",
                                " Can only be called by the Root origin."
                            ]
                        },
                        {
                            "name": "reserve",
                            "args": [],
                            "docs": [
                                " Reserve a Para Id on the relay chain.",
                                "",
                                " This function will reserve a new Para Id to be owned/managed by the origin account.",
                                " The origin account is able to register head data and validation code using `register` to create",
                                " a parathread. Using the Slots pallet, a parathread can then be upgraded to get a parachain slot.",
                                "",
                                " ## Arguments",
                                " - `origin`: Must be called by a `Signed` origin. Becomes the manager/owner of the new para ID.",
                                "",
                                " ## Deposits/Fees",
                                " The origin must reserve a deposit of `ParaDeposit` for the registration.",
                                "",
                                " ## Events",
                                " The `Reserved` event is emitted in case of success, which provides the ID reserved for use."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Registered",
                            "args": [
                                "ParaId",
                                "AccountId"
                            ],
                            "docs": []
                        },
                        {
                            "name": "Deregistered",
                            "args": [
                                "ParaId"
                            ],
                            "docs": []
                        },
                        {
                            "name": "Reserved",
                            "args": [
                                "ParaId",
                                "AccountId"
                            ],
                            "docs": []
                        }
                    ],
                    "constants": [
                        {
                            "name": "ParaDeposit",
                            "type": "BalanceOf",
                            "value": "0x0040e59c301200000000000000000000",
                            "docs": [
                                " The deposit to be paid to run a parathread.",
                                " This should include the cost for storing the genesis head and validation code."
                            ]
                        },
                        {
                            "name": "DataDepositPerByte",
                            "type": "BalanceOf",
                            "value": "0x80f0fa02000000000000000000000000",
                            "docs": [
                                " The deposit to be paid per byte stored on chain."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "NotRegistered",
                            "docs": [
                                " The ID is not registered."
                            ]
                        },
                        {
                            "name": "AlreadyRegistered",
                            "docs": [
                                " The ID is already registered."
                            ]
                        },
                        {
                            "name": "NotOwner",
                            "docs": [
                                " The caller is not the owner of this Id."
                            ]
                        },
                        {
                            "name": "CodeTooLarge",
                            "docs": [
                                " Invalid para code size."
                            ]
                        },
                        {
                            "name": "HeadDataTooLarge",
                            "docs": [
                                " Invalid para head data size."
                            ]
                        },
                        {
                            "name": "NotParachain",
                            "docs": [
                                " Para is not a Parachain."
                            ]
                        },
                        {
                            "name": "NotParathread",
                            "docs": [
                                " Para is not a Parathread."
                            ]
                        },
                        {
                            "name": "CannotDeregister",
                            "docs": [
                                " Cannot deregister para"
                            ]
                        },
                        {
                            "name": "CannotDowngrade",
                            "docs": [
                                " Cannot schedule downgrade of parachain to parathread"
                            ]
                        },
                        {
                            "name": "CannotUpgrade",
                            "docs": [
                                " Cannot schedule upgrade of parathread to parachain"
                            ]
                        },
                        {
                            "name": "ParaLocked",
                            "docs": [
                                " Para is locked from manipulation by the manager. Must use parachain or relay chain governance."
                            ]
                        },
                        {
                            "name": "NotReserved",
                            "docs": [
                                " The ID given for registration has not been reserved."
                            ]
                        }
                    ],
                    "index": "60"
                },
                {
                    "name": "Slots",
                    "storage": {
                        "prefix": "Slots",
                        "items": [
                            {
                                "name": "Leases",
                                "modifier": "Default",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "Vec<Option<(AccountId,BalanceOf)>>",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Amounts held on deposit for each (possibly future) leased parachain.",
                                    "",
                                    " The actual amount locked on its behalf by any account at any time is the maximum of the second values",
                                    " of the items in this list whose first value is the account.",
                                    "",
                                    " The first item in the list is the amount locked for the current Lease Period. Following",
                                    " items are for the subsequent lease periods.",
                                    "",
                                    " The default value (an empty list) implies that the parachain no longer exists (or never",
                                    " existed) as far as this pallet is concerned.",
                                    "",
                                    " If a parachain doesn't exist *yet* but is scheduled to exist in the future, then it",
                                    " will be left-padded with one or more `None`s to denote the fact that nothing is held on",
                                    " deposit for the non-existent chain currently, but is held at some point in the future.",
                                    "",
                                    " It is illegal for a `None` value to trail in the list."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "force_lease",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "leaser",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "amount",
                                    "type": "BalanceOf"
                                },
                                {
                                    "name": "period_begin",
                                    "type": "LeasePeriodOf"
                                },
                                {
                                    "name": "period_count",
                                    "type": "LeasePeriodOf"
                                }
                            ],
                            "docs": [
                                " Just a connect into the `lease_out` call, in case Root wants to force some lease to happen",
                                " independently of any other on-chain mechanism to use it.",
                                "",
                                " Can only be called by the Root origin."
                            ]
                        },
                        {
                            "name": "clear_all_leases",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Clear all leases for a Para Id, refunding any deposits back to the original owners.",
                                "",
                                " Can only be called by the Root origin."
                            ]
                        },
                        {
                            "name": "trigger_onboard",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Try to onboard a parachain that has a lease for the current lease period.",
                                "",
                                " This function can be useful if there was some state issue with a para that should",
                                " have onboarded, but was unable to. As long as they have a lease period, we can",
                                " let them onboard from here.",
                                "",
                                " Origin must be signed, but can be called by anyone."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "NewLeasePeriod",
                            "args": [
                                "LeasePeriod"
                            ],
                            "docs": [
                                " A new `[lease_period]` is beginning."
                            ]
                        },
                        {
                            "name": "Leased",
                            "args": [
                                "ParaId",
                                "AccountId",
                                "LeasePeriod",
                                "LeasePeriod",
                                "Balance",
                                "Balance"
                            ],
                            "docs": [
                                " A para has won the right to a continuous set of lease periods as a parachain.",
                                " First balance is any extra amount reserved on top of the para's existing deposit.",
                                " Second balance is the total amount reserved.",
                                " `[parachain_id, leaser, period_begin, period_count, extra_reserved, total_amount]`"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "LeasePeriod",
                            "type": "BlockNumber",
                            "value": "0x00270600",
                            "docs": [
                                " The number of blocks over which a single period lasts."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "ParaNotOnboarding",
                            "docs": [
                                " The parachain ID is not onboarding."
                            ]
                        },
                        {
                            "name": "LeaseError",
                            "docs": [
                                " There was an error with the lease."
                            ]
                        }
                    ],
                    "index": "61"
                },
                {
                    "name": "ParasSudoWrapper",
                    "storage": null,
                    "calls": [
                        {
                            "name": "sudo_schedule_para_initialize",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "genesis",
                                    "type": "ParaGenesisArgs"
                                }
                            ],
                            "docs": [
                                " Schedule a para to be initialized at the start of the next session."
                            ]
                        },
                        {
                            "name": "sudo_schedule_para_cleanup",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Schedule a para to be cleaned up at the start of the next session."
                            ]
                        },
                        {
                            "name": "sudo_schedule_parathread_upgrade",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Upgrade a parathread to a parachain"
                            ]
                        },
                        {
                            "name": "sudo_schedule_parachain_downgrade",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Downgrade a parachain to a parathread"
                            ]
                        },
                        {
                            "name": "sudo_queue_downward_xcm",
                            "args": [
                                {
                                    "name": "id",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "xcm",
                                    "type": "VersionedXcm"
                                }
                            ],
                            "docs": [
                                " Send a downward XCM to the given para.",
                                "",
                                " The given parachain should exist and the payload should not exceed the preconfigured size",
                                " `config.max_downward_message_size`."
                            ]
                        },
                        {
                            "name": "sudo_establish_hrmp_channel",
                            "args": [
                                {
                                    "name": "sender",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "recipient",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "max_capacity",
                                    "type": "u32"
                                },
                                {
                                    "name": "max_message_size",
                                    "type": "u32"
                                }
                            ],
                            "docs": [
                                " Forcefully establish a channel from the sender to the recipient.",
                                "",
                                " This is equivalent to sending an `Hrmp::hrmp_init_open_channel` extrinsic followed by",
                                " `Hrmp::hrmp_accept_open_channel`."
                            ]
                        }
                    ],
                    "events": null,
                    "constants": [],
                    "errors": [
                        {
                            "name": "ParaDoesntExist",
                            "docs": [
                                " The specified parachain or parathread is not registered."
                            ]
                        },
                        {
                            "name": "ParaAlreadyExists",
                            "docs": [
                                " The specified parachain or parathread is already registered."
                            ]
                        },
                        {
                            "name": "ExceedsMaxMessageSize",
                            "docs": [
                                " A DMP message couldn't be sent because it exceeds the maximum size allowed for a downward",
                                " message."
                            ]
                        },
                        {
                            "name": "CouldntCleanup",
                            "docs": [
                                " Could not schedule para cleanup."
                            ]
                        },
                        {
                            "name": "NotParathread",
                            "docs": [
                                " Not a parathread."
                            ]
                        },
                        {
                            "name": "NotParachain",
                            "docs": [
                                " Not a parachain."
                            ]
                        },
                        {
                            "name": "CannotUpgrade",
                            "docs": [
                                " Cannot upgrade parathread."
                            ]
                        },
                        {
                            "name": "CannotDowngrade",
                            "docs": [
                                " Cannot downgrade parachain."
                            ]
                        }
                    ],
                    "index": "62"
                },
                {
                    "name": "Auctions",
                    "storage": {
                        "prefix": "Auctions",
                        "items": [
                            {
                                "name": "AuctionCounter",
                                "modifier": "Default",
                                "type": {
                                    "plain": "AuctionIndex"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " Number of auctions started so far."
                                ]
                            },
                            {
                                "name": "AuctionInfo",
                                "modifier": "Optional",
                                "type": {
                                    "plain": "(LeasePeriodOf,BlockNumber)"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Information relating to the current auction, if there is one.",
                                    "",
                                    " The first item in the tuple is the lease period index that the first of the four",
                                    " contiguous lease periods on auction is for. The second is the block number when the",
                                    " auction will \"begin to end\", i.e. the first block of the Ending Period of the auction."
                                ]
                            },
                            {
                                "name": "ReservedAmounts",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "(AccountId,ParaId)",
                                        "value": "BalanceOf",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Amounts currently reserved in the accounts of the bidders currently winning",
                                    " (sub-)ranges."
                                ]
                            },
                            {
                                "name": "Winning",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "BlockNumber",
                                        "value": "WinningData",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The winning bids for each of the 10 ranges at each sample in the final Ending Period of",
                                    " the current auction. The map's key is the 0-based index into the Sample Size. The",
                                    " first sample of the ending period is 0; the last is `Sample Size - 1`."
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "new_auction",
                            "args": [
                                {
                                    "name": "duration",
                                    "type": "Compact<BlockNumber>"
                                },
                                {
                                    "name": "lease_period_index",
                                    "type": "Compact<LeasePeriodOf>"
                                }
                            ],
                            "docs": [
                                " Create a new auction.",
                                "",
                                " This can only happen when there isn't already an auction in progress and may only be",
                                " called by the root origin. Accepts the `duration` of this auction and the",
                                " `lease_period_index` of the initial lease period of the four that are to be auctioned."
                            ]
                        },
                        {
                            "name": "bid",
                            "args": [
                                {
                                    "name": "para",
                                    "type": "Compact<ParaId>"
                                },
                                {
                                    "name": "auction_index",
                                    "type": "Compact<AuctionIndex>"
                                },
                                {
                                    "name": "first_slot",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "last_slot",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "amount",
                                    "type": "Compact<BalanceOf>"
                                }
                            ],
                            "docs": [
                                " Make a new bid from an account (including a parachain account) for deploying a new",
                                " parachain.",
                                "",
                                " Multiple simultaneous bids from the same bidder are allowed only as long as all active",
                                " bids overlap each other (i.e. are mutually exclusive). Bids cannot be redacted.",
                                "",
                                " - `sub` is the sub-bidder ID, allowing for multiple competing bids to be made by (and",
                                " funded by) the same account.",
                                " - `auction_index` is the index of the auction to bid on. Should just be the present",
                                " value of `AuctionCounter`.",
                                " - `first_slot` is the first lease period index of the range to bid on. This is the",
                                " absolute lease period index value, not an auction-specific offset.",
                                " - `last_slot` is the last lease period index of the range to bid on. This is the",
                                " absolute lease period index value, not an auction-specific offset.",
                                " - `amount` is the amount to bid to be held as deposit for the parachain should the",
                                " bid win. This amount is held throughout the range."
                            ]
                        },
                        {
                            "name": "cancel_auction",
                            "args": [],
                            "docs": [
                                " Cancel an in-progress auction.",
                                "",
                                " Can only be called by Root origin."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "AuctionStarted",
                            "args": [
                                "AuctionIndex",
                                "LeasePeriod",
                                "BlockNumber"
                            ],
                            "docs": [
                                " An auction started. Provides its index and the block number where it will begin to",
                                " close and the first lease period of the quadruplet that is auctioned.",
                                " `[auction_index, lease_period, ending]`"
                            ]
                        },
                        {
                            "name": "AuctionClosed",
                            "args": [
                                "AuctionIndex"
                            ],
                            "docs": [
                                " An auction ended. All funds become unreserved. `[auction_index]`"
                            ]
                        },
                        {
                            "name": "Reserved",
                            "args": [
                                "AccountId",
                                "Balance",
                                "Balance"
                            ],
                            "docs": [
                                " Funds were reserved for a winning bid. First balance is the extra amount reserved.",
                                " Second is the total. `[bidder, extra_reserved, total_amount]`"
                            ]
                        },
                        {
                            "name": "Unreserved",
                            "args": [
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Funds were unreserved since bidder is no longer active. `[bidder, amount]`"
                            ]
                        },
                        {
                            "name": "ReserveConfiscated",
                            "args": [
                                "ParaId",
                                "AccountId",
                                "Balance"
                            ],
                            "docs": [
                                " Someone attempted to lease the same slot twice for a parachain. The amount is held in reserve",
                                " but no parachain slot has been leased.",
                                " `[parachain_id, leaser, amount]`"
                            ]
                        },
                        {
                            "name": "BidAccepted",
                            "args": [
                                "AccountId",
                                "ParaId",
                                "Balance",
                                "LeasePeriod",
                                "LeasePeriod"
                            ],
                            "docs": [
                                " A new bid has been accepted as the current winner.",
                                " `[who, para_id, amount, first_slot, last_slot]`"
                            ]
                        },
                        {
                            "name": "WinningOffset",
                            "args": [
                                "AuctionIndex",
                                "BlockNumber"
                            ],
                            "docs": [
                                " The winning offset was chosen for an auction. This will map into the `Winning` storage map.",
                                " `[auction_index, block_number]`"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "EndingPeriod",
                            "type": "BlockNumber",
                            "value": "0x40190100",
                            "docs": [
                                " The number of blocks over which an auction may be retroactively ended."
                            ]
                        },
                        {
                            "name": "SampleLength",
                            "type": "BlockNumber",
                            "value": "0x14000000",
                            "docs": [
                                " The length of each sample to take during the ending period.",
                                "",
                                " `EndingPeriod` / `SampleLength` = Total # of Samples"
                            ]
                        },
                        {
                            "name": "SlotRangeCount",
                            "type": "u32",
                            "value": "0x24000000",
                            "docs": []
                        },
                        {
                            "name": "LeasePeriodsPerSlot",
                            "type": "u32",
                            "value": "0x08000000",
                            "docs": []
                        }
                    ],
                    "errors": [
                        {
                            "name": "AuctionInProgress",
                            "docs": [
                                " This auction is already in progress."
                            ]
                        },
                        {
                            "name": "LeasePeriodInPast",
                            "docs": [
                                " The lease period is in the past."
                            ]
                        },
                        {
                            "name": "ParaNotRegistered",
                            "docs": [
                                " Para is not registered"
                            ]
                        },
                        {
                            "name": "NotCurrentAuction",
                            "docs": [
                                " Not a current auction."
                            ]
                        },
                        {
                            "name": "NotAuction",
                            "docs": [
                                " Not an auction."
                            ]
                        },
                        {
                            "name": "AuctionEnded",
                            "docs": [
                                " Auction has already ended."
                            ]
                        },
                        {
                            "name": "AlreadyLeasedOut",
                            "docs": [
                                " The para is already leased out for part of this range."
                            ]
                        }
                    ],
                    "index": "63"
                },
                {
                    "name": "Crowdloan",
                    "storage": {
                        "prefix": "Crowdloan",
                        "items": [
                            {
                                "name": "Funds",
                                "modifier": "Optional",
                                "type": {
                                    "map": {
                                        "hasher": "Twox64Concat",
                                        "key": "ParaId",
                                        "value": "FundInfo",
                                        "linked": false
                                    }
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " Info on all of the funds."
                                ]
                            },
                            {
                                "name": "NewRaise",
                                "modifier": "Default",
                                "type": {
                                    "plain": "Vec<ParaId>"
                                },
                                "fallback": "0x00",
                                "docs": [
                                    " The funds that have had additional contributions during the last block. This is used",
                                    " in order to determine which funds should submit new or updated bids."
                                ]
                            },
                            {
                                "name": "EndingsCount",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " The number of auctions that have entered into their ending period so far."
                                ]
                            },
                            {
                                "name": "NextTrieIndex",
                                "modifier": "Default",
                                "type": {
                                    "plain": "u32"
                                },
                                "fallback": "0x00000000",
                                "docs": [
                                    " Tracker for the next available trie index"
                                ]
                            }
                        ]
                    },
                    "calls": [
                        {
                            "name": "create",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                },
                                {
                                    "name": "cap",
                                    "type": "Compact<BalanceOf>"
                                },
                                {
                                    "name": "first_period",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "last_period",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "end",
                                    "type": "Compact<BlockNumber>"
                                },
                                {
                                    "name": "verifier",
                                    "type": "Option<MultiSigner>"
                                }
                            ],
                            "docs": [
                                " Create a new crowdloaning campaign for a parachain slot with the given lease period range.",
                                "",
                                " This applies a lock to your parachain configuration, ensuring that it cannot be changed",
                                " by the parachain manager."
                            ]
                        },
                        {
                            "name": "contribute",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                },
                                {
                                    "name": "value",
                                    "type": "Compact<BalanceOf>"
                                },
                                {
                                    "name": "signature",
                                    "type": "Option<MultiSignature>"
                                }
                            ],
                            "docs": [
                                " Contribute to a crowd sale. This will transfer some balance over to fund a parachain",
                                " slot. It will be withdrawable when the crowdloan has ended and the funds are unused."
                            ]
                        },
                        {
                            "name": "withdraw",
                            "args": [
                                {
                                    "name": "who",
                                    "type": "AccountId"
                                },
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                }
                            ],
                            "docs": [
                                " Withdraw full balance of a specific contributor.",
                                "",
                                " Origin must be signed, but can come from anyone.",
                                "",
                                " The fund must be either in, or ready for, retirement. For a fund to be *in* retirement, then the retirement",
                                " flag must be set. For a fund to be ready for retirement, then:",
                                " - it must not already be in retirement;",
                                " - the amount of raised funds must be bigger than the _free_ balance of the account;",
                                " - and either:",
                                "   - the block number must be at least `end`; or",
                                "   - the current lease period must be greater than the fund's `last_period`.",
                                "",
                                " In this case, the fund's retirement flag is set and its `end` is reset to the current block",
                                " number.",
                                "",
                                " - `who`: The account whose contribution should be withdrawn.",
                                " - `index`: The parachain to whose crowdloan the contribution was made."
                            ]
                        },
                        {
                            "name": "refund",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                }
                            ],
                            "docs": [
                                " Automatically refund contributors of an ended crowdloan.",
                                " Due to weight restrictions, this function may need to be called multiple",
                                " times to fully refund all users. We will refund `RemoveKeysLimit` users at a time.",
                                "",
                                " Origin must be signed, but can come from anyone."
                            ]
                        },
                        {
                            "name": "dissolve",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                }
                            ],
                            "docs": [
                                " Remove a fund after the retirement period has ended and all funds have been returned."
                            ]
                        },
                        {
                            "name": "edit",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "Compact<ParaId>"
                                },
                                {
                                    "name": "cap",
                                    "type": "Compact<BalanceOf>"
                                },
                                {
                                    "name": "first_period",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "last_period",
                                    "type": "Compact<LeasePeriodOf>"
                                },
                                {
                                    "name": "end",
                                    "type": "Compact<BlockNumber>"
                                },
                                {
                                    "name": "verifier",
                                    "type": "Option<MultiSigner>"
                                }
                            ],
                            "docs": [
                                " Edit the configuration for an in-progress crowdloan.",
                                "",
                                " Can only be called by Root origin."
                            ]
                        },
                        {
                            "name": "add_memo",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "ParaId"
                                },
                                {
                                    "name": "memo",
                                    "type": "Bytes"
                                }
                            ],
                            "docs": [
                                " Add an optional memo to an existing crowdloan contribution.",
                                "",
                                " Origin must be Signed, and the user must have contributed to the crowdloan."
                            ]
                        },
                        {
                            "name": "poke",
                            "args": [
                                {
                                    "name": "index",
                                    "type": "ParaId"
                                }
                            ],
                            "docs": [
                                " Poke the fund into `NewRaise`",
                                "",
                                " Origin must be Signed, and the fund has non-zero raise."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Created",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " Create a new crowdloaning campaign. `[fund_index]`"
                            ]
                        },
                        {
                            "name": "Contributed",
                            "args": [
                                "AccountId",
                                "ParaId",
                                "Balance"
                            ],
                            "docs": [
                                " Contributed to a crowd sale. `[who, fund_index, amount]`"
                            ]
                        },
                        {
                            "name": "Withdrew",
                            "args": [
                                "AccountId",
                                "ParaId",
                                "Balance"
                            ],
                            "docs": [
                                " Withdrew full balance of a contributor. `[who, fund_index, amount]`"
                            ]
                        },
                        {
                            "name": "PartiallyRefunded",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " The loans in a fund have been partially dissolved, i.e. there are some left",
                                " over child keys that still need to be killed. `[fund_index]`"
                            ]
                        },
                        {
                            "name": "AllRefunded",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " All loans in a fund have been refunded. `[fund_index]`"
                            ]
                        },
                        {
                            "name": "Dissolved",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " Fund is dissolved. `[fund_index]`"
                            ]
                        },
                        {
                            "name": "HandleBidResult",
                            "args": [
                                "ParaId",
                                "DispatchResult"
                            ],
                            "docs": [
                                " The result of trying to submit a new bid to the Slots pallet."
                            ]
                        },
                        {
                            "name": "Edited",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " The configuration to a crowdloan has been edited. `[fund_index]`"
                            ]
                        },
                        {
                            "name": "MemoUpdated",
                            "args": [
                                "AccountId",
                                "ParaId",
                                "Bytes"
                            ],
                            "docs": [
                                " A memo has been updated. `[who, fund_index, memo]`"
                            ]
                        },
                        {
                            "name": "AddedToNewRaise",
                            "args": [
                                "ParaId"
                            ],
                            "docs": [
                                " A parachain has been moved to `NewRaise`"
                            ]
                        }
                    ],
                    "constants": [
                        {
                            "name": "PalletId",
                            "type": "PalletId",
                            "value": "0x70792f6366756e64",
                            "docs": [
                                " `PalletId` for the crowdloan pallet. An appropriate value could be `PalletId(*b\"py/cfund\")`"
                            ]
                        },
                        {
                            "name": "MinContribution",
                            "type": "BalanceOf",
                            "value": "0x0010a5d4e80000000000000000000000",
                            "docs": [
                                " The minimum amount that may be contributed into a crowdloan. Should almost certainly be at",
                                " least `ExistentialDeposit`."
                            ]
                        },
                        {
                            "name": "RemoveKeysLimit",
                            "type": "u32",
                            "value": "0xf4010000",
                            "docs": [
                                " Max number of storage keys to remove per extrinsic call."
                            ]
                        }
                    ],
                    "errors": [
                        {
                            "name": "FirstPeriodInPast",
                            "docs": [
                                " The current lease period is more than the first lease period."
                            ]
                        },
                        {
                            "name": "FirstPeriodTooFarInFuture",
                            "docs": [
                                " The first lease period needs to at least be less than 3 `max_value`."
                            ]
                        },
                        {
                            "name": "LastPeriodBeforeFirstPeriod",
                            "docs": [
                                " Last lease period must be greater than first lease period."
                            ]
                        },
                        {
                            "name": "LastPeriodTooFarInFuture",
                            "docs": [
                                " The last lease period cannot be more then 3 periods after the first period."
                            ]
                        },
                        {
                            "name": "CannotEndInPast",
                            "docs": [
                                " The campaign ends before the current block number. The end must be in the future."
                            ]
                        },
                        {
                            "name": "EndTooFarInFuture",
                            "docs": [
                                " The end date for this crowdloan is not sensible."
                            ]
                        },
                        {
                            "name": "Overflow",
                            "docs": [
                                " There was an overflow."
                            ]
                        },
                        {
                            "name": "ContributionTooSmall",
                            "docs": [
                                " The contribution was below the minimum, `MinContribution`."
                            ]
                        },
                        {
                            "name": "InvalidParaId",
                            "docs": [
                                " Invalid fund index."
                            ]
                        },
                        {
                            "name": "CapExceeded",
                            "docs": [
                                " Contributions exceed maximum amount."
                            ]
                        },
                        {
                            "name": "ContributionPeriodOver",
                            "docs": [
                                " The contribution period has already ended."
                            ]
                        },
                        {
                            "name": "InvalidOrigin",
                            "docs": [
                                " The origin of this call is invalid."
                            ]
                        },
                        {
                            "name": "NotParachain",
                            "docs": [
                                " This crowdloan does not correspond to a parachain."
                            ]
                        },
                        {
                            "name": "LeaseActive",
                            "docs": [
                                " This parachain lease is still active and retirement cannot yet begin."
                            ]
                        },
                        {
                            "name": "BidOrLeaseActive",
                            "docs": [
                                " This parachain's bid or lease is still active and withdraw cannot yet begin."
                            ]
                        },
                        {
                            "name": "FundNotEnded",
                            "docs": [
                                " The crowdloan has not yet ended."
                            ]
                        },
                        {
                            "name": "NoContributions",
                            "docs": [
                                " There are no contributions stored in this crowdloan."
                            ]
                        },
                        {
                            "name": "NotReadyToDissolve",
                            "docs": [
                                " The crowdloan is not ready to dissolve. Potentially still has a slot or in retirement period."
                            ]
                        },
                        {
                            "name": "InvalidSignature",
                            "docs": [
                                " Invalid signature."
                            ]
                        },
                        {
                            "name": "MemoTooLarge",
                            "docs": [
                                " The provided memo is too large."
                            ]
                        },
                        {
                            "name": "AlreadyInNewRaise",
                            "docs": [
                                " The fund is already in `NewRaise`"
                            ]
                        },
                        {
                            "name": "VrfDelayInProgress",
                            "docs": [
                                " No contributions allowed during the VRF delay"
                            ]
                        }
                    ],
                    "index": "64"
                },
                {
                    "name": "XcmPallet",
                    "storage": {
                        "prefix": "XcmPallet",
                        "items": []
                    },
                    "calls": [
                        {
                            "name": "send",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "MultiLocation"
                                },
                                {
                                    "name": "message",
                                    "type": "Xcm"
                                }
                            ],
                            "docs": []
                        },
                        {
                            "name": "teleport_assets",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "MultiLocation"
                                },
                                {
                                    "name": "beneficiary",
                                    "type": "MultiLocation"
                                },
                                {
                                    "name": "assets",
                                    "type": "Vec<MultiAsset>"
                                },
                                {
                                    "name": "dest_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Teleport some assets from the local chain to some destination chain.",
                                "",
                                " Fee payment on the destination side is made from the first asset listed in the `assets` vector.",
                                "",
                                " - `origin`: Must be capable of withdrawing the `assets` and executing XCM.",
                                " - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send",
                                "   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain.",
                                " - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be",
                                "   an `AccountId32` value.",
                                " - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the",
                                "   `dest` side.",
                                " - `dest_weight`: Equal to the total weight on `dest` of the XCM message",
                                "   `Teleport { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."
                            ]
                        },
                        {
                            "name": "reserve_transfer_assets",
                            "args": [
                                {
                                    "name": "dest",
                                    "type": "MultiLocation"
                                },
                                {
                                    "name": "beneficiary",
                                    "type": "MultiLocation"
                                },
                                {
                                    "name": "assets",
                                    "type": "Vec<MultiAsset>"
                                },
                                {
                                    "name": "dest_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Transfer some assets from the local chain to the sovereign account of a destination chain and forward",
                                " a notification XCM.",
                                "",
                                " Fee payment on the destination side is made from the first asset listed in the `assets` vector.",
                                "",
                                " - `origin`: Must be capable of withdrawing the `assets` and executing XCM.",
                                " - `dest`: Destination context for the assets. Will typically be `X2(Parent, Parachain(..))` to send",
                                "   from parachain to parachain, or `X1(Parachain(..))` to send from relay to parachain.",
                                " - `beneficiary`: A beneficiary location for the assets in the context of `dest`. Will generally be",
                                "   an `AccountId32` value.",
                                " - `assets`: The assets to be withdrawn. This should include the assets used to pay the fee on the",
                                "   `dest` side.",
                                " - `dest_weight`: Equal to the total weight on `dest` of the XCM message",
                                "   `ReserveAssetDeposit { assets, effects: [ BuyExecution{..}, DepositAsset{..} ] }`."
                            ]
                        },
                        {
                            "name": "execute",
                            "args": [
                                {
                                    "name": "message",
                                    "type": "Xcm"
                                },
                                {
                                    "name": "max_weight",
                                    "type": "Weight"
                                }
                            ],
                            "docs": [
                                " Execute an XCM message from a local, signed, origin.",
                                "",
                                " An event is deposited indicating whether `msg` could be executed completely or only",
                                " partially.",
                                "",
                                " No more than `max_weight` will be used in its attempted execution. If this is less than the",
                                " maximum amount of weight that the message could take to be executed, then no execution",
                                " attempt will be made.",
                                "",
                                " NOTE: A successful return to this does *not* imply that the `msg` was executed successfully",
                                " to completion; only that *some* of it was executed."
                            ]
                        }
                    ],
                    "events": [
                        {
                            "name": "Attempted",
                            "args": [
                                "Outcome"
                            ],
                            "docs": []
                        },
                        {
                            "name": "Sent",
                            "args": [
                                "MultiLocation",
                                "MultiLocation",
                                "Xcm"
                            ],
                            "docs": []
                        }
                    ],
                    "constants": [],
                    "errors": [
                        {
                            "name": "Unreachable",
                            "docs": []
                        },
                        {
                            "name": "SendFailure",
                            "docs": []
                        },
                        {
                            "name": "Filtered",
                            "docs": [
                                " The message execution fails the filter."
                            ]
                        },
                        {
                            "name": "UnweighableMessage",
                            "docs": [
                                " The message's weight could not be determined."
                            ]
                        },
                        {
                            "name": "Empty",
                            "docs": [
                                " The assets to be sent are empty."
                            ]
                        },
                        {
                            "name": "CannotReanchor",
                            "docs": [
                                " Could not reanchor the assets to declare the fees for the destination chain."
                            ]
                        },
                        {
                            "name": "TooManyAssets",
                            "docs": [
                                " Too many assets have been attempted for transfer."
                            ]
                        }
                    ],
                    "index": "99"
                }
            ],
            "extrinsic": {
                "version": "4",
                "signedExtensions": [
                    "CheckSpecVersion",
                    "CheckTxVersion",
                    "CheckGenesis",
                    "CheckMortality",
                    "CheckNonce",
                    "CheckWeight",
                    "ChargeTransactionPayment"
                ]
            }
        }
    }
}
