No need for AssetBalanceOf (#14325)

This commit is contained in:
Squirrel
2023-06-08 21:49:25 +01:00
committed by GitHub
parent ddb46a8aa0
commit 8d51961704
2 changed files with 55 additions and 58 deletions
+55 -55
View File
@@ -241,13 +241,13 @@ pub mod pallet {
/// The pool id of the pool that the liquidity was added to.
pool_id: PoolIdOf<T>,
/// The amount of the first asset that was added to the pool.
amount1_provided: AssetBalanceOf<T>,
amount1_provided: T::AssetBalance,
/// The amount of the second asset that was added to the pool.
amount2_provided: AssetBalanceOf<T>,
amount2_provided: T::AssetBalance,
/// The id of the lp token that was minted.
lp_token: T::PoolAssetId,
/// The amount of lp tokens that were minted of that id.
lp_token_minted: AssetBalanceOf<T>,
lp_token_minted: T::AssetBalance,
},
/// A successful call of the `RemoveLiquidity` extrinsic will create this event.
@@ -259,13 +259,13 @@ pub mod pallet {
/// The pool id that the liquidity was removed from.
pool_id: PoolIdOf<T>,
/// The amount of the first asset that was removed from the pool.
amount1: AssetBalanceOf<T>,
amount1: T::AssetBalance,
/// The amount of the second asset that was removed from the pool.
amount2: AssetBalanceOf<T>,
amount2: T::AssetBalance,
/// The id of the lp token that was burned.
lp_token: T::PoolAssetId,
/// The amount of lp tokens that were burned of that id.
lp_token_burned: AssetBalanceOf<T>,
lp_token_burned: T::AssetBalance,
/// Liquidity withdrawal fee (%).
withdrawal_fee: Permill,
},
@@ -280,9 +280,9 @@ pub mod pallet {
/// E.g. A -> Dot -> B
path: BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
/// The amount of the first asset that was swapped.
amount_in: AssetBalanceOf<T>,
amount_in: T::AssetBalance,
/// The amount of the second asset that was received.
amount_out: AssetBalanceOf<T>,
amount_out: T::AssetBalance,
},
/// An amount has been transferred from one account to another.
Transfer {
@@ -293,7 +293,7 @@ pub mod pallet {
/// The asset that was transferred.
asset: T::MultiAssetId,
/// The amount of the asset that was transferred.
amount: AssetBalanceOf<T>,
amount: T::AssetBalance,
},
}
@@ -427,10 +427,10 @@ pub mod pallet {
origin: OriginFor<T>,
asset1: T::MultiAssetId,
asset2: T::MultiAssetId,
amount1_desired: AssetBalanceOf<T>,
amount2_desired: AssetBalanceOf<T>,
amount1_min: AssetBalanceOf<T>,
amount2_min: AssetBalanceOf<T>,
amount1_desired: T::AssetBalance,
amount2_desired: T::AssetBalance,
amount1_min: T::AssetBalance,
amount2_min: T::AssetBalance,
mint_to: T::AccountId,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -453,8 +453,8 @@ pub mod pallet {
let maybe_pool = Pools::<T>::get(pool_id.clone());
let pool = maybe_pool.as_ref().ok_or(Error::<T>::PoolNotFound)?;
let amount1: AssetBalanceOf<T>;
let amount2: AssetBalanceOf<T>;
let amount1: T::AssetBalance;
let amount2: T::AssetBalance;
let pool_account = Self::get_pool_account(&pool_id);
let reserve1 = Self::get_balance(&pool_account, &asset1)?;
let reserve2 = Self::get_balance(&pool_account, &asset2)?;
@@ -497,7 +497,7 @@ pub mod pallet {
let total_supply = T::PoolAssets::total_issuance(pool.lp_token.clone());
let lp_token_amount: AssetBalanceOf<T>;
let lp_token_amount: T::AssetBalance;
if total_supply.is_zero() {
lp_token_amount = Self::calc_lp_amount_for_zero_supply(&amount1, &amount2)?;
T::PoolAssets::mint_into(
@@ -540,9 +540,9 @@ pub mod pallet {
origin: OriginFor<T>,
asset1: T::MultiAssetId,
asset2: T::MultiAssetId,
lp_token_burn: AssetBalanceOf<T>,
amount1_min_receive: AssetBalanceOf<T>,
amount2_min_receive: AssetBalanceOf<T>,
lp_token_burn: T::AssetBalance,
amount1_min_receive: T::AssetBalance,
amount2_min_receive: T::AssetBalance,
withdraw_to: T::AccountId,
) -> DispatchResult {
let sender = ensure_signed(origin)?;
@@ -618,8 +618,8 @@ pub mod pallet {
pub fn swap_exact_tokens_for_tokens(
origin: OriginFor<T>,
path: BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
amount_in: AssetBalanceOf<T>,
amount_out_min: AssetBalanceOf<T>,
amount_in: T::AssetBalance,
amount_out_min: T::AssetBalance,
send_to: T::AccountId,
keep_alive: bool,
) -> DispatchResult {
@@ -659,8 +659,8 @@ pub mod pallet {
pub fn swap_tokens_for_exact_tokens(
origin: OriginFor<T>,
path: BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
amount_out: AssetBalanceOf<T>,
amount_in_max: AssetBalanceOf<T>,
amount_out: T::AssetBalance,
amount_in_max: T::AssetBalance,
send_to: T::AccountId,
keep_alive: bool,
) -> DispatchResult {
@@ -695,7 +695,7 @@ pub mod pallet {
asset_id: &T::MultiAssetId,
from: &T::AccountId,
to: &T::AccountId,
amount: AssetBalanceOf<T>,
amount: T::AssetBalance,
keep_alive: bool,
) -> Result<T::AssetBalance, DispatchError> {
Self::deposit_event(Event::Transfer {
@@ -737,7 +737,7 @@ pub mod pallet {
pub(crate) fn do_swap(
sender: &T::AccountId,
amounts: &Vec<AssetBalanceOf<T>>,
amounts: &Vec<T::AssetBalance>,
path: &BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
send_to: &T::AccountId,
keep_alive: bool,
@@ -827,7 +827,7 @@ pub mod pallet {
pub fn get_reserves(
asset1: &T::MultiAssetId,
asset2: &T::MultiAssetId,
) -> Result<(AssetBalanceOf<T>, AssetBalanceOf<T>), Error<T>> {
) -> Result<(T::AssetBalance, T::AssetBalance), Error<T>> {
let pool_id = Self::get_pool_id(asset1.clone(), asset2.clone());
let pool_account = Self::get_pool_account(&pool_id);
@@ -842,10 +842,10 @@ pub mod pallet {
}
pub(crate) fn get_amounts_in(
amount_out: &AssetBalanceOf<T>,
amount_out: &T::AssetBalance,
path: &BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
) -> Result<Vec<AssetBalanceOf<T>>, DispatchError> {
let mut amounts: Vec<AssetBalanceOf<T>> = vec![*amount_out];
) -> Result<Vec<T::AssetBalance>, DispatchError> {
let mut amounts: Vec<T::AssetBalance> = vec![*amount_out];
for assets_pair in path.windows(2).rev() {
if let [asset1, asset2] = assets_pair {
@@ -861,10 +861,10 @@ pub mod pallet {
}
pub(crate) fn get_amounts_out(
amount_in: &AssetBalanceOf<T>,
amount_in: &T::AssetBalance,
path: &BoundedVec<T::MultiAssetId, T::MaxSwapPathLength>,
) -> Result<Vec<AssetBalanceOf<T>>, DispatchError> {
let mut amounts: Vec<AssetBalanceOf<T>> = vec![*amount_in];
) -> Result<Vec<T::AssetBalance>, DispatchError> {
let mut amounts: Vec<T::AssetBalance> = vec![*amount_in];
for assets_pair in path.windows(2) {
if let [asset1, asset2] = assets_pair {
@@ -882,9 +882,9 @@ pub mod pallet {
pub fn quote_price_exact_tokens_for_tokens(
asset1: T::MultiAssetId,
asset2: T::MultiAssetId,
amount: AssetBalanceOf<T>,
amount: T::AssetBalance,
include_fee: bool,
) -> Option<AssetBalanceOf<T>> {
) -> Option<T::AssetBalance> {
let pool_id = Self::get_pool_id(asset1.clone(), asset2.clone());
let pool_account = Self::get_pool_account(&pool_id);
@@ -905,9 +905,9 @@ pub mod pallet {
pub fn quote_price_tokens_for_exact_tokens(
asset1: T::MultiAssetId,
asset2: T::MultiAssetId,
amount: AssetBalanceOf<T>,
amount: T::AssetBalance,
include_fee: bool,
) -> Option<AssetBalanceOf<T>> {
) -> Option<T::AssetBalance> {
let pool_id = Self::get_pool_id(asset1.clone(), asset2.clone());
let pool_account = Self::get_pool_account(&pool_id);
@@ -926,18 +926,18 @@ pub mod pallet {
/// Calculates the optimal amount from the reserves.
pub fn quote(
amount: &AssetBalanceOf<T>,
reserve1: &AssetBalanceOf<T>,
reserve2: &AssetBalanceOf<T>,
) -> Result<AssetBalanceOf<T>, Error<T>> {
amount: &T::AssetBalance,
reserve1: &T::AssetBalance,
reserve2: &T::AssetBalance,
) -> Result<T::AssetBalance, Error<T>> {
// amount * reserve2 / reserve1
Self::mul_div(amount, reserve2, reserve1)
}
pub(super) fn calc_lp_amount_for_zero_supply(
amount1: &AssetBalanceOf<T>,
amount2: &AssetBalanceOf<T>,
) -> Result<AssetBalanceOf<T>, Error<T>> {
amount1: &T::AssetBalance,
amount2: &T::AssetBalance,
) -> Result<T::AssetBalance, Error<T>> {
let amount1 = T::HigherPrecisionBalance::from(*amount1);
let amount2 = T::HigherPrecisionBalance::from(*amount2);
@@ -952,10 +952,10 @@ pub mod pallet {
}
fn mul_div(
a: &AssetBalanceOf<T>,
b: &AssetBalanceOf<T>,
c: &AssetBalanceOf<T>,
) -> Result<AssetBalanceOf<T>, Error<T>> {
a: &T::AssetBalance,
b: &T::AssetBalance,
c: &T::AssetBalance,
) -> Result<T::AssetBalance, Error<T>> {
let a = T::HigherPrecisionBalance::from(*a);
let b = T::HigherPrecisionBalance::from(*b);
let c = T::HigherPrecisionBalance::from(*c);
@@ -974,10 +974,10 @@ pub mod pallet {
/// Given an input amount of an asset and pair reserves, returns the maximum output amount
/// of the other asset
pub fn get_amount_out(
amount_in: &AssetBalanceOf<T>,
reserve_in: &AssetBalanceOf<T>,
reserve_out: &AssetBalanceOf<T>,
) -> Result<AssetBalanceOf<T>, Error<T>> {
amount_in: &T::AssetBalance,
reserve_in: &T::AssetBalance,
reserve_out: &T::AssetBalance,
) -> Result<T::AssetBalance, Error<T>> {
let amount_in = T::HigherPrecisionBalance::from(*amount_in);
let reserve_in = T::HigherPrecisionBalance::from(*reserve_in);
let reserve_out = T::HigherPrecisionBalance::from(*reserve_out);
@@ -1009,10 +1009,10 @@ pub mod pallet {
/// Given an output amount of an asset and pair reserves, returns a required input amount
/// of the other asset
pub fn get_amount_in(
amount_out: &AssetBalanceOf<T>,
reserve_in: &AssetBalanceOf<T>,
reserve_out: &AssetBalanceOf<T>,
) -> Result<AssetBalanceOf<T>, Error<T>> {
amount_out: &T::AssetBalance,
reserve_in: &T::AssetBalance,
reserve_out: &T::AssetBalance,
) -> Result<T::AssetBalance, Error<T>> {
let amount_out = T::HigherPrecisionBalance::from(*amount_out);
let reserve_in = T::HigherPrecisionBalance::from(*reserve_in);
let reserve_out = T::HigherPrecisionBalance::from(*reserve_out);
@@ -20,11 +20,8 @@ use core::marker::PhantomData;
use sp_std::cmp::Ordering;
use codec::{Decode, Encode, MaxEncodedLen};
use frame_support::traits::fungibles::Inspect;
use scale_info::TypeInfo;
pub(super) type AssetBalanceOf<T> =
<<T as Config>::Assets as Inspect<<T as frame_system::Config>::AccountId>>::Balance;
pub(super) type PoolIdOf<T> = (<T as Config>::MultiAssetId, <T as Config>::MultiAssetId);
/// Stores the lp_token asset id a particular pool has been assigned.