router_wasm_bindings/
querier.rs

1use cosmwasm_std::{QuerierWrapper, QueryRequest, StdResult};
2
3use crate::{
4    query::RouterQuery,
5    types::{GasPriceResponse, TokenPriceResponse},
6};
7
8/// This is a helper wrapper to easily use our custom queries
9pub struct RouterQuerier<'a> {
10    querier: &'a QuerierWrapper<'a, RouterQuery>,
11}
12
13impl<'a> RouterQuerier<'a> {
14    pub fn new(querier: &'a QuerierWrapper<RouterQuery>) -> Self {
15        RouterQuerier { querier }
16    }
17
18    pub fn token_price(&self, symbol: String) -> StdResult<TokenPriceResponse> {
19        let token_price_query = RouterQuery::TokenPrice { symbol };
20        let request: QueryRequest<RouterQuery> = RouterQuery::into(token_price_query);
21        self.querier.query(&request)
22    }
23
24    pub fn gas_price(&self, chain_id: String) -> StdResult<GasPriceResponse> {
25        let gas_price_query = RouterQuery::GasPrice { chain_id };
26        let request: QueryRequest<RouterQuery> = RouterQuery::into(gas_price_query);
27        self.querier.query(&request)
28    }
29}