abstract_adapter/endpoints/
module_ibc.rs

1use crate::{state::ContractError, AdapterContract};
2use abstract_sdk::{base::ModuleIbcEndpoint, features::AbstractRegistryAccess};
3use abstract_std::{
4    objects::module::{ModuleInfo, ModuleVersion},
5    AbstractError, IBC_HOST,
6};
7use cosmwasm_std::Addr;
8
9impl<Error: ContractError, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg> ModuleIbcEndpoint
10    for AdapterContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg>
11{
12    fn ibc_host(&self, deps: cosmwasm_std::Deps) -> Result<Addr, Self::Error> {
13        let registry_query_result = self
14            .abstract_registry(deps)?
15            .query_module(
16                ModuleInfo::from_id(
17                    IBC_HOST,
18                    ModuleVersion::from(abstract_ibc_host::contract::CONTRACT_VERSION),
19                )?,
20                &deps.querier,
21            )
22            .map_err(Into::<AbstractError>::into)?;
23
24        Ok(registry_query_result.reference.unwrap_native()?)
25    }
26}