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