//! - **Session:** A session is a period of time that has a constant set of validators. Validators
//! can only join or exit the validator set at a session change. It is measured in block numbers.
//! - **Session key:** A session key is actually several keys kept together that provide the various
//! - **Session key configuration process:** Session keys are set using `set_keys` for use not in
//! the next session, but the session after next. They are stored in `NextKeys`, a mapping between
//! the caller's `ValidatorId` and the session keys provided. `set_keys` allows users to set their
//! `ensure_signed`, which checks that the origin is a signed account. As such, the account ID of
//! Rather, it relies on an implementation of `ShouldEndSession` to dictate a new session's start.
//! - **Session rotation configuration:** Configure as either a 'normal' (rewardable session where
//! queries the provided implementation of `ShouldEndSession`. If the session is to end the newly
//! corresponding session keys, which may have been registered via `set_keys` during the previous
//! - `rotate_session` - Change to the next session. Register the new authority set. Queue changes
//! The [Staking pallet](../pallet_staking/index.html) uses the Session pallet to get the validator
//! fn validators<T: pallet_session::Config>() -> Vec<<T as pallet_session::Config>::ValidatorId> {
T::SessionHandler::on_new_session::<T::Keys>(changed, &session_keys, &queued_amalgamated);