1use crate::{
8 base::{
9 ExecuteMsg as EndpointExecMsg, InstantiateMsg as EndpointInstantiateMsg,
10 MigrateMsg as EndpointMigrateMsg, QueryMsg as EndpointQueryMsg,
11 },
12 objects::{gov_type::TopLevelOwnerResponse, module_version::ModuleDataResponse},
13 registry::Account,
14};
15
16pub type ExecuteMsg<ModuleMsg = Empty> = EndpointExecMsg<BaseExecuteMsg, ModuleMsg>;
17pub type QueryMsg<ModuleMsg = Empty> = EndpointQueryMsg<BaseQueryMsg, ModuleMsg>;
18pub type InstantiateMsg<ModuleMsg = Empty> = EndpointInstantiateMsg<BaseInstantiateMsg, ModuleMsg>;
19pub type MigrateMsg<ModuleMsg = Empty> = EndpointMigrateMsg<BaseMigrateMsg, ModuleMsg>;
20
21use cosmwasm_schema::QueryResponses;
22use cosmwasm_std::{Addr, Empty};
23#[allow(unused_imports)]
24use cw_controllers::AdminResponse;
25use serde::Serialize;
26
27pub trait AppExecuteMsg: Serialize {}
31impl<T: AppExecuteMsg> From<T> for ExecuteMsg<T> {
32 fn from(module: T) -> Self {
33 Self::Module(module)
34 }
35}
36
37impl AppExecuteMsg for Empty {}
38
39pub trait AppQueryMsg: Serialize {}
43impl<T: AppQueryMsg> From<T> for QueryMsg<T> {
44 fn from(module: T) -> Self {
45 Self::Module(module)
46 }
47}
48impl AppQueryMsg for Empty {}
49
50#[cosmwasm_schema::cw_serde]
52pub struct BaseInstantiateMsg {
53 pub account: Account,
54}
55
56#[cosmwasm_schema::cw_serde]
57#[derive(cw_orch::ExecuteFns)]
58pub enum BaseExecuteMsg {}
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, cw_orch::QueryFns)]
68pub enum BaseQueryMsg {
69 #[returns(AppConfigResponse)]
71 BaseConfig {},
72 #[returns(AdminResponse)]
75 BaseAdmin {},
76 #[returns(ModuleDataResponse)]
79 ModuleData {},
80 #[returns(TopLevelOwnerResponse)]
83 TopLevelOwner {},
84}
85
86impl<T> From<BaseQueryMsg> for QueryMsg<T> {
87 fn from(base: BaseQueryMsg) -> Self {
88 Self::Base(base)
89 }
90}
91
92#[cosmwasm_schema::cw_serde]
93pub struct AppConfigResponse {
94 pub account: Addr,
95 pub ans_host_address: Addr,
96 pub registry_address: Addr,
97}
98
99#[cosmwasm_schema::cw_serde]
100pub struct BaseMigrateMsg {}
101
102#[cosmwasm_schema::cw_serde]
104pub struct AppState {
105 pub account: Account,
107}