xpla-cosmwasm 0.1.0

Xpla types
Documentation
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),
    }
}