mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-07 07:18:03 +00:00
refactor: inconsistent BalanceConversion fn (#13610)
* refactor: inconsistent BalanceConversion fn * Revert "refactor: inconsistent BalanceConversion fn" This reverts commit 1177877631a11b64df6f019b5390a8a7018e3a3f. * refactor: rename BalanceConversion trait * feat: add ConversionFromAssetBalance
This commit is contained in:
committed by
GitHub
parent
795fcf0484
commit
74bbae6901
@@ -1162,7 +1162,7 @@ fn set_min_balance_should_work() {
|
||||
#[test]
|
||||
fn balance_conversion_should_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
use frame_support::traits::tokens::BalanceConversion;
|
||||
use frame_support::traits::tokens::ConversionToAssetBalance;
|
||||
|
||||
let id = 42;
|
||||
assert_ok!(Assets::force_create(RuntimeOrigin::root(), id, 1, true, 10));
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
use super::*;
|
||||
use frame_support::{
|
||||
pallet_prelude::*,
|
||||
traits::{fungible, tokens::BalanceConversion},
|
||||
traits::{fungible, tokens::ConversionToAssetBalance},
|
||||
};
|
||||
use sp_runtime::{traits::Convert, FixedPointNumber, FixedPointOperand, FixedU128};
|
||||
|
||||
@@ -228,7 +228,7 @@ type BalanceOf<F, T> = <F as fungible::Inspect<AccountIdOf<T>>>::Balance;
|
||||
/// Converts a balance value into an asset balance based on the ratio between the fungible's
|
||||
/// minimum balance and the minimum asset balance.
|
||||
pub struct BalanceToAssetBalance<F, T, CON, I = ()>(PhantomData<(F, T, CON, I)>);
|
||||
impl<F, T, CON, I> BalanceConversion<BalanceOf<F, T>, AssetIdOf<T, I>, AssetBalanceOf<T, I>>
|
||||
impl<F, T, CON, I> ConversionToAssetBalance<BalanceOf<F, T>, AssetIdOf<T, I>, AssetBalanceOf<T, I>>
|
||||
for BalanceToAssetBalance<F, T, CON, I>
|
||||
where
|
||||
F: fungible::Inspect<AccountIdOf<T>>,
|
||||
|
||||
@@ -29,8 +29,8 @@ pub mod nonfungibles_v2;
|
||||
pub use imbalance::Imbalance;
|
||||
pub mod pay;
|
||||
pub use misc::{
|
||||
AssetId, Balance, BalanceConversion, BalanceStatus, ConvertRank, DepositConsequence,
|
||||
ExistenceRequirement, Fortitude, GetSalary, Locker, Precision, Preservation, Provenance,
|
||||
Restriction, WithdrawConsequence, WithdrawReasons,
|
||||
AssetId, Balance, BalanceStatus, ConversionFromAssetBalance, ConversionToAssetBalance,
|
||||
ConvertRank, DepositConsequence, ExistenceRequirement, Fortitude, GetSalary, Locker, Precision,
|
||||
Preservation, Provenance, Restriction, WithdrawConsequence, WithdrawReasons,
|
||||
};
|
||||
pub use pay::{Pay, PayFromAccount, PaymentStatus};
|
||||
|
||||
@@ -244,9 +244,19 @@ impl<
|
||||
}
|
||||
|
||||
/// Converts a balance value into an asset balance.
|
||||
pub trait BalanceConversion<InBalance, AssetId, OutBalance> {
|
||||
pub trait ConversionToAssetBalance<InBalance, AssetId, AssetBalance> {
|
||||
type Error;
|
||||
fn to_asset_balance(balance: InBalance, asset_id: AssetId) -> Result<OutBalance, Self::Error>;
|
||||
fn to_asset_balance(balance: InBalance, asset_id: AssetId)
|
||||
-> Result<AssetBalance, Self::Error>;
|
||||
}
|
||||
|
||||
/// Converts an asset balance value into balance.
|
||||
pub trait ConversionFromAssetBalance<AssetBalance, AssetId, OutBalance> {
|
||||
type Error;
|
||||
fn from_asset_balance(
|
||||
balance: AssetBalance,
|
||||
asset_id: AssetId,
|
||||
) -> Result<OutBalance, Self::Error>;
|
||||
}
|
||||
|
||||
/// Trait to handle asset locking mechanism to ensure interactions with the asset can be implemented
|
||||
|
||||
@@ -22,7 +22,8 @@ use frame_support::{
|
||||
traits::{
|
||||
fungibles::{Balanced, Credit, Inspect},
|
||||
tokens::{
|
||||
Balance, BalanceConversion, Fortitude::Polite, Precision::Exact, Preservation::Protect,
|
||||
Balance, ConversionToAssetBalance, Fortitude::Polite, Precision::Exact,
|
||||
Preservation::Protect,
|
||||
},
|
||||
},
|
||||
unsigned::TransactionValidityError,
|
||||
@@ -87,7 +88,7 @@ impl<A, B: Balanced<A>> HandleCredit<A, B> for () {
|
||||
}
|
||||
|
||||
/// Implements the asset transaction for a balance to asset converter (implementing
|
||||
/// [`BalanceConversion`]) and a credit handler (implementing [`HandleCredit`]).
|
||||
/// [`ConversionToAssetBalance`]) and a credit handler (implementing [`HandleCredit`]).
|
||||
///
|
||||
/// The credit handler is given the complete fee in terms of the asset used for the transaction.
|
||||
pub struct FungiblesAdapter<CON, HC>(PhantomData<(CON, HC)>);
|
||||
@@ -97,7 +98,7 @@ pub struct FungiblesAdapter<CON, HC>(PhantomData<(CON, HC)>);
|
||||
impl<T, CON, HC> OnChargeAssetTransaction<T> for FungiblesAdapter<CON, HC>
|
||||
where
|
||||
T: Config,
|
||||
CON: BalanceConversion<BalanceOf<T>, AssetIdOf<T>, AssetBalanceOf<T>>,
|
||||
CON: ConversionToAssetBalance<BalanceOf<T>, AssetIdOf<T>, AssetBalanceOf<T>>,
|
||||
HC: HandleCredit<T::AccountId, T::Fungibles>,
|
||||
AssetIdOf<T>: FullCodec + Copy + MaybeSerializeDeserialize + Debug + Default + Eq + TypeInfo,
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user