pub mod state {
use cosmwasm_std::Addr;
use cw_storage_plus::Item;
use serde::{Deserialize, Serialize};
use crate::{
objects::{
account::{AccountId, AccountSequence},
module::Module,
},
version_control::AccountBase,
};
#[cosmwasm_schema::cw_serde]
pub struct Config {
pub version_control_contract: Addr,
pub ans_host_contract: Addr,
pub module_factory_address: Addr,
pub ibc_host: Option<Addr>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Context {
pub account_base: AccountBase,
pub manager_module: Module,
pub proxy_module: Module,
pub account_id: AccountId,
}
pub const CONFIG: Item<Config> = Item::new("cfg");
pub const CONTEXT: Item<Context> = Item::new("contxt");
pub const LOCAL_ACCOUNT_SEQUENCE: Item<AccountSequence> = Item::new("acseq");
}
use cosmwasm_schema::QueryResponses;
use cosmwasm_std::Addr;
use crate::{
manager::ModuleInstallConfig,
objects::{
account::{AccountId, AccountSequence, AccountTrace},
gov_type::GovernanceDetails,
AssetEntry,
},
};
#[cosmwasm_schema::cw_serde]
pub struct InstantiateMsg {
pub admin: String,
pub version_control_address: String,
pub ans_host_address: String,
pub module_factory_address: String,
}
#[cw_ownable::cw_ownable_execute]
#[cosmwasm_schema::cw_serde]
#[cfg_attr(feature = "interface", derive(cw_orch::ExecuteFns))]
pub enum ExecuteMsg {
UpdateConfig {
ans_host_contract: Option<String>,
version_control_contract: Option<String>,
module_factory_address: Option<String>,
ibc_host: Option<String>,
},
#[cfg_attr(feature = "interface", payable)]
CreateAccount {
governance: GovernanceDetails<String>,
name: String,
base_asset: Option<AssetEntry>,
description: Option<String>,
link: Option<String>,
account_id: Option<AccountId>,
namespace: Option<String>,
install_modules: Vec<ModuleInstallConfig>,
},
}
#[cw_ownable::cw_ownable_query]
#[cosmwasm_schema::cw_serde]
#[derive(QueryResponses)]
#[cfg_attr(feature = "interface", derive(cw_orch::QueryFns))]
pub enum QueryMsg {
#[returns(ConfigResponse)]
Config {},
}
#[cosmwasm_schema::cw_serde]
pub struct ConfigResponse {
pub ans_host_contract: Addr,
pub version_control_contract: Addr,
pub module_factory_address: Addr,
pub ibc_host: Option<Addr>,
pub local_account_sequence: AccountSequence,
}
#[cosmwasm_schema::cw_serde]
pub struct SequencesResponse {
pub sequences: Vec<(AccountTrace, AccountSequence)>,
}
#[cosmwasm_schema::cw_serde]
pub struct SequenceResponse {
pub sequence: AccountSequence,
}
#[cosmwasm_schema::cw_serde]
pub struct MigrateMsg {}