pub trait Executors<T, Balance>where
T: Config,{
// Required methods
fn active_set() -> Vec<<T as Config>::AccountId, Global>;
fn reserve_bond(
executor: &<T as Config>::AccountId,
amount: Balance
) -> Result<Balance, DispatchError>;
fn unreserve_bond(
executor: &<T as Config>::AccountId,
amount: Balance
) -> Balance;
fn slash_bond(
executor: &<T as Config>::AccountId,
amount: Balance
) -> Balance;
fn increase_bond(
executor: &<T as Config>::AccountId,
amount: Balance
) -> Balance;
fn collateral_bond(executor: &<T as Config>::AccountId) -> Balance;
fn total_nominated_stake(executor: &<T as Config>::AccountId) -> Balance;
fn stakes(
staker: &<T as Config>::AccountId
) -> Vec<NominatedStake<<T as Config>::AccountId, Balance>, Global>;
fn stakes_per_executor(
executor: &<T as Config>::AccountId
) -> Vec<NominatedStake<<T as Config>::AccountId, Balance>, Global>;
fn recalculate_executors_stakes();
}