use codec::FullCodec;
use frame_support::traits::{BalanceStatus, LockIdentifier};
pub use frame_support::Parameter;
use sp_runtime::{
traits::{
AtLeast32BitUnsigned, MaybeSerializeDeserialize, Member,
},
DispatchResult
};
use sp_std::fmt::Debug;
pub trait TesPriceProvider<CurrencyId, Price> {
fn get_price(base: CurrencyId, quote: CurrencyId) -> Option<Price>;
}
pub struct ElastAdjustmentFrequency<BlockNumber> {
pub adjustment_frequency: BlockNumber,
}
pub trait SerpTes<AccountId, BlockNumber, CurrencyId, Price> {
type CurrencyId: Parameter + Member + Copy + MaybeSerializeDeserialize;
type Balance: AtLeast32BitUnsigned + FullCodec + Copy + MaybeSerializeDeserialize + Debug + Default;
fn serp_elast(currency_id: Self::CurrencyId, price: Price) -> DispatchResult;
fn calculate_supply_change(currency_id: Self::CurrencyId, numerator: u64, denominator: u64, supply: u64) -> u64;
}