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