use crate::tx::{Coin as ProtoCoin, MsgCallEVM};
use cosmwasm_std::{Binary, Coin, CosmosMsg, Env};
use protobuf::Message;
const TYPE_URL: &str = "/xpla.proxyevm.v1beta1.MsgCallEVM";
pub fn create_call_evm_msg(
env: Env,
contract: String,
data: Vec<u8>,
coins: Vec<Coin>,
) -> CosmosMsg {
let mut src = MsgCallEVM::new();
src.set_sender(env.contract.address.to_string());
src.set_contract(contract);
src.set_data(data);
let funds = coins
.iter()
.map(|c| {
let mut pc = ProtoCoin::new();
pc.set_amount(c.amount.to_string());
pc.set_denom(c.denom.to_string());
pc
})
.collect();
src.set_funds(funds);
let res = Message::write_to_bytes(&src).unwrap();
CosmosMsg::Stargate {
type_url: TYPE_URL.to_string(),
value: Binary::from(res),
}
}