pub trait Valuate<Balance, CurrencyId> {
// Required methods
fn get_liquidity_asset(
first_asset_id: CurrencyId,
second_asset_id: CurrencyId
) -> Result<CurrencyId, DispatchError>;
fn get_liquidity_token_mga_pool(
liquidity_token_id: CurrencyId
) -> Result<(CurrencyId, CurrencyId), DispatchError>;
fn valuate_liquidity_token(
liquidity_token_id: CurrencyId,
liquidity_token_amount: Balance
) -> Balance;
fn valuate_non_liquidity_token(
liquidity_token_id: CurrencyId,
liquidity_token_amount: Balance
) -> Balance;
fn scale_liquidity_by_mga_valuation(
mga_valuation: Balance,
liquidity_token_amount: Balance,
mga_token_amount: Balance
) -> Balance;
fn get_pool_state(
liquidity_token_id: CurrencyId
) -> Option<(Balance, Balance)>;
fn get_reserves(
first_asset_id: CurrencyId,
second_asset_id: CurrencyId
) -> Result<(Balance, Balance), DispatchError>;
fn is_liquidity_token(liquidity_asset_id: CurrencyId) -> bool;
}