use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{CosmosMsg, Empty};
use dao_pre_propose_approval_single::msg::ApproverProposeMessage;
use dao_pre_propose_base::msg::{
ExecuteMsg as ExecuteBase, InstantiateMsg as InstantiateBase, QueryMsg as QueryBase,
};
#[cw_serde]
pub struct InstantiateMsg {
pub pre_propose_approval_contract: String,
}
#[cw_serde]
pub enum ExecuteExt {
ResetApprover {},
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryExt {
#[returns(cosmwasm_std::Addr)]
PreProposeApprovalContract {},
#[returns(::std::option::Option<u64>)]
PreProposeApprovalIdForApproverProposalId { id: u64 },
#[returns(::std::option::Option<u64>)]
ApproverProposalIdForPreProposeApprovalId { id: u64 },
}
pub type BaseInstantiateMsg = InstantiateBase<Empty>;
pub type ExecuteMsg = ExecuteBase<ApproverProposeMessage, ExecuteExt>;
pub type QueryMsg = QueryBase<QueryExt>;
#[cw_serde]
pub enum ProposeMessageInternal {
Propose {
title: String,
description: String,
msgs: Vec<CosmosMsg<Empty>>,
proposer: Option<String>,
},
}