router-wasm-bindings 0.1.14

Bindings for CustomMsg and CustomQuery for the Router blockchain
Documentation
use cosmwasm_std::{StdError, StdResult};

use crate::{types::ChainType, Bytes};

pub fn convert_address_from_string_to_bytes(address: String, chain_type: u32) -> StdResult<Bytes> {
    if chain_type == ChainType::ChainTypeEvm.get_chain_code() {
        let eth_address: String = address.replace("0x", "");
        match hex::decode(eth_address) {
            Ok(addr) => return Ok(addr),
            Err(err) => {
                return Err(StdError::GenericErr {
                    msg: err.to_string(),
                });
            }
        };
    } else {
        return Ok(address.as_bytes().to_vec());
    }
}

pub fn convert_address_from_bytes_to_string(address: &[u8], chain_type: u32) -> StdResult<String> {
    if chain_type == ChainType::ChainTypeEvm.get_chain_code() {
        return Ok("0x".to_string() + &hex::encode(address.to_vec()));
    } else {
        match String::from_utf8(address.to_vec()) {
            Ok(addr) => return Ok(addr),
            Err(err) => {
                return Err(StdError::GenericErr {
                    msg: err.to_string(),
                });
            }
        }
    }
}