use cosmwasm_std::{Addr, Coin};
use cw_orch::environment::MutCwEnv;
use crate::{
client::{AbstractClient, AbstractClientResult},
Environment,
};
impl<Chain: MutCwEnv> AbstractClient<Chain> {
pub fn set_balance(
&self,
address: impl Into<String>,
amount: &'_ [Coin],
) -> AbstractClientResult<()> {
self.environment()
.set_balance(&Addr::unchecked(address), amount.to_vec())
.map_err(Into::into)
.map_err(Into::into)
}
pub fn set_balances<'a>(
&self,
balances: impl IntoIterator<Item = (impl Into<String>, &'a [Coin])>,
) -> AbstractClientResult<()> {
balances
.into_iter()
.try_for_each(|(address, amount)| self.set_balance(address, amount))?;
Ok(())
}
pub fn add_balance(
&self,
address: impl Into<String>,
amount: &[Coin],
) -> AbstractClientResult<()> {
self.environment()
.add_balance(&Addr::unchecked(address), amount.to_vec())
.map_err(Into::into)
.map_err(Into::into)
}
pub fn add_balances<'a>(
&self,
balances: impl IntoIterator<Item = (impl Into<String>, &'a [Coin])>,
) -> AbstractClientResult<()> {
balances
.into_iter()
.try_for_each(|(address, amount)| self.add_balance(address, amount))
}
}