1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
use codec::FullCodec;
use sp_runtime::traits::{AtLeast32BitUnsigned, MaybeSerializeDeserialize};
use sp_std::fmt::Debug;

/// Hooks to manage reward pool
pub trait RewardHandler<AccountId, CurrencyId> {
	/// The reward balance type
	type Balance: AtLeast32BitUnsigned + Default + Copy + MaybeSerializeDeserialize + Debug;

	/// The reward pool ID type
	type PoolId: FullCodec;

	/// Payout the reward to `who`
	fn payout(who: &AccountId, pool: &Self::PoolId, currency_id: CurrencyId, amount: Self::Balance);
}