router-wasm-bindings 1.0.3

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

use crate::{
    query::RouterQuery,
    types::{GasPriceResponse, TokenPriceResponse},
};

/// This is a helper wrapper to easily use our custom queries
pub struct RouterQuerier<'a> {
    querier: &'a QuerierWrapper<'a, RouterQuery>,
}

impl<'a> RouterQuerier<'a> {
    pub fn new(querier: &'a QuerierWrapper<RouterQuery>) -> Self {
        RouterQuerier { querier }
    }

    pub fn token_price(&self, symbol: String) -> StdResult<TokenPriceResponse> {
        let token_price_query = RouterQuery::TokenPrice { symbol };
        let request: QueryRequest<RouterQuery> = RouterQuery::into(token_price_query);
        self.querier.query(&request)
    }

    pub fn gas_price(&self, chain_id: String) -> StdResult<GasPriceResponse> {
        let gas_price_query = RouterQuery::GasPrice { chain_id };
        let request: QueryRequest<RouterQuery> = RouterQuery::into(gas_price_query);
        self.querier.query(&request)
    }
}