abstract-adapter 0.21.0

base adapter contract implementation
Documentation
use abstract_core::{objects::module::ModuleInfo, AbstractError, IBC_CLIENT};
use abstract_sdk::{base::IbcCallbackEndpoint, features::AbstractRegistryAccess, AbstractSdkError};
use cosmwasm_std::{Addr, Deps};

use crate::{state::ContractError, AdapterContract};

impl<Error: ContractError, CustomInitMsg, CustomExecMsg, CustomQueryMsg, ReceiveMsg, SudoMsg>
    IbcCallbackEndpoint
    for AdapterContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, ReceiveMsg, SudoMsg>
{
    fn ibc_client(&self, deps: Deps) -> Result<Addr, Self::Error> {
        let vc_query_result = self
            .abstract_registry(deps)?
            .query_module(
                ModuleInfo::from_id_latest(IBC_CLIENT).map_err(|err| {
                    let err: AbstractSdkError = err.into();
                    err
                })?,
                &deps.querier,
            )
            .map_err(|err| {
                let err: AbstractError = err.into();
                let err: AbstractSdkError = err.into();
                err
            })?;

        Ok(vc_query_result.reference.unwrap_native().map_err(|err| {
            let err: AbstractSdkError = err.into();
            err
        })?)
    }
}