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