use crate::traits::schedule::DispatchTime;
use sp_runtime::{DispatchError, DispatchResult};
pub trait RewardsPool<AccountId> {
type AssetId;
type BlockNumber;
type PoolId;
type Balance;
fn create_pool(
creator: &AccountId,
staked_asset_id: Self::AssetId,
reward_asset_id: Self::AssetId,
reward_rate_per_block: Self::Balance,
expiry: DispatchTime<Self::BlockNumber>,
admin: &AccountId,
) -> Result<Self::PoolId, DispatchError>;
fn set_pool_reward_rate_per_block(
admin: &AccountId,
pool_id: Self::PoolId,
new_reward_rate_per_block: Self::Balance,
) -> DispatchResult;
fn set_pool_admin(
admin: &AccountId,
pool_id: Self::PoolId,
new_admin: AccountId,
) -> DispatchResult;
fn set_pool_expiry_block(
admin: &AccountId,
pool_id: Self::PoolId,
new_expiry: DispatchTime<Self::BlockNumber>,
) -> DispatchResult;
}