//! id dedicated to the staking pallet, and delegators can call an extrinsic to transfer their rewards
//! to their own account (but as reserved). Keeping funds reserved in user accounts allow them to
/// Value of the counter at the last time the delegator claimed its rewards or changed its amount of shares
/// The difference between the checkpoint and the counter is the amount of claimable reward per share for
/// When leaving delegating funds are placed in the leaving pool until the leaving period is elapsed.
RuntimeDebug, PartialEq, Eq, Encode, Decode, Copy, Clone, TypeInfo, Serialize, Deserialize,
/// could fall out of this list if they have less stake than the top `EligibleCandidatesBufferSize`
/// eligible candidates. One of this top candidates leaving will then not bring the dropped candidate
/// Execute pending operations can incur in claim manual rewards per operation, we simply add the worst case
#[pallet::weight(T::WeightInfo::execute_pending_operations(operations.len() as u32).saturating_add(T::WeightInfo::claim_manual_rewards(operations.len() as u32)))]
/// Request undelegate can incur in either claim manual rewards or hold rebalances, we simply add the worst case
#[pallet::weight(T::WeightInfo::request_undelegate().saturating_add(T::WeightInfo::claim_manual_rewards(1).max(T::WeightInfo::rebalance_hold())))]