drink-next 0.8.8

Minimal sufficient architecture that allows for a fully functional ink! contract development
//! Balance API for the sandbox.
use frame_support::{sp_runtime::DispatchError, traits::fungible::Mutate};

use super::Sandbox;
use crate::{runtime::AccountIdFor, BalanceOf, Runtime};

impl<R> Sandbox<R>
where
    R: Runtime,
    R::Config: pallet_balances::Config,
{
    /// Mint tokens to an account.
    ///
    /// # Arguments
    ///
    /// * `address` - The address of the account to add tokens to.
    /// * `amount` - The number of tokens to add.
    pub fn mint_into(
        &mut self,
        address: AccountIdFor<R::Config>,
        amount: BalanceOf<R::Config>,
    ) -> Result<BalanceOf<R::Config>, DispatchError> {
        self.execute_with(|| pallet_balances::Pallet::<R::Config>::mint_into(&address, amount))
    }

    /// Return the free balance of an account.
    ///
    /// # Arguments
    ///
    /// * `address` - The address of the account to query.
    pub fn free_balance(&mut self, address: &AccountIdFor<R::Config>) -> BalanceOf<R::Config> {
        self.execute_with(|| pallet_balances::Pallet::<R::Config>::free_balance(address))
    }
}