abstract_app/endpoints/
ibc_callback.rs1use abstract_sdk::features::AbstractRegistryAccess;
2use abstract_std::{
3 objects::module::{ModuleInfo, ModuleVersion},
4 IBC_CLIENT,
5};
6use cosmwasm_std::Addr;
7
8use crate::{state::ContractError, AppContract, IbcCallbackEndpoint};
9
10impl<
11 Error: ContractError,
12 CustomInitMsg,
13 CustomExecMsg,
14 CustomQueryMsg,
15 CustomMigrateMsg,
16 SudoMsg,
17 > IbcCallbackEndpoint
18 for AppContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, CustomMigrateMsg, SudoMsg>
19{
20 fn ibc_client_addr(&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_CLIENT,
26 ModuleVersion::from(abstract_ibc_client::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}