abstract_core/native/
account_factory.rs1pub mod state {
11 use cosmwasm_std::Addr;
12 use cw_storage_plus::Item;
13 use serde::{Deserialize, Serialize};
14
15 use crate::{
16 objects::{
17 account::{AccountId, AccountSequence},
18 module::Module,
19 },
20 version_control::AccountBase,
21 };
22
23 #[cosmwasm_schema::cw_serde]
25 pub struct Config {
26 pub version_control_contract: Addr,
27 pub ans_host_contract: Addr,
28 pub module_factory_address: Addr,
29 pub ibc_host: Option<Addr>,
30 }
31
32 #[derive(Serialize, Deserialize, Clone, Debug)]
34 pub struct Context {
35 pub account_base: AccountBase,
36 pub manager_module: Module,
37 pub proxy_module: Module,
38 pub account_id: AccountId,
39 }
40
41 pub const CONFIG: Item<Config> = Item::new("cfg");
42 pub const CONTEXT: Item<Context> = Item::new("contxt");
43 pub const LOCAL_ACCOUNT_SEQUENCE: Item<AccountSequence> = Item::new("acseq");
44}
45
46use cosmwasm_schema::QueryResponses;
47use cosmwasm_std::Addr;
48
49use crate::{
50 manager::ModuleInstallConfig,
51 objects::{
52 account::{AccountId, AccountSequence, AccountTrace},
53 gov_type::GovernanceDetails,
54 AssetEntry,
55 },
56};
57
58#[cosmwasm_schema::cw_serde]
60pub struct InstantiateMsg {
61 pub admin: String,
63 pub version_control_address: String,
65 pub ans_host_address: String,
67 pub module_factory_address: String,
69}
70
71#[cw_ownable::cw_ownable_execute]
73#[cosmwasm_schema::cw_serde]
74#[cfg_attr(feature = "interface", derive(cw_orch::ExecuteFns))]
75pub enum ExecuteMsg {
76 UpdateConfig {
78 ans_host_contract: Option<String>,
80 version_control_contract: Option<String>,
82 module_factory_address: Option<String>,
84 ibc_host: Option<String>,
86 },
87 #[cfg_attr(feature = "interface", payable)]
90 CreateAccount {
91 governance: GovernanceDetails<String>,
93 name: String,
95 base_asset: Option<AssetEntry>,
97 description: Option<String>,
99 link: Option<String>,
101 account_id: Option<AccountId>,
108 namespace: Option<String>,
110 install_modules: Vec<ModuleInstallConfig>,
112 },
113}
114
115#[cw_ownable::cw_ownable_query]
117#[cosmwasm_schema::cw_serde]
118#[derive(QueryResponses)]
119#[cfg_attr(feature = "interface", derive(cw_orch::QueryFns))]
120pub enum QueryMsg {
121 #[returns(ConfigResponse)]
123 Config {},
124}
125
126#[cosmwasm_schema::cw_serde]
128pub struct ConfigResponse {
129 pub ans_host_contract: Addr,
130 pub version_control_contract: Addr,
131 pub module_factory_address: Addr,
132 pub ibc_host: Option<Addr>,
133 pub local_account_sequence: AccountSequence,
134}
135
136#[cosmwasm_schema::cw_serde]
138pub struct SequencesResponse {
139 pub sequences: Vec<(AccountTrace, AccountSequence)>,
140}
141
142#[cosmwasm_schema::cw_serde]
143pub struct SequenceResponse {
144 pub sequence: AccountSequence,
145}
146
147#[cosmwasm_schema::cw_serde]
149pub struct MigrateMsg {}