pub type ModuleMapEntry = (ModuleInfo, ModuleReference);
pub mod state {
use cw_controllers::Admin;
use cw_storage_plus::Map;
use crate::objects::{
common_namespace::ADMIN_NAMESPACE, core::AccountId, module::ModuleInfo,
module_reference::ModuleReference,
};
use super::AccountBase;
pub const ADMIN: Admin = Admin::new(ADMIN_NAMESPACE);
pub const FACTORY: Admin = Admin::new("factory");
pub const MODULE_LIBRARY: Map<&ModuleInfo, ModuleReference> = Map::new("module_lib");
pub const ACCOUNT_ADDRESSES: Map<AccountId, AccountBase> = Map::new("account");
}
use crate::objects::{
core::AccountId,
module::{Module, ModuleInfo},
module_reference::ModuleReference,
};
use cosmwasm_schema::QueryResponses;
use cosmwasm_std::Addr;
#[cosmwasm_schema::cw_serde]
pub struct AccountBase {
pub manager: Addr,
pub proxy: Addr,
}
#[cosmwasm_schema::cw_serde]
pub struct InstantiateMsg {}
#[cosmwasm_schema::cw_serde]
#[cfg_attr(feature = "boot", derive(boot_core::ExecuteFns))]
pub enum ExecuteMsg {
RemoveModule { module: ModuleInfo },
AddModules { modules: Vec<ModuleMapEntry> },
AddAccount {
account_id: AccountId,
account_base: AccountBase,
},
SetAdmin { new_admin: String },
SetFactory { new_factory: String },
}
#[derive(Default)]
#[cosmwasm_schema::cw_serde]
pub struct ModuleFilter {
pub provider: Option<String>,
pub name: Option<String>,
pub version: Option<String>,
}
#[cosmwasm_schema::cw_serde]
#[derive(QueryResponses)]
#[cfg_attr(feature = "boot", derive(boot_core::QueryFns))]
pub enum QueryMsg {
#[returns(AccountBaseResponse)]
AccountBase { account_id: AccountId },
#[returns(ModulesResponse)]
Modules { infos: Vec<ModuleInfo> },
#[returns(ConfigResponse)]
Config {},
#[returns(ModulesListResponse)]
ModuleList {
filter: Option<ModuleFilter>,
start_after: Option<ModuleInfo>,
limit: Option<u8>,
},
}
#[cosmwasm_schema::cw_serde]
pub struct AccountBaseResponse {
pub account_base: AccountBase,
}
#[cosmwasm_schema::cw_serde]
pub struct ModulesResponse {
pub modules: Vec<Module>,
}
#[cosmwasm_schema::cw_serde]
pub struct ModulesListResponse {
pub modules: Vec<Module>,
}
#[cosmwasm_schema::cw_serde]
pub struct ConfigResponse {
pub admin: String,
pub factory: String,
}
#[cosmwasm_schema::cw_serde]
pub struct MigrateMsg {}