abstract_app/endpoints/
ibc_callback.rs

1use 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}