use cosmwasm_std::{DepsMut, Env, MessageInfo, Response, StdResult, Uint128};
pub fn execute_transfer(
deps: DepsMut,
_env: Env,
info: MessageInfo,
recipient: String,
amount: Uint128,
) -> StdResult<Response> {
let recipient_addr = deps.api.addr_validate(&recipient)?;
// Ensure the sender has enough balance
let sender_balance = get_balance(&deps.storage, &info.sender)?;
if sender_balance < amount {
return Err(StdError::generic_err("Insufficient funds"));
}
// Perform the transfer
decrease_balance(&mut deps.storage, &info.sender, amount)?;
increase_balance(&mut deps.storage, &recipient_addr, amount)?;
Ok(Response::new()
.add_attribute("action", "transfer")
.add_attribute("from", info.sender)
.add_attribute("to", recipient)
.add_attribute("amount", amount))
}