Newer
Older
use frame_support::{decl_module, decl_storage, Parameter};
use orml_traits::{DataProvider, PriceProvider};
use orml_utilities::FixedU128;
use sr_primitives::traits::{MaybeSerializeDeserialize, Member};
pub type Price = FixedU128;
type CurrencyId: Parameter + Member + Copy + MaybeSerializeDeserialize;
type Source: DataProvider<Self::CurrencyId, Price>;
}
mod mock;
mod tests;
decl_storage! {
trait Store for Module<T: Trait> as Prices { }
}
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin { }
}
impl<T: Trait> Module<T> {}
impl<T: Trait> PriceProvider<T::CurrencyId, Price> for Module<T> {
fn get_price(base_currency_id: T::CurrencyId, quote_currency_id: T::CurrencyId) -> Option<Price> {
let base_price = T::Source::get(&base_currency_id)?;
let quote_price = T::Source::get("e_currency_id)?;
quote_price.checked_div(&base_price)