abstract_os/native/
version_control.rs1pub type ModuleMapEntry = (ModuleInfo, ModuleReference);
12
13pub mod state {
14 use cw_controllers::Admin;
15 use cw_storage_plus::Map;
16
17 use crate::objects::{
18 common_namespace::ADMIN_NAMESPACE, core::OsId, module::ModuleInfo,
19 module_reference::ModuleReference,
20 };
21
22 use super::Core;
23
24 pub const ADMIN: Admin = Admin::new(ADMIN_NAMESPACE);
25 pub const FACTORY: Admin = Admin::new("factory");
26
27 pub const MODULE_LIBRARY: Map<&ModuleInfo, ModuleReference> = Map::new("module_lib");
29 pub const OS_ADDRESSES: Map<OsId, Core> = Map::new("os_core");
31}
32
33use crate::objects::{
34 core::OsId,
35 module::{Module, ModuleInfo},
36 module_reference::ModuleReference,
37};
38use cosmwasm_schema::QueryResponses;
39use cosmwasm_std::Addr;
40
41#[cosmwasm_schema::cw_serde]
43pub struct Core {
44 pub manager: Addr,
45 pub proxy: Addr,
46}
47
48#[cosmwasm_schema::cw_serde]
49pub struct InstantiateMsg {}
50
51#[cosmwasm_schema::cw_serde]
52#[cfg_attr(feature = "boot", derive(boot_core::ExecuteFns))]
53pub enum ExecuteMsg {
54 RemoveModule { module: ModuleInfo },
56 AddModules { modules: Vec<ModuleMapEntry> },
58 AddOs { os_id: OsId, core: Core },
61 SetAdmin { new_admin: String },
63 SetFactory { new_factory: String },
65}
66
67#[derive(Default)]
69#[cosmwasm_schema::cw_serde]
70pub struct ModuleFilter {
71 pub provider: Option<String>,
72 pub name: Option<String>,
73 pub version: Option<String>,
74}
75
76#[cosmwasm_schema::cw_serde]
77#[derive(QueryResponses)]
78#[cfg_attr(feature = "boot", derive(boot_core::QueryFns))]
79pub enum QueryMsg {
80 #[returns(OsCoreResponse)]
83 OsCore { os_id: OsId },
84 #[returns(ModulesResponse)]
87 Modules { infos: Vec<ModuleInfo> },
88 #[returns(ConfigResponse)]
90 Config {},
91 #[returns(ModulesListResponse)]
93 ModuleList {
94 filter: Option<ModuleFilter>,
95 start_after: Option<ModuleInfo>,
96 limit: Option<u8>,
97 },
98}
99
100#[cosmwasm_schema::cw_serde]
101pub struct OsCoreResponse {
102 pub os_core: Core,
103}
104
105#[cosmwasm_schema::cw_serde]
106pub struct ModulesResponse {
107 pub modules: Vec<Module>,
108}
109
110#[cosmwasm_schema::cw_serde]
111pub struct ModulesListResponse {
112 pub modules: Vec<Module>,
113}
114
115#[cosmwasm_schema::cw_serde]
116pub struct ConfigResponse {
117 pub admin: String,
118 pub factory: String,
119}
120
121#[cosmwasm_schema::cw_serde]
122pub struct MigrateMsg {}