pub mod state {
use cosmwasm_std::{Addr, Coin};
use cw_storage_plus::Item;
use serde::{Deserialize, Serialize};
use crate::{
native::module_factory::ModuleInstallConfig,
objects::{
account::{AccountId, AccountSequence},
gov_type::GovernanceDetails,
module::Module,
AssetEntry,
},
};
#[cosmwasm_schema::cw_serde]
pub struct Config {
pub version_control_contract: Addr,
pub ans_host_contract: Addr,
pub module_factory_address: Addr,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct Context {
pub account_proxy_address: Option<Addr>,
pub manager_module: Option<Module>,
pub proxy_module: Option<Module>,
pub account_id: AccountId,
pub additional_config: AdditionalContextConfig,
pub install_modules: Vec<ModuleInstallConfig>,
pub funds_for_install: Vec<Coin>,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct AdditionalContextConfig {
pub namespace: Option<String>,
pub base_asset: Option<AssetEntry>,
pub name: String,
pub description: Option<String>,
pub link: Option<String>,
pub owner: GovernanceDetails<String>,
}
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::{
native::module_factory::ModuleInstallConfig,
objects::{
account::{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>,
},
CreateAccount {
governance: GovernanceDetails<String>,
name: String,
base_asset: Option<AssetEntry>,
description: Option<String>,
link: Option<String>,
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 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 {}