From c963d0458c5303c9696992c3b360be6b7349f523 Mon Sep 17 00:00:00 2001
From: bgallois <benjamin@gallois.cc>
Date: Wed, 3 Apr 2024 14:06:07 +0200
Subject: [PATCH] revert gen-doc changes

---
 .gitignore                                    |    3 -
 README.md                                     |    3 +
 docs/api/runtime-calls.md                     | 2385 +++++++++++++++++
 docs/api/runtime-errors.md                    | 1476 ++++++++++
 docs/api/runtime-events.md                    | 1949 ++++++++++++++
 xtask/res/templates/runtime-calls-category.md |    3 +-
 xtask/src/gen_doc.rs                          |   10 +-
 7 files changed, 5818 insertions(+), 11 deletions(-)
 create mode 100644 docs/api/runtime-calls.md
 create mode 100644 docs/api/runtime-errors.md
 create mode 100644 docs/api/runtime-events.md

diff --git a/.gitignore b/.gitignore
index 5026445d3..335209047 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,6 +27,3 @@ tmp
 
 # Log files
 *.log
-
-# Autogenerated docs
-docs/api/doc
diff --git a/README.md b/README.md
index 6dd7339ee..8d6b38def 100644
--- a/README.md
+++ b/README.md
@@ -21,6 +21,9 @@
 - [docs](./docs/)
   - [api](./docs/api/)
     - [manual](./docs/api/manual.md)
+    - [runtime-calls](./docs/api/runtime-calls.md) the calls you can submit through the RPC API
+    - [runtime-errors](./docs/api/runtime-errors.md) the errors you can get submitting a call
+    - [runtime-events](./docs/api/runtime-events.md) the events you can get submitting a call
   - [dev](./docs/dev/)
     - [beginner-walkthrough](./docs/dev/beginner-walkthrough.md)
     - [git-conventions](./docs/dev/git-conventions.md)
diff --git a/docs/api/runtime-calls.md b/docs/api/runtime-calls.md
new file mode 100644
index 000000000..a1bc106c1
--- /dev/null
+++ b/docs/api/runtime-calls.md
@@ -0,0 +1,2385 @@
+# Runtime calls
+
+Calls are categorized according to the dispatch origin they require:
+
+1. **User calls**: the dispatch origin for this kind of call must be signed by
+the transactor. This is the only call category that can be submitted with an extrinsic.
+1. **Root calls**: This kind of call requires a special origin that can only be invoked
+through on-chain governance mechanisms.
+1. **Inherent calls**: This kind of call is invoked by the author of the block itself
+(usually automatically by the node).
+1. **Disabled calls**: These calls can not be called directly, they are reserved for internal use by other runtime calls.
+
+
+## User calls
+
+There are **86** user calls from **21** pallets.
+
+### Account - 1
+
+#### unlink_identity - 0
+
+<details><summary><code>unlink_identity()</code></summary>
+
+Taking 0.0107 % of a block.
+
+```rust
+```
+</details>
+
+
+unlink the identity associated with the account
+
+### Scheduler - 2
+
+#### schedule - 0
+
+<details><summary><code>schedule(when, maybe_periodic, priority, call)</code></summary>
+
+Taking 0.0117 % of a block.
+
+```rust
+when: BlockNumberFor<T>
+maybe_periodic: Option<schedule::Period<BlockNumberFor<T>>>
+priority: schedule::Priority
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Anonymously schedule a task.
+
+#### cancel - 1
+
+<details><summary><code>cancel(when, index)</code></summary>
+
+Taking 0.0239 % of a block.
+
+```rust
+when: BlockNumberFor<T>
+index: u32
+```
+</details>
+
+
+Cancel an anonymously scheduled task.
+
+#### schedule_named - 2
+
+<details><summary><code>schedule_named(id, when, maybe_periodic, priority, call)</code></summary>
+
+Taking 0.0189 % of a block.
+
+```rust
+id: TaskName
+when: BlockNumberFor<T>
+maybe_periodic: Option<schedule::Period<BlockNumberFor<T>>>
+priority: schedule::Priority
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Schedule a named task.
+
+#### cancel_named - 3
+
+<details><summary><code>cancel_named(id)</code></summary>
+
+Taking 0.0252 % of a block.
+
+```rust
+id: TaskName
+```
+</details>
+
+
+Cancel a named scheduled task.
+
+#### schedule_after - 4
+
+<details><summary><code>schedule_after(after, maybe_periodic, priority, call)</code></summary>
+
+No weight available.
+
+```rust
+after: BlockNumberFor<T>
+maybe_periodic: Option<schedule::Period<BlockNumberFor<T>>>
+priority: schedule::Priority
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Anonymously schedule a task after a delay.
+
+#### schedule_named_after - 5
+
+<details><summary><code>schedule_named_after(id, after, maybe_periodic, priority, call)</code></summary>
+
+No weight available.
+
+```rust
+id: TaskName
+after: BlockNumberFor<T>
+maybe_periodic: Option<schedule::Period<BlockNumberFor<T>>>
+priority: schedule::Priority
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Schedule a named task after a delay.
+
+#### set_retry - 6
+
+<details><summary><code>set_retry(task, retries, period)</code></summary>
+
+Taking 0.0115 % of a block.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+retries: u8
+period: BlockNumberFor<T>
+```
+</details>
+
+
+Set a retry configuration for a task so that, in case its scheduled run fails, it will
+be retried after `period` blocks, for a total amount of `retries` retries or until it
+succeeds.
+
+Tasks which need to be scheduled for a retry are still subject to weight metering and
+agenda space, same as a regular task. If a periodic task fails, it will be scheduled
+normally while the task is retrying.
+
+Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic
+clones of the original task. Their retry configuration will be derived from the
+original task's configuration, but will have a lower value for `remaining` than the
+original `total_retries`.
+
+#### set_retry_named - 7
+
+<details><summary><code>set_retry_named(id, retries, period)</code></summary>
+
+Taking 0.0129 % of a block.
+
+```rust
+id: TaskName
+retries: u8
+period: BlockNumberFor<T>
+```
+</details>
+
+
+Set a retry configuration for a named task so that, in case its scheduled run fails, it
+will be retried after `period` blocks, for a total amount of `retries` retries or until
+it succeeds.
+
+Tasks which need to be scheduled for a retry are still subject to weight metering and
+agenda space, same as a regular task. If a periodic task fails, it will be scheduled
+normally while the task is retrying.
+
+Tasks scheduled as a result of a retry for a periodic task are unnamed, non-periodic
+clones of the original task. Their retry configuration will be derived from the
+original task's configuration, but will have a lower value for `remaining` than the
+original `total_retries`.
+
+#### cancel_retry - 8
+
+<details><summary><code>cancel_retry(task)</code></summary>
+
+Taking 0.0115 % of a block.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+```
+</details>
+
+
+Removes the retry configuration of a task.
+
+#### cancel_retry_named - 9
+
+<details><summary><code>cancel_retry_named(id)</code></summary>
+
+Taking 0.0128 % of a block.
+
+```rust
+id: TaskName
+```
+</details>
+
+
+Cancel the retry configuration of a named task.
+
+### Babe - 3
+
+#### report_equivocation - 0
+
+<details><summary><code>report_equivocation(equivocation_proof, key_owner_proof)</code></summary>
+
+No weight available.
+
+```rust
+equivocation_proof: Box<EquivocationProof<HeaderFor<T>>>
+key_owner_proof: T::KeyOwnerProof
+```
+</details>
+
+
+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.
+
+### Balances - 6
+
+#### transfer_allow_death - 0
+
+<details><summary><code>transfer_allow_death(dest, value)</code></summary>
+
+Taking 0.0196 % of a block.
+
+```rust
+dest: AccountIdLookupOf<T>
+value: T::Balance
+```
+</details>
+
+
+Transfer some liquid free balance to another account.
+
+`transfer_allow_death` will set the `FreeBalance` of the sender and receiver.
+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.
+
+#### transfer_keep_alive - 3
+
+<details><summary><code>transfer_keep_alive(dest, value)</code></summary>
+
+Taking 0.012 % of a block.
+
+```rust
+dest: AccountIdLookupOf<T>
+value: T::Balance
+```
+</details>
+
+
+Same as the [`transfer_allow_death`] call, but with a check that the transfer will not
+kill the origin account.
+
+99% of the time you want [`transfer_allow_death`] instead.
+
+[`transfer_allow_death`]: struct.Pallet.html#method.transfer
+
+#### transfer_all - 4
+
+<details><summary><code>transfer_all(dest, keep_alive)</code></summary>
+
+Taking 0.0123 % of a block.
+
+```rust
+dest: AccountIdLookupOf<T>
+keep_alive: bool
+```
+</details>
+
+
+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).
+
+#### force_set_balance - 8
+
+<details><summary><code>force_set_balance(who, new_free)</code></summary>
+
+No weight available.
+
+```rust
+who: AccountIdLookupOf<T>
+new_free: T::Balance
+```
+</details>
+
+
+Upgrade a specified account.
+
+- `origin`: Must be `Signed`.
+- `who`: The account to be upgraded.
+
+This will waive the transaction fee if at least all but 10% of the accounts needed to
+be upgraded. (We let some not have to be upgraded just in order to allow for the
+possibililty of churn).
+Set the regular balance of a given account.
+
+The dispatch origin for this call is `root`.
+
+#### force_adjust_total_issuance - 9
+
+<details><summary><code>force_adjust_total_issuance(direction, delta)</code></summary>
+
+Taking 0.0039 % of a block.
+
+```rust
+direction: AdjustmentDirection
+delta: T::Balance
+```
+</details>
+
+
+Adjust the total issuance in a saturating way.
+
+Can only be called by root and always needs a positive `delta`.
+
+# Example
+
+### OneshotAccount - 7
+
+#### create_oneshot_account - 0
+
+<details><summary><code>create_oneshot_account(dest, value)</code></summary>
+
+Taking 0.0113 % of a block.
+
+```rust
+dest: <T::Lookup as StaticLookup>::Source
+value: <T::Currency as Currency<T::AccountId>>::Balance
+```
+</details>
+
+
+Create an account that can only be consumed once
+
+- `dest`: The oneshot account to be created.
+- `balance`: The balance to be transfered to this oneshot account.
+
+Origin account is kept alive.
+
+#### consume_oneshot_account - 1
+
+<details><summary><code>consume_oneshot_account(block_height, dest)</code></summary>
+
+Taking 0.0196 % of a block.
+
+```rust
+block_height: BlockNumberFor<T>
+dest: Account<<T::Lookup as StaticLookup>::Source>
+```
+</details>
+
+
+Consume a oneshot account and transfer its balance to an account
+
+- `block_height`: Must be a recent block number. The limit is `BlockHashCount` in the past. (this is to prevent replay attacks)
+- `dest`: The destination account.
+- `dest_is_oneshot`: If set to `true`, then a oneshot account is created at `dest`. Else, `dest` has to be an existing account.
+
+#### consume_oneshot_account_with_remaining - 2
+
+<details><summary><code>consume_oneshot_account_with_remaining(block_height, dest, remaining_to, balance)</code></summary>
+
+Taking 0.0269 % of a block.
+
+```rust
+block_height: BlockNumberFor<T>
+dest: Account<<T::Lookup as StaticLookup>::Source>
+remaining_to: Account<<T::Lookup as StaticLookup>::Source>
+balance: <T::Currency as Currency<T::AccountId>>::Balance
+```
+</details>
+
+
+Consume a oneshot account then transfer some amount to an account,
+and the remaining amount to another account.
+
+- `block_height`: Must be a recent block number.
+  The limit is `BlockHashCount` in the past. (this is to prevent replay attacks)
+- `dest`: The destination account.
+- `dest_is_oneshot`: If set to `true`, then a oneshot account is created at `dest`. Else, `dest` has to be an existing account.
+- `dest2`: The second destination account.
+- `dest2_is_oneshot`: If set to `true`, then a oneshot account is created at `dest2`. Else, `dest2` has to be an existing account.
+- `balance1`: The amount transfered to `dest`, the leftover being transfered to `dest2`.
+
+### SmithMembers - 10
+
+#### invite_smith - 0
+
+<details><summary><code>invite_smith(receiver)</code></summary>
+
+Taking 0.0239 % of a block.
+
+```rust
+receiver: T::IdtyIndex
+```
+</details>
+
+
+Invite a WoT member to try becoming a Smith
+
+#### accept_invitation - 1
+
+<details><summary><code>accept_invitation()</code></summary>
+
+Taking 0.0122 % of a block.
+
+```rust
+```
+</details>
+
+
+Accept an invitation (must have been invited first)
+
+#### certify_smith - 2
+
+<details><summary><code>certify_smith(receiver)</code></summary>
+
+Taking 0.0287 % of a block.
+
+```rust
+receiver: T::IdtyIndex
+```
+</details>
+
+
+Certify an invited smith which can lead the certified to become a Smith
+
+### AuthorityMembers - 11
+
+#### go_offline - 0
+
+<details><summary><code>go_offline()</code></summary>
+
+Taking 0.0167 % of a block.
+
+```rust
+```
+</details>
+
+
+ask to leave the set of validators two sessions after
+
+#### go_online - 1
+
+<details><summary><code>go_online()</code></summary>
+
+Taking 0.0192 % of a block.
+
+```rust
+```
+</details>
+
+
+ask to join the set of validators two sessions after
+
+#### set_session_keys - 2
+
+<details><summary><code>set_session_keys(keys)</code></summary>
+
+Taking 0.0254 % of a block.
+
+```rust
+keys: T::Keys
+```
+</details>
+
+
+declare new session keys to replace current ones
+
+#### remove_member_from_blacklist - 4
+
+<details><summary><code>remove_member_from_blacklist(member_id)</code></summary>
+
+Taking 0.0109 % of a block.
+
+```rust
+member_id: T::MemberId
+```
+</details>
+
+
+remove an identity from the blacklist
+
+### Grandpa - 16
+
+#### report_equivocation - 0
+
+<details><summary><code>report_equivocation(equivocation_proof, key_owner_proof)</code></summary>
+
+No weight available.
+
+```rust
+equivocation_proof: Box<EquivocationProof<T::Hash, BlockNumberFor<T>>>
+key_owner_proof: T::KeyOwnerProof
+```
+</details>
+
+
+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.
+
+### UpgradeOrigin - 21
+
+#### dispatch_as_root_unchecked_weight - 1
+
+<details><summary><code>dispatch_as_root_unchecked_weight(call, weight)</code></summary>
+
+No weight available.
+
+```rust
+call: Box<<T as Config>::Call>
+weight: Weight
+```
+</details>
+
+
+Dispatches a function call from root origin.
+This function does not check the weight of the call, and instead allows the
+caller to specify the weight of the call.
+
+The weight of this call is defined by the caller.
+
+### Preimage - 22
+
+#### note_preimage - 0
+
+<details><summary><code>note_preimage(bytes)</code></summary>
+
+Taking 0.2893 % of a block.
+
+```rust
+bytes: Vec<u8>
+```
+</details>
+
+
+Register a preimage on-chain.
+
+If the preimage was previously requested, no fees or deposits are taken for providing
+the preimage. Otherwise, a deposit is taken proportional to the size of the preimage.
+
+#### unnote_preimage - 1
+
+<details><summary><code>unnote_preimage(hash)</code></summary>
+
+Taking 0.0186 % of a block.
+
+```rust
+hash: T::Hash
+```
+</details>
+
+
+Clear an unrequested preimage from the runtime storage.
+
+If `len` is provided, then it will be a much cheaper operation.
+
+- `hash`: The hash of the preimage to be removed from the store.
+- `len`: The length of the preimage of `hash`.
+
+#### request_preimage - 2
+
+<details><summary><code>request_preimage(hash)</code></summary>
+
+Taking 0.0127 % of a block.
+
+```rust
+hash: T::Hash
+```
+</details>
+
+
+Request a preimage be uploaded to the chain without paying any fees or deposits.
+
+If the preimage requests has already been provided on-chain, we unreserve any deposit
+a user may have paid, and take the control of the preimage out of their hands.
+
+#### unrequest_preimage - 3
+
+<details><summary><code>unrequest_preimage(hash)</code></summary>
+
+Taking 0.0185 % of a block.
+
+```rust
+hash: T::Hash
+```
+</details>
+
+
+Clear a previously made request for a preimage.
+
+NOTE: THIS MUST NOT BE CALLED ON `hash` MORE TIMES THAN `request_preimage`.
+
+#### ensure_updated - 4
+
+<details><summary><code>ensure_updated(hashes)</code></summary>
+
+Taking 20.7987 % of a block.
+
+```rust
+hashes: Vec<T::Hash>
+```
+</details>
+
+
+Ensure that the a bulk of pre-images is upgraded.
+
+The caller pays no fee if at least 90% of pre-images were successfully updated.
+
+### TechnicalCommittee - 23
+
+#### execute - 1
+
+<details><summary><code>execute(proposal, length_bound)</code></summary>
+
+Taking 0.0052 % of a block.
+
+```rust
+proposal: Box<<T as Config<I>>::Proposal>
+length_bound: u32
+```
+</details>
+
+
+Dispatch a proposal from a member using the `Member` origin.
+
+Origin must be a member of the collective.
+
+**Complexity**:
+- `O(B + M + P)` where:
+- `B` is `proposal` size in bytes (length-fee-bounded)
+- `M` members-count (code-bounded)
+- `P` complexity of dispatching `proposal`
+
+#### propose - 2
+
+<details><summary><code>propose(threshold, proposal, length_bound)</code></summary>
+
+No weight available.
+
+```rust
+threshold: MemberCount
+proposal: Box<<T as Config<I>>::Proposal>
+length_bound: u32
+```
+</details>
+
+
+Add a new proposal to either be voted on or executed directly.
+
+Requires the sender to be member.
+
+`threshold` determines whether `proposal` is executed directly (`threshold < 2`)
+or put up for voting.
+
+**Complexity**
+- `O(B + M + P1)` or `O(B + M + P2)` where:
+  - `B` is `proposal` size in bytes (length-fee-bounded)
+  - `M` is members-count (code- and governance-bounded)
+  - branching is influenced by `threshold` where:
+    - `P1` is proposal execution complexity (`threshold < 2`)
+    - `P2` is proposals-count (code-bounded) (`threshold >= 2`)
+
+#### vote - 3
+
+<details><summary><code>vote(proposal, index, approve)</code></summary>
+
+Taking 0.0125 % of a block.
+
+```rust
+proposal: T::Hash
+index: ProposalIndex
+approve: bool
+```
+</details>
+
+
+Add an aye or nay vote for the sender to the given proposal.
+
+Requires the sender to be a member.
+
+Transaction fees will be waived if the member is voting on any particular proposal
+for the first time and the call is successful. Subsequent vote changes will charge a
+fee.
+**Complexity**
+- `O(M)` where `M` is members-count (code- and governance-bounded)
+
+#### close - 6
+
+<details><summary><code>close(proposal_hash, index, proposal_weight_bound, length_bound)</code></summary>
+
+No weight available.
+
+```rust
+proposal_hash: T::Hash
+index: ProposalIndex
+proposal_weight_bound: Weight
+length_bound: u32
+```
+</details>
+
+
+Close a vote that is either approved, disapproved or whose voting period has ended.
+
+May be called by any signed account in order to finish voting and close the proposal.
+
+If called before the end of the voting period it will only close the vote if it is
+has enough votes to be approved or disapproved.
+
+If called after the end of the voting period abstentions are counted as rejections
+unless there is a prime member set and the prime member cast an approval.
+
+If the close operation completes successfully with disapproval, the transaction fee will
+be waived. Otherwise execution of the approved operation will be charged to the caller.
+
++ `proposal_weight_bound`: The maximum amount of weight consumed by executing the closed
+proposal.
++ `length_bound`: The upper bound for the length of the proposal in storage. Checked via
+`storage::read` so it is `size_of::<u32>() == 4` larger than the pure length.
+
+**Complexity**
+- `O(B + M + P1 + P2)` where:
+  - `B` is `proposal` size in bytes (length-fee-bounded)
+  - `M` is members-count (code- and governance-bounded)
+  - `P1` is the complexity of `proposal` preimage.
+  - `P2` is proposal-count (code-bounded)
+
+### UniversalDividend - 30
+
+#### claim_uds - 0
+
+<details><summary><code>claim_uds()</code></summary>
+
+Taking 0.022 % of a block.
+
+```rust
+```
+</details>
+
+
+Claim Universal Dividends
+
+#### transfer_ud - 1
+
+<details><summary><code>transfer_ud(dest, value)</code></summary>
+
+Taking 0.0208 % of a block.
+
+```rust
+dest: <T::Lookup as StaticLookup>::Source
+value: BalanceOf<T>
+```
+</details>
+
+
+Transfer some liquid free balance to another account, in milliUD.
+
+#### transfer_ud_keep_alive - 2
+
+<details><summary><code>transfer_ud_keep_alive(dest, value)</code></summary>
+
+Taking 0.0131 % of a block.
+
+```rust
+dest: <T::Lookup as StaticLookup>::Source
+value: BalanceOf<T>
+```
+</details>
+
+
+Transfer some liquid free balance to another account, in milliUD.
+
+### Identity - 41
+
+#### create_identity - 0
+
+<details><summary><code>create_identity(owner_key)</code></summary>
+
+Taking 0.0906 % of a block.
+
+```rust
+owner_key: T::AccountId
+```
+</details>
+
+
+Create an identity for an existing account
+
+- `owner_key`: the public key corresponding to the identity to be created
+
+The origin must be allowed to create an identity.
+
+#### confirm_identity - 1
+
+<details><summary><code>confirm_identity(idty_name)</code></summary>
+
+Taking 0.0337 % of a block.
+
+```rust
+idty_name: IdtyName
+```
+</details>
+
+
+Confirm the creation of an identity and give it a name
+
+- `idty_name`: the name uniquely associated to this identity. Must match the validation rules defined by the runtime.
+
+The identity must have been created using `create_identity` before it can be confirmed.
+
+#### change_owner_key - 3
+
+<details><summary><code>change_owner_key(new_key, new_key_sig)</code></summary>
+
+Taking 0.0429 % of a block.
+
+```rust
+new_key: T::AccountId
+new_key_sig: T::Signature
+```
+</details>
+
+
+Change identity owner key.
+
+- `new_key`: the new owner key.
+- `new_key_sig`: the signature of the encoded form of `IdtyIndexAccountIdPayload`.
+                 Must be signed by `new_key`.
+
+The origin should be the old identity owner key.
+
+#### revoke_identity - 4
+
+<details><summary><code>revoke_identity(idty_index, revocation_key, revocation_sig)</code></summary>
+
+Taking 0.0413 % of a block.
+
+```rust
+idty_index: T::IdtyIndex
+revocation_key: T::AccountId
+revocation_sig: T::Signature
+```
+</details>
+
+
+Revoke an identity using a revocation signature
+
+- `idty_index`: the index of the identity to be revoked.
+- `revocation_key`: the key used to sign the revocation payload.
+- `revocation_sig`: the signature of the encoded form of `RevocationPayload`.
+                    Must be signed by `revocation_key`.
+
+Any signed origin can execute this call.
+
+#### fix_sufficients - 7
+
+<details><summary><code>fix_sufficients(owner_key, inc)</code></summary>
+
+Taking 0.0108 % of a block.
+
+```rust
+owner_key: T::AccountId
+inc: bool
+```
+</details>
+
+
+change sufficient ref count for given key
+
+#### link_account - 8
+
+<details><summary><code>link_account(account_id, payload_sig)</code></summary>
+
+Taking 0.0151 % of a block.
+
+```rust
+account_id: T::AccountId
+payload_sig: T::Signature
+```
+</details>
+
+
+Link an account to an identity
+
+### Certification - 43
+
+#### add_cert - 0
+
+<details><summary><code>add_cert(receiver)</code></summary>
+
+Taking 0.037 % of a block.
+
+```rust
+receiver: T::IdtyIndex
+```
+</details>
+
+
+Add a new certification.
+
+#### renew_cert - 3
+
+<details><summary><code>renew_cert(receiver)</code></summary>
+
+Taking 0.03 % of a block.
+
+```rust
+receiver: T::IdtyIndex
+```
+</details>
+
+
+Renew an existing certification.
+
+#### del_cert - 1
+
+<details><summary><code>del_cert(issuer, receiver)</code></summary>
+
+Taking 0.0265 % of a block.
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+</details>
+
+
+remove a certification (only root)
+
+#### remove_all_certs_received_by - 2
+
+<details><summary><code>remove_all_certs_received_by(idty_index)</code></summary>
+
+Taking 7.3619 % of a block.
+
+```rust
+idty_index: T::IdtyIndex
+```
+</details>
+
+
+remove all certifications received by an identity (only root)
+
+### Distance - 44
+
+#### request_distance_evaluation - 0
+
+<details><summary><code>request_distance_evaluation()</code></summary>
+
+Taking 0.0327 % of a block.
+
+```rust
+```
+</details>
+
+
+Request caller identity to be evaluated
+positive evaluation will result in claim/renew membership
+negative evaluation will result in slash for caller
+
+#### request_distance_evaluation_for - 4
+
+<details><summary><code>request_distance_evaluation_for(target)</code></summary>
+
+Taking 0.0339 % of a block.
+
+```rust
+target: T::IdtyIndex
+```
+</details>
+
+
+Request target identity to be evaluated
+only possible for unvalidated identity
+
+#### update_evaluation - 1
+
+<details><summary><code>update_evaluation(computation_result)</code></summary>
+
+Taking 0.0347 % of a block.
+
+```rust
+computation_result: ComputationResult
+```
+</details>
+
+
+(Inherent) Push an evaluation result to the pool
+this is called internally by validators (= inherent)
+
+#### force_update_evaluation - 2
+
+<details><summary><code>force_update_evaluation(evaluator, computation_result)</code></summary>
+
+Taking 0.0184 % of a block.
+
+```rust
+evaluator: <T as frame_system::Config>::AccountId
+computation_result: ComputationResult
+```
+</details>
+
+
+Force push an evaluation result to the pool
+
+#### force_valid_distance_status - 3
+
+<details><summary><code>force_valid_distance_status(identity)</code></summary>
+
+Taking 0.0277 % of a block.
+
+```rust
+identity: <T as pallet_identity::Config>::IdtyIndex
+```
+</details>
+
+
+Force set the distance evaluation status of an identity
+
+### AtomicSwap - 50
+
+#### create_swap - 0
+
+<details><summary><code>create_swap(target, hashed_proof, action, duration)</code></summary>
+
+No weight available.
+
+```rust
+target: T::AccountId
+hashed_proof: HashedProof
+action: T::SwapAction
+duration: BlockNumberFor<T>
+```
+</details>
+
+
+Register a new atomic swap, declaring an intention to send funds from origin to target
+on the current blockchain. The target can claim the fund using the revealed proof. If
+the fund is not claimed after `duration` blocks, then the sender can cancel the swap.
+
+The dispatch origin for this call must be _Signed_.
+
+- `target`: Receiver of the atomic swap.
+- `hashed_proof`: The blake2_256 hash of the secret proof.
+- `balance`: Funds to be sent from origin.
+- `duration`: Locked duration of the atomic swap. For safety reasons, it is recommended
+  that the revealer uses a shorter duration than the counterparty, to prevent the
+  situation where the revealer reveals the proof too late around the end block.
+
+#### claim_swap - 1
+
+<details><summary><code>claim_swap(proof, action)</code></summary>
+
+No weight available.
+
+```rust
+proof: Vec<u8>
+action: T::SwapAction
+```
+</details>
+
+
+Claim an atomic swap.
+
+The dispatch origin for this call must be _Signed_.
+
+- `proof`: Revealed proof of the claim.
+- `action`: Action defined in the swap, it must match the entry in blockchain. Otherwise
+  the operation fails. This is used for weight calculation.
+
+#### cancel_swap - 2
+
+<details><summary><code>cancel_swap(target, hashed_proof)</code></summary>
+
+No weight available.
+
+```rust
+target: T::AccountId
+hashed_proof: HashedProof
+```
+</details>
+
+
+Cancel an atomic swap. Only possible after the originally set duration has passed.
+
+The dispatch origin for this call must be _Signed_.
+
+- `target`: Target of the original atomic swap.
+- `hashed_proof`: Hashed proof of the original atomic swap.
+
+### Multisig - 51
+
+#### as_multi_threshold_1 - 0
+
+<details><summary><code>as_multi_threshold_1(other_signatories, call)</code></summary>
+
+Taking 0.0041 % of a block.
+
+```rust
+other_signatories: Vec<T::AccountId>
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+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.
+
+**Complexity**
+O(Z + C) where Z is the length of the call and C its execution weight.
+
+#### as_multi - 1
+
+<details><summary><code>as_multi(threshold, other_signatories, maybe_timepoint, call, max_weight)</code></summary>
+
+No weight available.
+
+```rust
+threshold: u16
+other_signatories: Vec<T::AccountId>
+maybe_timepoint: Option<Timepoint<BlockNumberFor<T>>>
+call: Box<<T as Config>::RuntimeCall>
+max_weight: Weight
+```
+</details>
+
+
+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.
+
+**Complexity**
+- `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`.
+
+#### approve_as_multi - 2
+
+<details><summary><code>approve_as_multi(threshold, other_signatories, maybe_timepoint, call_hash, max_weight)</code></summary>
+
+No weight available.
+
+```rust
+threshold: u16
+other_signatories: Vec<T::AccountId>
+maybe_timepoint: Option<Timepoint<BlockNumberFor<T>>>
+call_hash: [u8; 32]
+max_weight: Weight
+```
+</details>
+
+
+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.
+
+**Complexity**
+- `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`.
+
+#### cancel_as_multi - 3
+
+<details><summary><code>cancel_as_multi(threshold, other_signatories, timepoint, call_hash)</code></summary>
+
+Taking 0.0117 % of a block.
+
+```rust
+threshold: u16
+other_signatories: Vec<T::AccountId>
+timepoint: Timepoint<BlockNumberFor<T>>
+call_hash: [u8; 32]
+```
+</details>
+
+
+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.
+
+**Complexity**
+- `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.
+
+### ProvideRandomness - 52
+
+#### request - 0
+
+<details><summary><code>request(randomness_type, salt)</code></summary>
+
+Taking 0.0418 % of a block.
+
+```rust
+randomness_type: RandomnessType
+salt: H256
+```
+</details>
+
+
+Request a randomness
+
+### Proxy - 53
+
+#### proxy - 0
+
+<details><summary><code>proxy(real, force_proxy_type, call)</code></summary>
+
+Taking 0.0053 % of a block.
+
+```rust
+real: AccountIdLookupOf<T>
+force_proxy_type: Option<T::ProxyType>
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Dispatch the given `call` from an account that the sender is authorised for through
+`add_proxy`.
+
+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.
+
+#### add_proxy - 1
+
+<details><summary><code>add_proxy(delegate, proxy_type, delay)</code></summary>
+
+Taking 0.0114 % of a block.
+
+```rust
+delegate: AccountIdLookupOf<T>
+proxy_type: T::ProxyType
+delay: BlockNumberFor<T>
+```
+</details>
+
+
+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.
+
+#### remove_proxy - 2
+
+<details><summary><code>remove_proxy(delegate, proxy_type, delay)</code></summary>
+
+Taking 0.0115 % of a block.
+
+```rust
+delegate: AccountIdLookupOf<T>
+proxy_type: T::ProxyType
+delay: BlockNumberFor<T>
+```
+</details>
+
+
+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.
+
+#### remove_proxies - 3
+
+<details><summary><code>remove_proxies()</code></summary>
+
+Taking 0.0114 % of a block.
+
+```rust
+```
+</details>
+
+
+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 `pure`, however if done, then
+the unreserved fees will be inaccessible. **All access to this account will be lost.**
+
+#### create_pure - 4
+
+<details><summary><code>create_pure(proxy_type, delay, index)</code></summary>
+
+Taking 0.0115 % of a block.
+
+```rust
+proxy_type: T::ProxyType
+delay: BlockNumberFor<T>
+index: u16
+```
+</details>
+
+
+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.
+
+#### kill_pure - 5
+
+<details><summary><code>kill_pure(spawner, proxy_type, index, height, ext_index)</code></summary>
+
+Taking 0.0114 % of a block.
+
+```rust
+spawner: AccountIdLookupOf<T>
+proxy_type: T::ProxyType
+index: u16
+height: BlockNumberFor<T>
+ext_index: u32
+```
+</details>
+
+
+Removes a previously spawned pure 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
+`pure` with corresponding parameters.
+
+- `spawner`: The account that originally called `pure` to create this account.
+- `index`: The disambiguation index originally passed to `pure`. Probably `0`.
+- `proxy_type`: The proxy type originally passed to `pure`.
+- `height`: The height of the chain when the call to `pure` was processed.
+- `ext_index`: The extrinsic index in which the call to `pure` was processed.
+
+Fails with `NoPermission` in case the caller is not a previously created pure
+account whose `pure` call has corresponding parameters.
+
+#### announce - 6
+
+<details><summary><code>announce(real, call_hash)</code></summary>
+
+Taking 0.0199 % of a block.
+
+```rust
+real: AccountIdLookupOf<T>
+call_hash: CallHashOf<T>
+```
+</details>
+
+
+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.
+
+#### remove_announcement - 7
+
+<details><summary><code>remove_announcement(real, call_hash)</code></summary>
+
+Taking 0.0185 % of a block.
+
+```rust
+real: AccountIdLookupOf<T>
+call_hash: CallHashOf<T>
+```
+</details>
+
+
+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.
+
+#### reject_announcement - 8
+
+<details><summary><code>reject_announcement(delegate, call_hash)</code></summary>
+
+Taking 0.0185 % of a block.
+
+```rust
+delegate: AccountIdLookupOf<T>
+call_hash: CallHashOf<T>
+```
+</details>
+
+
+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.
+
+#### proxy_announced - 9
+
+<details><summary><code>proxy_announced(delegate, real, force_proxy_type, call)</code></summary>
+
+Taking 0.02 % of a block.
+
+```rust
+delegate: AccountIdLookupOf<T>
+real: AccountIdLookupOf<T>
+force_proxy_type: Option<T::ProxyType>
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+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.
+
+### Utility - 54
+
+#### batch - 0
+
+<details><summary><code>batch(calls)</code></summary>
+
+Taking 0.1077 % of a block.
+
+```rust
+calls: Vec<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Send a batch of dispatch calls.
+
+May be called from any origin except `None`.
+
+- `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 the calls are dispatched without checking origin filter. (This
+includes bypassing `frame_system::Config::BaseCallFilter`).
+
+**Complexity**
+- O(C) where C is the number of calls to be batched.
+
+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.
+
+#### as_derivative - 1
+
+<details><summary><code>as_derivative(index, call)</code></summary>
+
+Taking 0.0038 % of a block.
+
+```rust
+index: u16
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+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_.
+
+#### batch_all - 2
+
+<details><summary><code>batch_all(calls)</code></summary>
+
+Taking 0.1127 % of a block.
+
+```rust
+calls: Vec<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+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 except `None`.
+
+- `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 the calls are dispatched without checking origin filter. (This
+includes bypassing `frame_system::Config::BaseCallFilter`).
+
+**Complexity**
+- O(C) where C is the number of calls to be batched.
+
+#### force_batch - 4
+
+<details><summary><code>force_batch(calls)</code></summary>
+
+Taking 0.1071 % of a block.
+
+```rust
+calls: Vec<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Send a batch of dispatch calls.
+Unlike `batch`, it allows errors and won't interrupt.
+
+May be called from any origin except `None`.
+
+- `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 the calls are dispatch without checking origin filter. (This
+includes bypassing `frame_system::Config::BaseCallFilter`).
+
+**Complexity**
+- O(C) where C is the number of calls to be batched.
+
+#### with_weight - 5
+
+<details><summary><code>with_weight(call, weight)</code></summary>
+
+No weight available.
+
+```rust
+call: Box<<T as Config>::RuntimeCall>
+weight: Weight
+```
+</details>
+
+
+Dispatch a function call with a specified weight.
+
+This function does not check the weight of the call, and instead allows the
+Root origin to specify the weight of the call.
+
+The dispatch origin for this call must be _Root_.
+
+### Treasury - 55
+
+#### propose_spend - 0
+
+<details><summary><code>propose_spend(value, beneficiary)</code></summary>
+
+Taking 0.0172 % of a block.
+
+```rust
+value: BalanceOf<T, I>
+beneficiary: AccountIdLookupOf<T>
+```
+</details>
+
+
+Put forward a suggestion for spending.
+
+## Dispatch Origin
+
+Must be signed.
+
+## Details
+A deposit proportional to the value is reserved and slashed if the proposal is rejected.
+It is returned once the proposal is awarded.
+
+#**Complexity**
+- O(1)
+
+## Events
+
+Emits [`Event::Proposed`] if successful.
+
+#### spend_local - 3
+
+<details><summary><code>spend_local(amount, beneficiary)</code></summary>
+
+Taking 0.0036 % of a block.
+
+```rust
+amount: BalanceOf<T, I>
+beneficiary: AccountIdLookupOf<T>
+```
+</details>
+
+
+Propose and approve a spend of treasury funds.
+
+## Dispatch Origin
+
+Must be [`Config::SpendOrigin`] with the `Success` value being at least `amount`.
+
+### Details
+NOTE: For record-keeping purposes, the proposer is deemed to be equivalent to the
+beneficiary.
+
+### Parameters
+- `amount`: The amount to be transferred from the treasury to the `beneficiary`.
+- `beneficiary`: The destination account for the transfer.
+
+## Events
+
+Emits [`Event::SpendApproved`] if successful.
+
+#### remove_approval - 4
+
+<details><summary><code>remove_approval(proposal_id)</code></summary>
+
+Taking 0.0108 % of a block.
+
+```rust
+proposal_id: ProposalIndex
+```
+</details>
+
+
+Force a previously approved proposal to be removed from the approval queue.
+
+## Dispatch Origin
+
+Must be [`Config::RejectOrigin`].
+
+## Details
+
+The original deposit will no longer be returned.
+
+### Parameters
+- `proposal_id`: The index of a proposal
+
+#**Complexity**
+- O(A) where `A` is the number of approvals
+
+### Errors
+- [`Error::ProposalNotApproved`]: The `proposal_id` supplied was not found in the
+  approval queue, i.e., the proposal has not been approved. This could also mean the
+  proposal does not exist altogether, thus there is no way it would have been approved
+  in the first place.
+
+#### spend - 5
+
+<details><summary><code>spend(asset_kind, amount, beneficiary, valid_from)</code></summary>
+
+Taking 0.0036 % of a block.
+
+```rust
+asset_kind: Box<T::AssetKind>
+amount: AssetBalanceOf<T, I>
+beneficiary: Box<BeneficiaryLookupOf<T, I>>
+valid_from: Option<BlockNumberFor<T>>
+```
+</details>
+
+
+Propose and approve a spend of treasury funds.
+
+## Dispatch Origin
+
+Must be [`Config::SpendOrigin`] with the `Success` value being at least
+`amount` of `asset_kind` in the native asset. The amount of `asset_kind` is converted
+for assertion using the [`Config::BalanceConverter`].
+
+## Details
+
+Create an approved spend for transferring a specific `amount` of `asset_kind` to a
+designated beneficiary. The spend must be claimed using the `payout` dispatchable within
+the [`Config::PayoutPeriod`].
+
+### Parameters
+- `asset_kind`: An indicator of the specific asset class to be spent.
+- `amount`: The amount to be transferred from the treasury to the `beneficiary`.
+- `beneficiary`: The beneficiary of the spend.
+- `valid_from`: The block number from which the spend can be claimed. It can refer to
+  the past if the resulting spend has not yet expired according to the
+  [`Config::PayoutPeriod`]. If `None`, the spend can be claimed immediately after
+  approval.
+
+## Events
+
+Emits [`Event::AssetSpendApproved`] if successful.
+
+#### payout - 6
+
+<details><summary><code>payout(index)</code></summary>
+
+Taking 0.0263 % of a block.
+
+```rust
+index: SpendIndex
+```
+</details>
+
+
+Claim a spend.
+
+## Dispatch Origin
+
+Must be signed.
+
+## Details
+
+Spends must be claimed within some temporal bounds. A spend may be claimed within one
+[`Config::PayoutPeriod`] from the `valid_from` block.
+In case of a payout failure, the spend status must be updated with the `check_status`
+dispatchable before retrying with the current function.
+
+### Parameters
+- `index`: The spend index.
+
+## Events
+
+Emits [`Event::Paid`] if successful.
+
+#### check_status - 7
+
+<details><summary><code>check_status(index)</code></summary>
+
+Taking 0.011 % of a block.
+
+```rust
+index: SpendIndex
+```
+</details>
+
+
+Check the status of the spend and remove it from the storage if processed.
+
+## Dispatch Origin
+
+Must be signed.
+
+## Details
+
+The status check is a prerequisite for retrying a failed payout.
+If a spend has either succeeded or expired, it is removed from the storage by this
+function. In such instances, transaction fees are refunded.
+
+### Parameters
+- `index`: The spend index.
+
+## Events
+
+Emits [`Event::PaymentFailed`] if the spend payout has failed.
+Emits [`Event::SpendProcessed`] if the spend payout has succeed.
+
+#### void_spend - 8
+
+<details><summary><code>void_spend(index)</code></summary>
+
+Taking 0.0109 % of a block.
+
+```rust
+index: SpendIndex
+```
+</details>
+
+
+Void previously approved spend.
+
+## Dispatch Origin
+
+Must be [`Config::RejectOrigin`].
+
+## Details
+
+A spend void is only possible if the payout has not been attempted yet.
+
+### Parameters
+- `index`: The spend index.
+
+## Events
+
+Emits [`Event::AssetSpendVoided`] if successful.
+
+
+
+## Root calls
+
+There are **18** root calls from **8** pallets.
+
+### System - 0
+
+#### set_heap_pages - 1
+
+<details><summary><code>set_heap_pages(pages)</code></summary>
+
+Taking 0.0165 % of a block.
+
+```rust
+pages: u64
+```
+</details>
+
+
+Set the number of pages in the WebAssembly environment's heap.
+
+#### set_code - 2
+
+<details><summary><code>set_code(code)</code></summary>
+
+Taking 4.0113 % of a block.
+
+```rust
+code: Vec<u8>
+```
+</details>
+
+
+Set the new runtime code.
+
+#### set_code_without_checks - 3
+
+<details><summary><code>set_code_without_checks(code)</code></summary>
+
+No weight available.
+
+```rust
+code: Vec<u8>
+```
+</details>
+
+
+Set the new runtime code without doing any checks of the given `code`.
+
+Note that runtime upgrades will not run if this is called with a not-increasing spec
+version!
+
+#### set_storage - 4
+
+<details><summary><code>set_storage(items)</code></summary>
+
+Taking 5.8851 % of a block.
+
+```rust
+items: Vec<KeyValue>
+```
+</details>
+
+
+Set some items of storage.
+
+#### kill_storage - 5
+
+<details><summary><code>kill_storage(keys)</code></summary>
+
+Taking 5.8773 % of a block.
+
+```rust
+keys: Vec<Key>
+```
+</details>
+
+
+Kill some items from storage.
+
+#### kill_prefix - 6
+
+<details><summary><code>kill_prefix(prefix, subkeys)</code></summary>
+
+Taking 6.9458 % of a block.
+
+```rust
+prefix: Key
+subkeys: u32
+```
+</details>
+
+
+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.
+
+#### authorize_upgrade - 9
+
+<details><summary><code>authorize_upgrade(code_hash)</code></summary>
+
+Taking 0.0101 % of a block.
+
+```rust
+code_hash: T::Hash
+```
+</details>
+
+
+Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied
+later.
+
+This call requires Root origin.
+
+#### authorize_upgrade_without_checks - 10
+
+<details><summary><code>authorize_upgrade_without_checks(code_hash)</code></summary>
+
+No weight available.
+
+```rust
+code_hash: T::Hash
+```
+</details>
+
+
+Authorize an upgrade to a given `code_hash` for the runtime. The runtime can be supplied
+later.
+
+WARNING: This authorizes an upgrade that will take place without any safety checks, for
+example that the spec name remains the same and that the version number increases. Not
+recommended for normal use. Use `authorize_upgrade` instead.
+
+This call requires Root origin.
+
+#### apply_authorized_upgrade - 11
+
+<details><summary><code>apply_authorized_upgrade(code)</code></summary>
+
+Taking 4.2016 % of a block.
+
+```rust
+code: Vec<u8>
+```
+</details>
+
+
+Provide the preimage (runtime binary) `code` for an upgrade that has been authorized.
+
+If the authorization required a version check, this call will ensure the spec name
+remains unchanged and that the spec version has increased.
+
+Depending on the runtime's `OnSetCode` configuration, this function may directly apply
+the new `code` in the same block or attempt to schedule the upgrade.
+
+All origins are allowed.
+
+### Babe - 3
+
+#### plan_config_change - 2
+
+<details><summary><code>plan_config_change(config)</code></summary>
+
+No weight available.
+
+```rust
+config: NextConfigDescriptor
+```
+</details>
+
+
+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.
+
+### Balances - 6
+
+#### force_transfer - 2
+
+<details><summary><code>force_transfer(source, dest, value)</code></summary>
+
+Taking 0.0265 % of a block.
+
+```rust
+source: AccountIdLookupOf<T>
+dest: AccountIdLookupOf<T>
+value: T::Balance
+```
+</details>
+
+
+Exactly as `transfer_allow_death`, except the origin must be root and the source account
+may be specified.
+
+#### force_unreserve - 5
+
+<details><summary><code>force_unreserve(who, amount)</code></summary>
+
+Taking 0.0112 % of a block.
+
+```rust
+who: AccountIdLookupOf<T>
+amount: T::Balance
+```
+</details>
+
+
+Unreserve some balance from a user by force.
+
+Can only be called by ROOT.
+
+### AuthorityMembers - 11
+
+#### remove_member - 3
+
+<details><summary><code>remove_member(member_id)</code></summary>
+
+Taking 0.0701 % of a block.
+
+```rust
+member_id: T::MemberId
+```
+</details>
+
+
+remove an identity from the set of authorities
+
+### Grandpa - 16
+
+#### note_stalled - 2
+
+<details><summary><code>note_stalled(delay, best_finalized_block_number)</code></summary>
+
+No weight available.
+
+```rust
+delay: BlockNumberFor<T>
+best_finalized_block_number: BlockNumberFor<T>
+```
+</details>
+
+
+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 block production rate (which may be slowed down because of finality lagging) should
+be taken into account when choosing the `delay`. The GRANDPA voters based on the new
+authority will start voting on top of `best_finalized_block_number` for new finalized
+blocks. `best_finalized_block_number` should be the highest of the latest finalized
+block of all validators of the new authority set.
+
+Only callable by root.
+
+### TechnicalCommittee - 23
+
+#### set_members - 0
+
+<details><summary><code>set_members(new_members, prime, old_count)</code></summary>
+
+Taking 0.1657 % of a block.
+
+```rust
+new_members: Vec<T::AccountId>
+prime: Option<T::AccountId>
+old_count: MemberCount
+```
+</details>
+
+
+Set the collective's membership.
+
+- `new_members`: The new member list. Be nice to the chain and provide it sorted.
+- `prime`: The prime member whose vote sets the default.
+- `old_count`: The upper bound for the previous number of members in storage. Used for
+  weight estimation.
+
+The dispatch of this call must be `SetMembersOrigin`.
+
+NOTE: Does not enforce the expected `MaxMembers` limit on the amount of members, but
+      the weight estimations rely on it to estimate dispatchable weight.
+
+WARNING:
+
+The `pallet-collective` can also be managed by logic outside of the pallet through the
+implementation of the trait [`ChangeMembers`].
+Any call to `set_members` must be careful that the member set doesn't get out of sync
+with other logic managing the member set.
+
+**Complexity**:
+- `O(MP + N)` where:
+  - `M` old-members-count (code- and governance-bounded)
+  - `N` new-members-count (code- and governance-bounded)
+  - `P` proposals-count (code-bounded)
+
+#### disapprove_proposal - 5
+
+<details><summary><code>disapprove_proposal(proposal_hash)</code></summary>
+
+Taking 0.0229 % of a block.
+
+```rust
+proposal_hash: T::Hash
+```
+</details>
+
+
+Disapprove a proposal, close, and remove it from the system, regardless of its current
+state.
+
+Must be called by the Root origin.
+
+Parameters:
+* `proposal_hash`: The hash of the proposal that should be disapproved.
+
+**Complexity**
+O(P) where P is the number of max proposals
+
+### Identity - 41
+
+#### prune_item_identities_names - 6
+
+<details><summary><code>prune_item_identities_names(names)</code></summary>
+
+Taking 5.9211 % of a block.
+
+```rust
+names: Vec<IdtyName>
+```
+</details>
+
+
+remove identity names from storage
+
+### Utility - 54
+
+#### dispatch_as - 3
+
+<details><summary><code>dispatch_as(as_origin, call)</code></summary>
+
+Taking 0.0039 % of a block.
+
+```rust
+as_origin: Box<T::PalletsOrigin>
+call: Box<<T as Config>::RuntimeCall>
+```
+</details>
+
+
+Dispatches a function call with a provided origin.
+
+The dispatch origin for this call must be _Root_.
+
+**Complexity**
+- O(1).
+
+
+
+
+
+
+## Disabled calls
+
+There are **4** disabled calls from **2** pallets.
+
+### System - 0
+
+#### remark - 0
+
+<details><summary><code>remark(remark)</code></summary>
+
+Taking 0.054 % of a block.
+
+```rust
+remark: Vec<u8>
+```
+</details>
+
+
+Make some on-chain remark.
+
+Can be executed by every `origin`.
+
+#### remark_with_event - 7
+
+<details><summary><code>remark_with_event(remark)</code></summary>
+
+Taking 0.2052 % of a block.
+
+```rust
+remark: Vec<u8>
+```
+</details>
+
+
+Make some on-chain remark and emit event.
+
+### Session - 15
+
+#### set_keys - 0
+
+<details><summary><code>set_keys(keys, proof)</code></summary>
+
+Taking 0.0394 % of a block.
+
+```rust
+keys: T::Keys
+proof: Vec<u8>
+```
+</details>
+
+
+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.
+
+**Complexity**
+- `O(1)`. Actual cost depends on the number of length of `T::Keys::key_ids()` which is
+  fixed.
+
+#### purge_keys - 1
+
+<details><summary><code>purge_keys()</code></summary>
+
+Taking 0.0347 % of a block.
+
+```rust
+```
+</details>
+
+
+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 and the account must be either be
+convertible to a validator ID using the chain's typical addressing system (this usually
+means being a controller account) or directly convertible into a validator ID (which
+usually means being a stash account).
+
+**Complexity**
+- `O(1)` in number of key types. Actual cost depends on the number of length of
+  `T::Keys::key_ids()` which is fixed.
+
diff --git a/docs/api/runtime-errors.md b/docs/api/runtime-errors.md
new file mode 100644
index 000000000..667342478
--- /dev/null
+++ b/docs/api/runtime-errors.md
@@ -0,0 +1,1476 @@
+# Runtime errors
+
+There are **189** errors from **35** pallets.
+
+<ul>
+<li>System - 0
+<ul>
+<li>
+<details>
+<summary>
+<code>InvalidSpecName</code> - 0</summary>
+The name of specification does not match between the current runtime
+and the new runtime.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SpecVersionNeedsToIncrease</code> - 1</summary>
+The specification version is not allowed to decrease between the current runtime
+and the new runtime.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>FailedToExtractRuntimeVersion</code> - 2</summary>
+Failed to extract the runtime version from the new runtime.
+
+Either calling `Core_version` or decoding `RuntimeVersion` failed.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NonDefaultComposite</code> - 3</summary>
+Suicide called when the account has non-default composite data.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NonZeroRefCount</code> - 4</summary>
+There is a non-zero reference count preventing the account from being purged.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallFiltered</code> - 5</summary>
+The origin filter prevent the call to be dispatched.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MultiBlockMigrationsOngoing</code> - 6</summary>
+A multi-block migration is ongoing and prevents the current code from being replaced.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NothingAuthorized</code> - 7</summary>
+No upgrade authorized.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Unauthorized</code> - 8</summary>
+The submitted code is not authorized.
+</details>
+</li>
+</ul>
+</li>
+<li>Account - 1
+<ul>
+</ul>
+</li>
+<li>Scheduler - 2
+<ul>
+<li>
+<details>
+<summary>
+<code>FailedToSchedule</code> - 0</summary>
+Failed to schedule a call
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotFound</code> - 1</summary>
+Cannot find the scheduled call.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TargetBlockNumberInPast</code> - 2</summary>
+Given target block number is in the past.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RescheduleNoChange</code> - 3</summary>
+Reschedule failed because it does not change scheduled time.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Named</code> - 4</summary>
+Attempt to use a non-named function on a named task.
+</details>
+</li>
+</ul>
+</li>
+<li>Babe - 3
+<ul>
+<li>
+<details>
+<summary>
+<code>InvalidEquivocationProof</code> - 0</summary>
+An equivocation proof provided as part of an equivocation report is invalid.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidKeyOwnershipProof</code> - 1</summary>
+A key ownership proof provided as part of an equivocation report is invalid.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicateOffenceReport</code> - 2</summary>
+A given equivocation report is valid but already previously reported.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidConfiguration</code> - 3</summary>
+Submitted configuration is invalid.
+</details>
+</li>
+</ul>
+</li>
+<li>Timestamp - 4
+<ul>
+</ul>
+</li>
+<li>Parameters - 5
+<ul>
+</ul>
+</li>
+<li>Balances - 6
+<ul>
+<li>
+<details>
+<summary>
+<code>VestingBalance</code> - 0</summary>
+Vesting balance too high to send value.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>LiquidityRestrictions</code> - 1</summary>
+Account liquidity restrictions prevent withdrawal.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InsufficientBalance</code> - 2</summary>
+Balance too low to send value.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ExistentialDeposit</code> - 3</summary>
+Value too low to create account due to existential deposit.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Expendability</code> - 4</summary>
+Transfer/payment would kill account.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ExistingVestingSchedule</code> - 5</summary>
+A vesting schedule already exists for this account.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DeadAccount</code> - 6</summary>
+Beneficiary account must pre-exist.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyReserves</code> - 7</summary>
+Number of named reserves exceed `MaxReserves`.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyHolds</code> - 8</summary>
+Number of holds exceed `VariantCountOf<T::RuntimeHoldReason>`.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyFreezes</code> - 9</summary>
+Number of freezes exceed `MaxFreezes`.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IssuanceDeactivated</code> - 10</summary>
+The issuance cannot be modified since it is already deactivated.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DeltaZero</code> - 11</summary>
+The delta cannot be zero.
+</details>
+</li>
+</ul>
+</li>
+<li>TransactionPayment - 32
+<ul>
+</ul>
+</li>
+<li>OneshotAccount - 7
+<ul>
+<li>
+<details>
+<summary>
+<code>BlockHeightInFuture</code> - 0</summary>
+Block height is in the future.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>BlockHeightTooOld</code> - 1</summary>
+Block height is too old.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DestAccountNotExist</code> - 2</summary>
+Destination account does not exist.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ExistentialDeposit</code> - 3</summary>
+Destination account has a balance less than the existential deposit.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InsufficientBalance</code> - 4</summary>
+Source account has insufficient balance.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OneshotAccountAlreadyCreated</code> - 5</summary>
+Destination oneshot account already exists.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OneshotAccountNotExist</code> - 6</summary>
+Source oneshot account does not exist.
+</details>
+</li>
+</ul>
+</li>
+<li>Quota - 66
+<ul>
+</ul>
+</li>
+<li>SmithMembers - 10
+<ul>
+<li>
+<details>
+<summary>
+<code>OriginMustHaveAnIdentity</code> - 0</summary>
+Issuer of anything (invitation, acceptance, certification) must have an identity ID
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OriginHasNeverBeenInvited</code> - 1</summary>
+Issuer must be known as a potential smith
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationIsASmithPrivilege</code> - 2</summary>
+Invitation is reseverd to smiths
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationIsAOnlineSmithPrivilege</code> - 3</summary>
+Invitation is reseverd to online smiths
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationAlreadyAccepted</code> - 4</summary>
+Invitation must not have been accepted yet
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationOfExistingNonExcluded</code> - 5</summary>
+Invitation of an already known smith is forbidden except if it has been excluded
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationOfNonMember</code> - 6</summary>
+Invitation of a non-member (of the WoT) is forbidden
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationMustBeAgreed</code> - 7</summary>
+Certification cannot be made on someone who has not accepted an invitation
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationOnExcludedIsForbidden</code> - 8</summary>
+Certification cannot be made on excluded
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationIsASmithPrivilege</code> - 9</summary>
+Issuer must be a smith
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationIsAOnlineSmithPrivilege</code> - 10</summary>
+Only online smiths can certify
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationOfSelfIsForbidden</code> - 11</summary>
+Smith cannot certify itself
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationReceiverMustHaveBeenInvited</code> - 12</summary>
+Receiver must be invited by another smith
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationAlreadyExists</code> - 13</summary>
+Receiver must not already have this certification
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertificationStockFullyConsumed</code> - 14</summary>
+A smith has a limited stock of certifications
+</details>
+</li>
+</ul>
+</li>
+<li>AuthorityMembers - 11
+<ul>
+<li>
+<details>
+<summary>
+<code>AlreadyIncoming</code> - 0</summary>
+Member already incoming.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyOnline</code> - 1</summary>
+Member already online.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyOutgoing</code> - 2</summary>
+Member already outgoing.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberIdNotFound</code> - 3</summary>
+Owner key is invalid as a member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberBlacklisted</code> - 4</summary>
+Member is blacklisted.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberNotBlacklisted</code> - 5</summary>
+Member is not blacklisted.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberNotFound</code> - 6</summary>
+Member not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotOnlineNorIncoming</code> - 7</summary>
+Neither online nor scheduled.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotMember</code> - 8</summary>
+Not member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SessionKeysNotProvided</code> - 9</summary>
+Session keys not provided.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyAuthorities</code> - 10</summary>
+Too many authorities.
+</details>
+</li>
+</ul>
+</li>
+<li>Authorship - 12
+<ul>
+</ul>
+</li>
+<li>Offences - 13
+<ul>
+</ul>
+</li>
+<li>Historical - 14
+<ul>
+</ul>
+</li>
+<li>Session - 15
+<ul>
+<li>
+<details>
+<summary>
+<code>InvalidProof</code> - 0</summary>
+Invalid ownership proof.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoAssociatedValidatorId</code> - 1</summary>
+No associated validator ID for account.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicatedKey</code> - 2</summary>
+Registered duplicate key.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoKeys</code> - 3</summary>
+No keys are associated with this account.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoAccount</code> - 4</summary>
+Key setting account is not live, so it's impossible to associate keys.
+</details>
+</li>
+</ul>
+</li>
+<li>Grandpa - 16
+<ul>
+<li>
+<details>
+<summary>
+<code>PauseFailed</code> - 0</summary>
+Attempt to signal GRANDPA pause when the authority set isn't live
+(either paused or already pending pause).
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ResumeFailed</code> - 1</summary>
+Attempt to signal GRANDPA resume when the authority set isn't paused
+(either live or already pending resume).
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ChangePending</code> - 2</summary>
+Attempt to signal GRANDPA change with one already pending.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooSoon</code> - 3</summary>
+Cannot signal forced change so soon after last.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidKeyOwnershipProof</code> - 4</summary>
+A key ownership proof provided as part of an equivocation report is invalid.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidEquivocationProof</code> - 5</summary>
+An equivocation proof provided as part of an equivocation report is invalid.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicateOffenceReport</code> - 6</summary>
+A given equivocation report is valid but already previously reported.
+</details>
+</li>
+</ul>
+</li>
+<li>ImOnline - 17
+<ul>
+<li>
+<details>
+<summary>
+<code>InvalidKey</code> - 0</summary>
+Non existent public key.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicatedHeartbeat</code> - 1</summary>
+Duplicated heartbeat.
+</details>
+</li>
+</ul>
+</li>
+<li>AuthorityDiscovery - 18
+<ul>
+</ul>
+</li>
+<li>Sudo - 20
+<ul>
+<li>
+<details>
+<summary>
+<code>RequireSudo</code> - 0</summary>
+Sender must be the Sudo account.
+</details>
+</li>
+</ul>
+</li>
+<li>UpgradeOrigin - 21
+<ul>
+</ul>
+</li>
+<li>Preimage - 22
+<ul>
+<li>
+<details>
+<summary>
+<code>TooBig</code> - 0</summary>
+Preimage is too large to store on-chain.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyNoted</code> - 1</summary>
+Preimage has already been noted on-chain.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotAuthorized</code> - 2</summary>
+The user is not authorized to perform this action.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotNoted</code> - 3</summary>
+The preimage cannot be removed since it has not yet been noted.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Requested</code> - 4</summary>
+A preimage may not be removed when there are outstanding requests.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotRequested</code> - 5</summary>
+The preimage request cannot be removed since no outstanding requests exist.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooMany</code> - 6</summary>
+More than `MAX_HASH_UPGRADE_BULK_COUNT` hashes were requested to be upgraded at once.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooFew</code> - 7</summary>
+Too few hashes were requested to be upgraded (i.e. zero).
+</details>
+</li>
+</ul>
+</li>
+<li>TechnicalCommittee - 23
+<ul>
+<li>
+<details>
+<summary>
+<code>NotMember</code> - 0</summary>
+Account is not a member
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicateProposal</code> - 1</summary>
+Duplicate proposals not allowed
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProposalMissing</code> - 2</summary>
+Proposal must exist
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>WrongIndex</code> - 3</summary>
+Mismatched index
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DuplicateVote</code> - 4</summary>
+Duplicate vote ignored
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyInitialized</code> - 5</summary>
+Members are already initialized!
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooEarly</code> - 6</summary>
+The close call was made too early, before the end of the voting.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyProposals</code> - 7</summary>
+There can only be a maximum of `MaxProposals` active proposals.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>WrongProposalWeight</code> - 8</summary>
+The given weight bound for the proposal was too low.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>WrongProposalLength</code> - 9</summary>
+The given length bound for the proposal was too low.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PrimeAccountNotMember</code> - 10</summary>
+Prime account is not a member
+</details>
+</li>
+</ul>
+</li>
+<li>UniversalDividend - 30
+<ul>
+<li>
+<details>
+<summary>
+<code>AccountNotAllowedToClaimUds</code> - 0</summary>
+This account is not allowed to claim UDs.
+</details>
+</li>
+</ul>
+</li>
+<li>Wot - 40
+<ul>
+<li>
+<details>
+<summary>
+<code>NotEnoughCerts</code> - 0</summary>
+Insufficient certifications received.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TargetStatusInvalid</code> - 1</summary>
+Target status is incompatible with this operation.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyCreationPeriodNotRespected</code> - 2</summary>
+Identity creation period not respected.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotEnoughReceivedCertsToCreateIdty</code> - 3</summary>
+Insufficient received certifications to create identity.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MaxEmittedCertsReached</code> - 4</summary>
+Maximum number of emitted certifications reached.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IssuerNotMember</code> - 5</summary>
+Issuer cannot emit a certification because it is not member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyNotFound</code> - 6</summary>
+Issuer or receiver not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MembershipRenewalPeriodNotRespected</code> - 7</summary>
+Membership can only be renewed after an antispam delay.
+</details>
+</li>
+</ul>
+</li>
+<li>Identity - 41
+<ul>
+<li>
+<details>
+<summary>
+<code>IdtyAlreadyConfirmed</code> - 0</summary>
+Identity already confirmed.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyAlreadyCreated</code> - 1</summary>
+Identity already created.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyIndexNotFound</code> - 2</summary>
+Identity index not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyNameAlreadyExist</code> - 3</summary>
+Identity name already exists.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyNameInvalid</code> - 4</summary>
+Invalid identity name.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyNotFound</code> - 5</summary>
+Identity not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidSignature</code> - 6</summary>
+Invalid payload signature.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidRevocationKey</code> - 7</summary>
+Invalid revocation key.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IssuerNotMember</code> - 8</summary>
+Issuer is not member and can not perform this action.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotRespectIdtyCreationPeriod</code> - 9</summary>
+Identity creation period is not respected.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OwnerKeyAlreadyRecentlyChanged</code> - 10</summary>
+Owner key already changed recently.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OwnerKeyAlreadyUsed</code> - 11</summary>
+Owner key already used.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProhibitedToRevertToAnOldKey</code> - 12</summary>
+Reverting to an old key is prohibited.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyRevoked</code> - 13</summary>
+Already revoked.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CanNotRevokeUnconfirmed</code> - 14</summary>
+Can not revoke identity that never was member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CanNotRevokeUnvalidated</code> - 15</summary>
+Can not revoke identity that never was member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AccountNotExist</code> - 16</summary>
+Cannot link to an inexisting account.
+</details>
+</li>
+</ul>
+</li>
+<li>Membership - 42
+<ul>
+<li>
+<details>
+<summary>
+<code>MembershipNotFound</code> - 0</summary>
+Membership not found, can not renew.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyMember</code> - 1</summary>
+Already member, can not add membership.
+</details>
+</li>
+</ul>
+</li>
+<li>Certification - 43
+<ul>
+<li>
+<details>
+<summary>
+<code>OriginMustHaveAnIdentity</code> - 0</summary>
+Issuer of a certification must have an identity
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CannotCertifySelf</code> - 1</summary>
+Identity cannot certify itself.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IssuedTooManyCert</code> - 2</summary>
+Identity has already issued the maximum number of certifications.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotEnoughCertReceived</code> - 3</summary>
+Insufficient certifications received.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotRespectCertPeriod</code> - 4</summary>
+Identity has issued a certification too recently.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertAlreadyExists</code> - 5</summary>
+Can not add an already-existing cert
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertDoesNotExist</code> - 6</summary>
+Can not renew a non-existing cert
+</details>
+</li>
+</ul>
+</li>
+<li>Distance - 44
+<ul>
+<li>
+<details>
+<summary>
+<code>AlreadyInEvaluation</code> - 0</summary>
+Distance is already under evaluation.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyEvaluationsByAuthor</code> - 1</summary>
+Too many evaluations requested by author.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyEvaluationsInBlock</code> - 2</summary>
+Too many evaluations for this block.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoAuthor</code> - 3</summary>
+No author for this block.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallerHasNoIdentity</code> - 4</summary>
+Caller has no identity.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallerIdentityNotFound</code> - 5</summary>
+Caller identity not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallerNotMember</code> - 6</summary>
+Caller not member.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallerStatusInvalid</code> - 7</summary>
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TargetIdentityNotFound</code> - 8</summary>
+Target identity not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>QueueFull</code> - 9</summary>
+Evaluation queue is full.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyEvaluators</code> - 10</summary>
+Too many evaluators in the current evaluation pool.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>WrongResultLength</code> - 11</summary>
+Evaluation result has a wrong length.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TargetMustBeUnvalidated</code> - 12</summary>
+Targeted distance evaluation request is only possible for an unvalidated identity.
+</details>
+</li>
+</ul>
+</li>
+<li>AtomicSwap - 50
+<ul>
+<li>
+<details>
+<summary>
+<code>AlreadyExist</code> - 0</summary>
+Swap already exists.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidProof</code> - 1</summary>
+Swap proof is invalid.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProofTooLarge</code> - 2</summary>
+Proof is too large.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SourceMismatch</code> - 3</summary>
+Source does not match.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyClaimed</code> - 4</summary>
+Swap has already been claimed.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotExist</code> - 5</summary>
+Swap does not exist.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ClaimActionMismatch</code> - 6</summary>
+Claim action mismatch.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DurationNotPassed</code> - 7</summary>
+Duration has not yet passed for the swap to be cancelled.
+</details>
+</li>
+</ul>
+</li>
+<li>Multisig - 51
+<ul>
+<li>
+<details>
+<summary>
+<code>MinimumThreshold</code> - 0</summary>
+Threshold must be 2 or greater.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyApproved</code> - 1</summary>
+Call is already approved by this signatory.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoApprovalsNeeded</code> - 2</summary>
+Call doesn't need any (more) approvals.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooFewSignatories</code> - 3</summary>
+There are too few signatories in the list.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManySignatories</code> - 4</summary>
+There are too many signatories in the list.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SignatoriesOutOfOrder</code> - 5</summary>
+The signatories were provided out of order; they should be ordered.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SenderInSignatories</code> - 6</summary>
+The sender was contained in the other signatories; it shouldn't be.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotFound</code> - 7</summary>
+Multisig operation not found when attempting to cancel.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotOwner</code> - 8</summary>
+Only the account that originally created the multisig is able to cancel it.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoTimepoint</code> - 9</summary>
+No timepoint was given, yet the multisig operation is already underway.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>WrongTimepoint</code> - 10</summary>
+A different timepoint was given to the multisig operation that is underway.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UnexpectedTimepoint</code> - 11</summary>
+A timepoint was given, yet no multisig operation is underway.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MaxWeightTooLow</code> - 12</summary>
+The maximum weight information provided was too low.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyStored</code> - 13</summary>
+The data to be stored is already stored.
+</details>
+</li>
+</ul>
+</li>
+<li>ProvideRandomness - 52
+<ul>
+<li>
+<details>
+<summary>
+<code>QueueFull</code> - 0</summary>
+Request randomness queue is full.
+</details>
+</li>
+</ul>
+</li>
+<li>Proxy - 53
+<ul>
+<li>
+<details>
+<summary>
+<code>TooMany</code> - 0</summary>
+There are too many proxies registered or too many announcements pending.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotFound</code> - 1</summary>
+Proxy registration not found.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotProxy</code> - 2</summary>
+Sender is not a proxy of the account to be proxied.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Unproxyable</code> - 3</summary>
+A call which is incompatible with the proxy type's filter was attempted.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Duplicate</code> - 4</summary>
+Account is already a proxy.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoPermission</code> - 5</summary>
+Call may not be made by proxy because it may escalate its privileges.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Unannounced</code> - 6</summary>
+Announcement, if made at all, was made too recently.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoSelfProxy</code> - 7</summary>
+Cannot add self as proxy.
+</details>
+</li>
+</ul>
+</li>
+<li>Utility - 54
+<ul>
+<li>
+<details>
+<summary>
+<code>TooManyCalls</code> - 0</summary>
+Too many calls batched.
+</details>
+</li>
+</ul>
+</li>
+<li>Treasury - 55
+<ul>
+<li>
+<details>
+<summary>
+<code>InsufficientProposersBalance</code> - 0</summary>
+Proposer's balance is too low.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvalidIndex</code> - 1</summary>
+No proposal, bounty or spend at that index.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TooManyApprovals</code> - 2</summary>
+Too many approvals in the queue.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InsufficientPermission</code> - 3</summary>
+The spend origin is valid but the amount it is allowed to spend is lower than the
+amount to be spent.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProposalNotApproved</code> - 4</summary>
+Proposal has not been approved.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>FailedToConvertBalance</code> - 5</summary>
+The balance of the asset kind is not convertible to the balance of the native asset.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SpendExpired</code> - 6</summary>
+The spend has expired and cannot be claimed.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>EarlyPayout</code> - 7</summary>
+The spend is not yet eligible for payout.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AlreadyAttempted</code> - 8</summary>
+The payment has already been attempted.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PayoutError</code> - 9</summary>
+There was some issue with the mechanism of payment.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NotAttempted</code> - 10</summary>
+The payout was not yet attempted/claimed.
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Inconclusive</code> - 11</summary>
+The payment has neither failed nor succeeded yet.
+</details>
+</li>
+</ul>
+</li>
+</ul>
\ No newline at end of file
diff --git a/docs/api/runtime-events.md b/docs/api/runtime-events.md
new file mode 100644
index 000000000..6b1404aa3
--- /dev/null
+++ b/docs/api/runtime-events.md
@@ -0,0 +1,1949 @@
+# Runtime events
+
+There are **138** events from **35** pallets.
+
+<ul>
+<li>System - 0
+<ul>
+<li>
+<details>
+<summary>
+<code>ExtrinsicSuccess(dispatch_info)</code> - 0</summary>
+An extrinsic completed successfully.
+
+```rust
+dispatch_info: DispatchInfo
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ExtrinsicFailed(dispatch_error, dispatch_info)</code> - 1</summary>
+An extrinsic failed.
+
+```rust
+dispatch_error: DispatchError
+dispatch_info: DispatchInfo
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CodeUpdated()</code> - 2</summary>
+`:code` was updated.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NewAccount(account)</code> - 3</summary>
+A new account was created.
+
+```rust
+account: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>KilledAccount(account)</code> - 4</summary>
+An account was reaped.
+
+```rust
+account: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Remarked(sender, hash)</code> - 5</summary>
+On on-chain remark happened.
+
+```rust
+sender: T::AccountId
+hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UpgradeAuthorized(code_hash, check_version)</code> - 6</summary>
+An upgrade was authorized.
+
+```rust
+code_hash: T::Hash
+check_version: bool
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Account - 1
+<ul>
+<li>
+<details>
+<summary>
+<code>AccountLinked(who, identity)</code> - 0</summary>
+account linked to identity
+
+```rust
+who: T::AccountId
+identity: IdtyIdOf<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AccountUnlinked()</code> - 1</summary>
+The account was unlinked from its identity.
+
+```rust
+: T::AccountId
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Scheduler - 2
+<ul>
+<li>
+<details>
+<summary>
+<code>Scheduled(when, index)</code> - 0</summary>
+Scheduled some task.
+
+```rust
+when: BlockNumberFor<T>
+index: u32
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Canceled(when, index)</code> - 1</summary>
+Canceled some task.
+
+```rust
+when: BlockNumberFor<T>
+index: u32
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Dispatched(task, id, result)</code> - 2</summary>
+Dispatched some task.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RetrySet(task, id, period, retries)</code> - 3</summary>
+Set a retry configuration for some task.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+period: BlockNumberFor<T>
+retries: u8
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RetryCancelled(task, id)</code> - 4</summary>
+Cancel a retry configuration for some task.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CallUnavailable(task, id)</code> - 5</summary>
+The call for the provided hash was not found so the task has been aborted.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PeriodicFailed(task, id)</code> - 6</summary>
+The given task was unable to be renewed since the agenda is full at that block.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RetryFailed(task, id)</code> - 7</summary>
+The given task was unable to be retried since the agenda is full at that block or there
+was not enough weight to reschedule it.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PermanentlyOverweight(task, id)</code> - 8</summary>
+The given task can never be executed since it is overweight.
+
+```rust
+task: TaskAddress<BlockNumberFor<T>>
+id: Option<TaskName>
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Babe - 3
+<ul>
+</ul>
+</li>
+<li>Timestamp - 4
+<ul>
+</ul>
+</li>
+<li>Parameters - 5
+<ul>
+</ul>
+</li>
+<li>Balances - 6
+<ul>
+<li>
+<details>
+<summary>
+<code>Endowed(account, free_balance)</code> - 0</summary>
+An account was created with some free balance.
+
+```rust
+account: T::AccountId
+free_balance: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DustLost(account, amount)</code> - 1</summary>
+An account was removed whose balance was non-zero but below ExistentialDeposit,
+resulting in an outright loss.
+
+```rust
+account: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Transfer(from, to, amount)</code> - 2</summary>
+Transfer succeeded.
+
+```rust
+from: T::AccountId
+to: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>BalanceSet(who, free)</code> - 3</summary>
+A balance was set by root.
+
+```rust
+who: T::AccountId
+free: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Reserved(who, amount)</code> - 4</summary>
+Some balance was reserved (moved from free to reserved).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Unreserved(who, amount)</code> - 5</summary>
+Some balance was unreserved (moved from reserved to free).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ReserveRepatriated(from, to, amount, destination_status)</code> - 6</summary>
+Some balance was moved from the reserve of the first account to the second account.
+Final argument indicates the destination balance type.
+
+```rust
+from: T::AccountId
+to: T::AccountId
+amount: T::Balance
+destination_status: Status
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Deposit(who, amount)</code> - 7</summary>
+Some amount was deposited (e.g. for transaction fees).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Withdraw(who, amount)</code> - 8</summary>
+Some amount was withdrawn from the account (e.g. for transaction fees).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Slashed(who, amount)</code> - 9</summary>
+Some amount was removed from the account (e.g. for misbehavior).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Minted(who, amount)</code> - 10</summary>
+Some amount was minted into an account.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Burned(who, amount)</code> - 11</summary>
+Some amount was burned from an account.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Suspended(who, amount)</code> - 12</summary>
+Some amount was suspended from an account (it can be restored later).
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Restored(who, amount)</code> - 13</summary>
+Some amount was restored into an account.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Upgraded(who)</code> - 14</summary>
+An account was upgraded.
+
+```rust
+who: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Issued(amount)</code> - 15</summary>
+Total issuance was increased by `amount`, creating a credit to be balanced.
+
+```rust
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Rescinded(amount)</code> - 16</summary>
+Total issuance was decreased by `amount`, creating a debt to be balanced.
+
+```rust
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Locked(who, amount)</code> - 17</summary>
+Some balance was locked.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Unlocked(who, amount)</code> - 18</summary>
+Some balance was unlocked.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Frozen(who, amount)</code> - 19</summary>
+Some balance was frozen.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Thawed(who, amount)</code> - 20</summary>
+Some balance was thawed.
+
+```rust
+who: T::AccountId
+amount: T::Balance
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>TotalIssuanceForced(old, new)</code> - 21</summary>
+The `TotalIssuance` was forcefully changed.
+
+```rust
+old: T::Balance
+new: T::Balance
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>TransactionPayment - 32
+<ul>
+<li>
+<details>
+<summary>
+<code>TransactionFeePaid(who, actual_fee, tip)</code> - 0</summary>
+A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,
+has been paid by `who`.
+
+```rust
+who: T::AccountId
+actual_fee: BalanceOf<T>
+tip: BalanceOf<T>
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>OneshotAccount - 7
+<ul>
+<li>
+<details>
+<summary>
+<code>OneshotAccountCreated(account, balance, creator)</code> - 0</summary>
+A oneshot account was created.
+
+```rust
+account: T::AccountId
+balance: <T::Currency as Currency<T::AccountId>>::Balance
+creator: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OneshotAccountConsumed(account, dest1, dest2)</code> - 1</summary>
+A oneshot account was consumed.
+
+```rust
+account: T::AccountId
+dest1: (T::AccountId,<T::Currency as Currency<T::AccountId>>::Balance,)
+dest2: Option<
+(T::AccountId,<T::Currency as Currency<T::AccountId>>::Balance,)
+>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Withdraw(account, balance)</code> - 2</summary>
+A withdrawal was executed on a oneshot account.
+
+```rust
+account: T::AccountId
+balance: <T::Currency as Currency<T::AccountId>>::Balance
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Quota - 66
+<ul>
+<li>
+<details>
+<summary>
+<code>Refunded(who, identity, amount)</code> - 0</summary>
+Transaction fees were refunded.
+
+```rust
+who: T::AccountId
+identity: IdtyId<T>
+amount: BalanceOf<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoQuotaForIdty()</code> - 1</summary>
+No more quota available for refund.
+
+```rust
+: IdtyId<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>NoMoreCurrencyForRefund()</code> - 2</summary>
+No more currency available for refund.
+This scenario should never occur if the fees are intended for the refund account.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RefundFailed()</code> - 3</summary>
+The refund has failed.
+This scenario should rarely occur, except when the account was destroyed in the interim between the request and the refund.
+
+```rust
+: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RefundQueueFull()</code> - 4</summary>
+Refund queue was full.
+
+```rust
+no args
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>SmithMembers - 10
+<ul>
+<li>
+<details>
+<summary>
+<code>InvitationSent(issuer, receiver)</code> - 0</summary>
+An identity is being inivited to become a smith.
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>InvitationAccepted(idty_index)</code> - 1</summary>
+The invitation has been accepted.
+
+```rust
+idty_index: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SmithCertAdded(issuer, receiver)</code> - 2</summary>
+Certification received
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SmithCertRemoved(issuer, receiver)</code> - 3</summary>
+Certification lost
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SmithMembershipAdded(idty_index)</code> - 4</summary>
+A smith gathered enough certifications to become an authority (can call `go_online()`).
+
+```rust
+idty_index: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SmithMembershipRemoved(idty_index)</code> - 5</summary>
+A smith has been removed from the smiths set.
+
+```rust
+idty_index: T::IdtyIndex
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>AuthorityMembers - 11
+<ul>
+<li>
+<details>
+<summary>
+<code>IncomingAuthorities(members)</code> - 0</summary>
+List of members scheduled to join the set of authorities in the next session.
+
+```rust
+members: Vec<T::MemberId>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>OutgoingAuthorities(members)</code> - 1</summary>
+List of members leaving the set of authorities in the next session.
+
+```rust
+members: Vec<T::MemberId>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberGoOffline(member)</code> - 2</summary>
+A member will leave the set of authorities in 2 sessions.
+
+```rust
+member: T::MemberId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberGoOnline(member)</code> - 3</summary>
+A member will join the set of authorities in 2 sessions.
+
+```rust
+member: T::MemberId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberRemoved(member)</code> - 4</summary>
+A member, who no longer has authority rights, will be removed from the authority set in 2 sessions.
+
+```rust
+member: T::MemberId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberRemovedFromBlacklist(member)</code> - 5</summary>
+A member has been removed from the blacklist.
+
+```rust
+member: T::MemberId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberAddedToBlacklist(member)</code> - 6</summary>
+A member has been blacklisted.
+
+```rust
+member: T::MemberId
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Authorship - 12
+<ul>
+</ul>
+</li>
+<li>Offences - 13
+<ul>
+<li>
+<details>
+<summary>
+<code>Offence(kind, timeslot)</code> - 0</summary>
+An offense was reported during the specified time slot. This event is not deposited for duplicate slashes.
+
+```rust
+kind: Kind
+timeslot: OpaqueTimeSlot
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Historical - 14
+<ul>
+</ul>
+</li>
+<li>Session - 15
+<ul>
+<li>
+<details>
+<summary>
+<code>NewSession(session_index)</code> - 0</summary>
+New session has happened. Note that the argument is the session index, not the
+block number as the type might suggest.
+
+```rust
+session_index: SessionIndex
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Grandpa - 16
+<ul>
+<li>
+<details>
+<summary>
+<code>NewAuthorities(authority_set)</code> - 0</summary>
+New authority set has been applied.
+
+```rust
+authority_set: AuthorityList
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Paused()</code> - 1</summary>
+Current authority set has been paused.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Resumed()</code> - 2</summary>
+Current authority set has been resumed.
+
+```rust
+no args
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>ImOnline - 17
+<ul>
+<li>
+<details>
+<summary>
+<code>HeartbeatReceived(authority_id)</code> - 0</summary>
+A new heartbeat was received from `AuthorityId`.
+
+```rust
+authority_id: T::AuthorityId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AllGood()</code> - 1</summary>
+At the end of the session, no offence was committed.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SomeOffline(offline)</code> - 2</summary>
+At the end of the session, at least one validator was found to be offline.
+
+```rust
+offline: Vec<IdentificationTuple<T>>
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>AuthorityDiscovery - 18
+<ul>
+</ul>
+</li>
+<li>Sudo - 20
+<ul>
+<li>
+<details>
+<summary>
+<code>Sudid(sudo_result)</code> - 0</summary>
+A sudo call just took place.
+
+```rust
+sudo_result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>KeyChanged(old, new)</code> - 1</summary>
+The sudo key has been updated.
+
+```rust
+old: Option<T::AccountId>
+new: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>KeyRemoved()</code> - 2</summary>
+The key was permanently removed.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SudoAsDone(sudo_result)</code> - 3</summary>
+A [sudo_as](Pallet::sudo_as) call just took place.
+
+```rust
+sudo_result: DispatchResult
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>UpgradeOrigin - 21
+<ul>
+<li>
+<details>
+<summary>
+<code>DispatchedAsRoot(result)</code> - 0</summary>
+A call was dispatched as root from an upgradable origin
+
+```rust
+result: DispatchResult
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Preimage - 22
+<ul>
+<li>
+<details>
+<summary>
+<code>Noted(hash)</code> - 0</summary>
+A preimage has been noted.
+
+```rust
+hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Requested(hash)</code> - 1</summary>
+A preimage has been requested.
+
+```rust
+hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Cleared(hash)</code> - 2</summary>
+A preimage has ben cleared.
+
+```rust
+hash: T::Hash
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>TechnicalCommittee - 23
+<ul>
+<li>
+<details>
+<summary>
+<code>Proposed(account, proposal_index, proposal_hash, threshold)</code> - 0</summary>
+A motion (given hash) has been proposed (by given account) with a threshold (given
+`MemberCount`).
+
+```rust
+account: T::AccountId
+proposal_index: ProposalIndex
+proposal_hash: T::Hash
+threshold: MemberCount
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Voted(account, proposal_hash, voted, yes, no)</code> - 1</summary>
+A motion (given hash) has been voted on by given account, leaving
+a tally (yes votes and no votes given respectively as `MemberCount`).
+
+```rust
+account: T::AccountId
+proposal_hash: T::Hash
+voted: bool
+yes: MemberCount
+no: MemberCount
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Approved(proposal_hash)</code> - 2</summary>
+A motion was approved by the required threshold.
+
+```rust
+proposal_hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Disapproved(proposal_hash)</code> - 3</summary>
+A motion was not approved by the required threshold.
+
+```rust
+proposal_hash: T::Hash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Executed(proposal_hash, result)</code> - 4</summary>
+A motion was executed; result will be `Ok` if it returned without error.
+
+```rust
+proposal_hash: T::Hash
+result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MemberExecuted(proposal_hash, result)</code> - 5</summary>
+A single member did some action; result will be `Ok` if it returned without error.
+
+```rust
+proposal_hash: T::Hash
+result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Closed(proposal_hash, yes, no)</code> - 6</summary>
+A proposal was closed because its threshold was reached or after its duration was up.
+
+```rust
+proposal_hash: T::Hash
+yes: MemberCount
+no: MemberCount
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>UniversalDividend - 30
+<ul>
+<li>
+<details>
+<summary>
+<code>NewUdCreated(amount, index, monetary_mass, members_count)</code> - 0</summary>
+A new universal dividend is created.
+
+```rust
+amount: BalanceOf<T>
+index: UdIndex
+monetary_mass: BalanceOf<T>
+members_count: BalanceOf<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UdReevalued(new_ud_amount, monetary_mass, members_count)</code> - 1</summary>
+The universal dividend has been re-evaluated.
+
+```rust
+new_ud_amount: BalanceOf<T>
+monetary_mass: BalanceOf<T>
+members_count: BalanceOf<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UdsAutoPaid(count, total, who)</code> - 2</summary>
+DUs were automatically transferred as part of a member removal.
+
+```rust
+count: UdIndex
+total: BalanceOf<T>
+who: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UdsClaimed(count, total, who)</code> - 3</summary>
+A member claimed his UDs.
+
+```rust
+count: UdIndex
+total: BalanceOf<T>
+who: T::AccountId
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Wot - 40
+<ul>
+</ul>
+</li>
+<li>Identity - 41
+<ul>
+<li>
+<details>
+<summary>
+<code>IdtyCreated(idty_index, owner_key)</code> - 0</summary>
+A new identity has been created.
+
+```rust
+idty_index: T::IdtyIndex
+owner_key: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyConfirmed(idty_index, owner_key, name)</code> - 1</summary>
+An identity has been confirmed by its owner.
+
+```rust
+idty_index: T::IdtyIndex
+owner_key: T::AccountId
+name: IdtyName
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyValidated(idty_index)</code> - 2</summary>
+An identity has been validated.
+
+```rust
+idty_index: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyChangedOwnerKey(idty_index, new_owner_key)</code> - 3</summary>
+
+
+```rust
+idty_index: T::IdtyIndex
+new_owner_key: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyRevoked(idty_index, reason)</code> - 4</summary>
+An identity has been revoked.
+
+```rust
+idty_index: T::IdtyIndex
+reason: RevocationReason
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>IdtyRemoved(idty_index, reason)</code> - 5</summary>
+An identity has been removed.
+
+```rust
+idty_index: T::IdtyIndex
+reason: RemovalReason
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Membership - 42
+<ul>
+<li>
+<details>
+<summary>
+<code>MembershipAdded(member, expire_on)</code> - 0</summary>
+A membership was added.
+
+```rust
+member: T::IdtyId
+expire_on: BlockNumberFor<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MembershipRenewed(member, expire_on)</code> - 1</summary>
+A membership was renewed.
+
+```rust
+member: T::IdtyId
+expire_on: BlockNumberFor<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MembershipRemoved(member, reason)</code> - 2</summary>
+A membership was removed.
+
+```rust
+member: T::IdtyId
+reason: MembershipRemovalReason
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Certification - 43
+<ul>
+<li>
+<details>
+<summary>
+<code>CertAdded(issuer, receiver)</code> - 0</summary>
+A new certification was added.
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertRemoved(issuer, receiver, expiration)</code> - 1</summary>
+A certification was removed.
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+expiration: bool
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>CertRenewed(issuer, receiver)</code> - 2</summary>
+A certification was renewed.
+
+```rust
+issuer: T::IdtyIndex
+receiver: T::IdtyIndex
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Distance - 44
+<ul>
+<li>
+<details>
+<summary>
+<code>EvaluationRequested(idty_index, who)</code> - 0</summary>
+A distance evaluation was requested.
+
+```rust
+idty_index: T::IdtyIndex
+who: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>EvaluatedValid(idty_index, distance)</code> - 1</summary>
+Distance rule was found valid.
+
+```rust
+idty_index: T::IdtyIndex
+distance: Perbill
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>EvaluatedInvalid(idty_index, distance)</code> - 2</summary>
+Distance rule was found invalid.
+
+```rust
+idty_index: T::IdtyIndex
+distance: Perbill
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>AtomicSwap - 50
+<ul>
+<li>
+<details>
+<summary>
+<code>NewSwap(account, proof, swap)</code> - 0</summary>
+Swap created.
+
+```rust
+account: T::AccountId
+proof: HashedProof
+swap: PendingSwap<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SwapClaimed(account, proof, success)</code> - 1</summary>
+Swap claimed. The last parameter indicates whether the execution succeeds.
+
+```rust
+account: T::AccountId
+proof: HashedProof
+success: bool
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SwapCancelled(account, proof)</code> - 2</summary>
+Swap cancelled.
+
+```rust
+account: T::AccountId
+proof: HashedProof
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Multisig - 51
+<ul>
+<li>
+<details>
+<summary>
+<code>NewMultisig(approving, multisig, call_hash)</code> - 0</summary>
+A new multisig operation has begun.
+
+```rust
+approving: T::AccountId
+multisig: T::AccountId
+call_hash: CallHash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MultisigApproval(approving, timepoint, multisig, call_hash)</code> - 1</summary>
+A multisig operation has been approved by someone.
+
+```rust
+approving: T::AccountId
+timepoint: Timepoint<BlockNumberFor<T>>
+multisig: T::AccountId
+call_hash: CallHash
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MultisigExecuted(approving, timepoint, multisig, call_hash, result)</code> - 2</summary>
+A multisig operation has been executed.
+
+```rust
+approving: T::AccountId
+timepoint: Timepoint<BlockNumberFor<T>>
+multisig: T::AccountId
+call_hash: CallHash
+result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>MultisigCancelled(cancelling, timepoint, multisig, call_hash)</code> - 3</summary>
+A multisig operation has been cancelled.
+
+```rust
+cancelling: T::AccountId
+timepoint: Timepoint<BlockNumberFor<T>>
+multisig: T::AccountId
+call_hash: CallHash
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>ProvideRandomness - 52
+<ul>
+<li>
+<details>
+<summary>
+<code>FilledRandomness(request_id, randomness)</code> - 0</summary>
+A request for randomness was fulfilled.
+
+```rust
+request_id: RequestId
+randomness: H256
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>RequestedRandomness(request_id, salt, r#type)</code> - 1</summary>
+A request for randomness was made.
+
+```rust
+request_id: RequestId
+salt: H256
+r#type: RandomnessType
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Proxy - 53
+<ul>
+<li>
+<details>
+<summary>
+<code>ProxyExecuted(result)</code> - 0</summary>
+A proxy was executed correctly, with the given.
+
+```rust
+result: DispatchResult
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PureCreated(pure, who, proxy_type, disambiguation_index)</code> - 1</summary>
+A pure account has been created by new proxy with given
+disambiguation index and proxy type.
+
+```rust
+pure: T::AccountId
+who: T::AccountId
+proxy_type: T::ProxyType
+disambiguation_index: u16
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Announced(real, proxy, call_hash)</code> - 2</summary>
+An announcement was placed to make a call in the future.
+
+```rust
+real: T::AccountId
+proxy: T::AccountId
+call_hash: CallHashOf<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProxyAdded(delegator, delegatee, proxy_type, delay)</code> - 3</summary>
+A proxy was added.
+
+```rust
+delegator: T::AccountId
+delegatee: T::AccountId
+proxy_type: T::ProxyType
+delay: BlockNumberFor<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ProxyRemoved(delegator, delegatee, proxy_type, delay)</code> - 4</summary>
+A proxy was removed.
+
+```rust
+delegator: T::AccountId
+delegatee: T::AccountId
+proxy_type: T::ProxyType
+delay: BlockNumberFor<T>
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Utility - 54
+<ul>
+<li>
+<details>
+<summary>
+<code>BatchInterrupted(index, error)</code> - 0</summary>
+Batch of dispatches did not complete fully. Index of first failing dispatch given, as
+well as the error.
+
+```rust
+index: u32
+error: DispatchError
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>BatchCompleted()</code> - 1</summary>
+Batch of dispatches completed fully with no error.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>BatchCompletedWithErrors()</code> - 2</summary>
+Batch of dispatches completed but has errors.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ItemCompleted()</code> - 3</summary>
+A single item within a Batch of dispatches has completed with no error.
+
+```rust
+no args
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>ItemFailed(error)</code> - 4</summary>
+A single item within a Batch of dispatches has completed with error.
+
+```rust
+error: DispatchError
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>DispatchedAs(result)</code> - 5</summary>
+A call was dispatched.
+
+```rust
+result: DispatchResult
+```
+
+</details>
+</li>
+</ul>
+</li>
+<li>Treasury - 55
+<ul>
+<li>
+<details>
+<summary>
+<code>Proposed(proposal_index)</code> - 0</summary>
+New proposal.
+
+```rust
+proposal_index: ProposalIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Spending(budget_remaining)</code> - 1</summary>
+We have ended a spend period and will now allocate funds.
+
+```rust
+budget_remaining: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Awarded(proposal_index, award, account)</code> - 2</summary>
+Some funds have been allocated.
+
+```rust
+proposal_index: ProposalIndex
+award: BalanceOf<T, I>
+account: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Rejected(proposal_index, slashed)</code> - 3</summary>
+A proposal was rejected; funds were slashed.
+
+```rust
+proposal_index: ProposalIndex
+slashed: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Burnt(burnt_funds)</code> - 4</summary>
+Some of our funds have been burnt.
+
+```rust
+burnt_funds: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Rollover(rollover_balance)</code> - 5</summary>
+Spending has finished; this is the amount that rolls over until next spend.
+
+```rust
+rollover_balance: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Deposit(value)</code> - 6</summary>
+Some funds have been deposited.
+
+```rust
+value: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SpendApproved(proposal_index, amount, beneficiary)</code> - 7</summary>
+A new spend proposal has been approved.
+
+```rust
+proposal_index: ProposalIndex
+amount: BalanceOf<T, I>
+beneficiary: T::AccountId
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>UpdatedInactive(reactivated, deactivated)</code> - 8</summary>
+The inactive funds of the pallet have been updated.
+
+```rust
+reactivated: BalanceOf<T, I>
+deactivated: BalanceOf<T, I>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AssetSpendApproved(index, asset_kind, amount, beneficiary, valid_from, expire_at)</code> - 9</summary>
+A new asset spend proposal has been approved.
+
+```rust
+index: SpendIndex
+asset_kind: T::AssetKind
+amount: AssetBalanceOf<T, I>
+beneficiary: T::Beneficiary
+valid_from: BlockNumberFor<T>
+expire_at: BlockNumberFor<T>
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>AssetSpendVoided(index)</code> - 10</summary>
+An approved spend was voided.
+
+```rust
+index: SpendIndex
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>Paid(index, payment_id)</code> - 11</summary>
+A payment happened.
+
+```rust
+index: SpendIndex
+payment_id: <T::Paymaster as Pay>::Id
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>PaymentFailed(index, payment_id)</code> - 12</summary>
+A payment failed and can be retried.
+
+```rust
+index: SpendIndex
+payment_id: <T::Paymaster as Pay>::Id
+```
+
+</details>
+</li>
+<li>
+<details>
+<summary>
+<code>SpendProcessed(index)</code> - 13</summary>
+A spend was processed and removed from the storage. It might have been successfully
+paid or it may have expired.
+
+```rust
+index: SpendIndex
+```
+
+</details>
+</li>
+</ul>
+</li>
+</ul>
\ No newline at end of file
diff --git a/xtask/res/templates/runtime-calls-category.md b/xtask/res/templates/runtime-calls-category.md
index df9b5ec6c..71c6a7bce 100644
--- a/xtask/res/templates/runtime-calls-category.md
+++ b/xtask/res/templates/runtime-calls-category.md
@@ -23,7 +23,8 @@ Taking {{ call.weight }} % of a block.
 ```
 </details>
 
-See [Pallet::{{ call.name }}]({{ base_url }}/doc/{{ pallet.type_name }}/pallet/struct.Pallet.html#method.{{ call.name }})
+{# replace markdown sytax in documentation breaking the final result #}
+{{ call.documentation | replace(from="# WARNING:", to="WARNING:") | replace(from="## Complexity", to="**Complexity**") }}
 
 {% endfor -%}
 {% endfor -%}
diff --git a/xtask/src/gen_doc.rs b/xtask/src/gen_doc.rs
index df77cabf2..9b94cca95 100644
--- a/xtask/src/gen_doc.rs
+++ b/xtask/src/gen_doc.rs
@@ -20,7 +20,6 @@ use core::hash::Hash;
 use scale_info::form::PortableForm;
 use serde::Serialize;
 use std::collections::HashMap;
-use std::env;
 use std::path::Path;
 use std::process::Command;
 use std::{
@@ -43,9 +42,9 @@ where
 
 // consts
 
-const CALLS_DOC_FILEPATH: &str = "target/doc/runtime-calls.md";
-const EVENTS_DOC_FILEPATH: &str = "target/doc/runtime-events.md";
-const ERRORS_DOC_FILEPATH: &str = "target/doc/runtime-errors.md";
+const CALLS_DOC_FILEPATH: &str = "docs/api/runtime-calls.md";
+const EVENTS_DOC_FILEPATH: &str = "docs/api/runtime-events.md";
+const ERRORS_DOC_FILEPATH: &str = "docs/api/runtime-errors.md";
 const TEMPLATES_GLOB: &str = "xtask/res/templates/*.md";
 const WEIGHT_FILEPATH: &str = "runtime/common/src/weights/";
 
@@ -554,9 +553,6 @@ fn print_runtime(pallets: RuntimePallets) -> (String, String, String) {
     context.insert("disabled_calls_counter", &disabled_calls_counter);
     context.insert("disabled_calls_pallets", &disabled_calls_pallets);
 
-    let base_url: String = env::var("BASE_URL").unwrap_or(String::from("."));
-    context.insert("base_url", &base_url);
-
     let call_doc = tera
         .render("runtime-calls.md", &context)
         .expect("template error");
-- 
GitLab