use cosmwasm_schema::cw_serde;
use crate::query::SubDao;
use crate::state::ModuleInstantiateInfo;
#[cw_serde]
pub struct MigrateParams {
pub migrator_code_id: u64,
pub params: MigrateV1ToV2,
}
#[cw_serde]
pub struct MigrateV1ToV2 {
pub sub_daos: Vec<SubDao>,
pub migration_params: MigrationModuleParams,
pub v1_code_ids: V1CodeIds,
pub v2_code_ids: V2CodeIds,
}
#[cw_serde]
pub struct V1CodeIds {
pub proposal_single: u64,
pub cw4_voting: u64,
pub cw20_stake: u64,
pub cw20_staked_balances_voting: u64,
}
#[cw_serde]
pub struct V2CodeIds {
pub proposal_single: u64,
pub cw4_voting: u64,
pub cw20_stake: u64,
pub cw20_staked_balances_voting: u64,
}
#[cw_serde]
pub struct ProposalParams {
pub close_proposal_on_execution_failure: bool,
pub pre_propose_info: PreProposeInfo,
}
#[cw_serde]
pub struct MigrationModuleParams {
pub migrate_stake_cw20_manager: Option<bool>,
pub proposal_params: Vec<(String, ProposalParams)>,
}
#[cw_serde]
pub enum PreProposeInfo {
AnyoneMayPropose {},
ModuleMayPropose { info: ModuleInstantiateInfo },
}