abstract_core/native/
module_factory.rs1pub mod state {
8
9 use cosmwasm_std::{Addr, Binary};
10 use cw_storage_plus::{Item, Map};
11 use schemars::JsonSchema;
12 use serde::{Deserialize, Serialize};
13
14 use crate::objects::module::ModuleInfo;
15
16 #[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq, JsonSchema)]
17 pub struct Config {
18 pub version_control_address: Addr,
19 pub ans_host_address: Addr,
20 }
21
22 pub const CONFIG: Item<Config> = Item::new("\u{0}{5}config");
23 pub const MODULE_INIT_BINARIES: Map<&ModuleInfo, Binary> = Map::new("module_init_binaries");
24}
25
26use cosmwasm_schema::QueryResponses;
27use cosmwasm_std::{Addr, Binary, Coin};
28
29use crate::objects::module::ModuleInfo;
30
31#[cosmwasm_schema::cw_serde]
32pub struct InstantiateMsg {
33 pub admin: String,
34 pub version_control_address: String,
36 pub ans_host_address: String,
38}
39
40#[cw_ownable::cw_ownable_execute]
42#[cosmwasm_schema::cw_serde]
43#[cfg_attr(feature = "interface", derive(cw_orch::ExecuteFns))]
44pub enum ExecuteMsg {
45 UpdateConfig {
47 ans_host_address: Option<String>,
48 version_control_address: Option<String>,
49 },
50 InstallModules {
52 modules: Vec<FactoryModuleInstallConfig>,
53 salt: Binary,
54 },
55 UpdateFactoryBinaryMsgs {
56 to_add: Vec<(ModuleInfo, Binary)>,
57 to_remove: Vec<ModuleInfo>,
58 },
59}
60
61#[non_exhaustive]
63#[cosmwasm_schema::cw_serde]
64pub struct FactoryModuleInstallConfig {
65 pub module: ModuleInfo,
66 pub init_msg: Option<Binary>,
67}
68
69impl FactoryModuleInstallConfig {
70 pub fn new(module: ModuleInfo, init_msg: Option<Binary>) -> Self {
71 Self { module, init_msg }
72 }
73}
74
75#[cw_ownable::cw_ownable_query]
77#[cosmwasm_schema::cw_serde]
78#[derive(QueryResponses)]
79#[cfg_attr(feature = "interface", derive(cw_orch::QueryFns))]
80pub enum QueryMsg {
81 #[returns(ConfigResponse)]
84 Config {},
85 #[returns(SimulateInstallModulesResponse)]
88 SimulateInstallModules { modules: Vec<ModuleInfo> },
89}
90
91#[cosmwasm_schema::cw_serde]
93pub struct ConfigResponse {
94 pub ans_host_address: Addr,
95 pub version_control_address: Addr,
96}
97
98#[cosmwasm_schema::cw_serde]
99pub struct SimulateInstallModulesResponse {
100 pub total_required_funds: Vec<Coin>,
101 pub monetization_funds: Vec<(String, Coin)>,
103 pub initialization_funds: Vec<(String, Vec<Coin>)>,
105}
106
107#[cosmwasm_schema::cw_serde]
109pub struct MigrateMsg {}