use cosmwasm_schema::cw_serde;
use cw_utils::Expiration;
use cosmwasm_std::{Addr, Empty};
use cw_storage_plus::{Item, Map};
#[cw_serde]
pub struct Config {
pub name: String,
pub description: String,
pub image_url: Option<String>,
pub automatically_add_cw20s: bool,
pub automatically_add_cw721s: bool,
pub dao_uri: Option<String>,
}
#[cw_serde]
pub struct ProposalModule {
pub address: Addr,
pub prefix: String,
pub status: ProposalModuleStatus,
}
#[cw_serde]
pub enum ProposalModuleStatus {
Enabled,
Disabled,
}
pub const ADMIN: Item<Addr> = Item::new("admin");
pub const NOMINATED_ADMIN: Item<Addr> = Item::new("nominated_admin");
pub const CONFIG: Item<Config> = Item::new("config_v2");
pub const PAUSED: Item<Expiration> = Item::new("paused");
pub const VOTING_MODULE: Item<Addr> = Item::new("voting_module");
pub const PROPOSAL_MODULES: Map<Addr, ProposalModule> = Map::new("proposal_modules_v2");
pub const ACTIVE_PROPOSAL_MODULE_COUNT: Item<u32> = Item::new("active_proposal_module_count");
pub const TOTAL_PROPOSAL_MODULE_COUNT: Item<u32> = Item::new("total_proposal_module_count");
pub const ITEMS: Map<String, String> = Map::new("items");
pub const CW20_LIST: Map<Addr, Empty> = Map::new("cw20s");
pub const CW721_LIST: Map<Addr, Empty> = Map::new("cw721s");
pub const SUBDAO_LIST: Map<&Addr, Option<String>> = Map::new("sub_daos");