/// For now we assert that parachain validator set is exactly equivalent to the authority set, and
/// so we define it to be the same type as `SessionKey`. In the future it may have different crypto.
/// However, the chunk index held by a validator may not always be equal to its `ValidatorIndex`, so
/// For now we assert that parachain validator set is exactly equivalent to the authority set, and
/// so we define it to be the same type as `SessionKey`. In the future it may have different crypto.
/// The MQC head for the downward message queue of the given para. See more in the `Dmp` module.
/// The signal that indicates whether the parachain should go-ahead with the proposed validation
/// At the moment we have runtime upgrade on chain, which restricts scalability severely. If we want
/// theoretical limit, just below enough what the target type supports, so comparisons are possible
/// Backing votes threshold used from the host prior to runtime API version 6 and from the runtime
/// candidate. This information is derived from the chain state and will vary from para to para,
/// Since this data is used to form inputs to the validation function, it needs to be persisted by
/// Furthermore, the validation data acts as a way to authorize the additional data the collator
/// needs to pass to the validation function. For example, the validation function can check whether
/// the incoming messages (e.g. downward messages) were actually sent by using the data provided in
/// these checks have already been done. As such, there is no need for the validation data used to
/// inform validators and collators about the checks the relay-chain will perform to be persisted by
/// Returns either an error, indicating that one of the signatures was invalid or that the index
#[derive(Encode, Decode, Default, Clone, Copy, Debug, PartialEq, Eq, TypeInfo, PartialOrd, Ord)]
/// Returns the block number of the next rotation after the current block. If the current block
/// Returns the block number of the last rotation before or including the current block. If the
/// Abridged version of `HrmpChannel` (from the `Hrmp` parachains host runtime module) meant to be
/// A struct that the relay-chain communicates to a parachain indicating what course of action the
/// This data type appears in the last step of the upgrade process. After the parachain observes it
/// Convert from an unchecked, the verification of correctness of the `unchecked` statement set
/// NOTE: `SessionInfo` is frozen. Do not include new fields, consider creating a separate runtime
/// API. Reasoning and further outlook [here](https://github.com/paritytech/polkadot/issues/6586).
/// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148).
/// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148)
/// NOTE: There might be more authorities in the current session, than validators participating
/// [`max_validators`](https://github.com/paritytech/polkadot/blob/a52dca2be7840b23c19c153cf7e110b1e3e475f8/runtime/parachains/src/configuration.rs#L148).
#[derive(Encode, Decode, TypeInfo, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[derive(Encode, Decode, TypeInfo, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
/// Bit indices in the `HostConfiguration.node_features` that correspond to different node features.
/// [RFC-47](https://github.com/polkadot-fellows/RFCs/blob/main/text/0047-assignment-of-availability-chunks.md).