1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use crate::{queriers::CosmWasm, Daemon, DaemonError};
use cosmwasm_std::ContractInfoResponse;
use cw_orch_core::{contract::interface_traits::CwOrchUpload, environment::WasmCodeQuerier};

impl WasmCodeQuerier for Daemon {
    /// Returns the checksum of provided code_id
    fn contract_hash(&self, code_id: u64) -> Result<String, DaemonError> {
        let on_chain_hash = self
            .rt_handle
            .block_on(self.query_client::<CosmWasm>().code_id_hash(code_id))?;
        Ok(on_chain_hash)
    }

    /// Returns the code_info structure of the provided contract
    fn contract_info<T: CwOrchUpload<Self>>(
        &self,
        contract: &T,
    ) -> Result<ContractInfoResponse, DaemonError> {
        let info = self.rt_handle.block_on(
            self.query_client::<CosmWasm>()
                .contract_info(contract.address()?),
        )?;

        let mut contract_info = ContractInfoResponse::default();
        contract_info.code_id = info.code_id;
        contract_info.creator = info.creator;
        contract_info.admin = Some(info.admin);

        Ok(contract_info)
    }
}