1use crate::base::{
8    ExecuteMsg as EndpointExecMsg, InstantiateMsg as EndpointInstantiateMsg,
9    MigrateMsg as EndpointMigrateMsg, QueryMsg as EndpointQueryMsg,
10};
11
12pub type ExecuteMsg<AppMsg = Empty, ReceiveMsg = Empty> =
13    EndpointExecMsg<BaseExecuteMsg, AppMsg, ReceiveMsg>;
14pub type QueryMsg<AppMsg = Empty> = EndpointQueryMsg<BaseQueryMsg, AppMsg>;
15pub type InstantiateMsg<AppMsg = Empty> = EndpointInstantiateMsg<BaseInstantiateMsg, AppMsg>;
16pub type MigrateMsg<AppMsg = Empty> = EndpointMigrateMsg<BaseMigrateMsg, AppMsg>;
17
18use cosmwasm_schema::QueryResponses;
19use cosmwasm_std::{Addr, Empty};
20use cw_controllers::AdminResponse;
21use serde::Serialize;
22
23pub trait AppExecuteMsg: Serialize {}
27impl<T: AppExecuteMsg, R: Serialize> From<T> for ExecuteMsg<T, R> {
28    fn from(app: T) -> Self {
29        Self::App(app)
30    }
31}
32
33impl AppExecuteMsg for Empty {}
34
35pub trait AppQueryMsg: Serialize {}
39impl<T: AppQueryMsg> From<T> for QueryMsg<T> {
40    fn from(app: T) -> Self {
41        Self::App(app)
42    }
43}
44impl AppQueryMsg for Empty {}
45
46#[cosmwasm_schema::cw_serde]
48pub struct BaseInstantiateMsg {
49    pub ans_host_address: String,
50}
51
52#[cosmwasm_schema::cw_serde]
53#[cfg_attr(feature = "boot", derive(boot_core::ExecuteFns))]
54#[cfg_attr(feature = "boot", impl_into(ExecuteMsg<T>))]
55pub enum BaseExecuteMsg {
56    UpdateConfig { ans_host_address: Option<String> },
58}
59
60impl<T> From<BaseExecuteMsg> for ExecuteMsg<T> {
61    fn from(base: BaseExecuteMsg) -> Self {
62        Self::Base(base)
63    }
64}
65
66#[cosmwasm_schema::cw_serde]
67#[derive(QueryResponses)]
68#[cfg_attr(feature = "boot", derive(boot_core::QueryFns))]
69#[cfg_attr(feature = "boot", impl_into(QueryMsg<AppMsg>))]
70pub enum BaseQueryMsg {
71    #[returns(AppConfigResponse)]
73    Config {},
74    #[returns(AdminResponse)]
76    Admin {},
77}
78
79impl<T> From<BaseQueryMsg> for QueryMsg<T> {
80    fn from(base: BaseQueryMsg) -> Self {
81        Self::Base(base)
82    }
83}
84
85#[cosmwasm_schema::cw_serde]
86pub struct AppConfigResponse {
87    pub proxy_address: Addr,
88    pub ans_host_address: Addr,
89    pub manager_address: Addr,
90}
91
92#[cosmwasm_schema::cw_serde]
93pub struct BaseMigrateMsg {}