use cosmwasm_schema::{cw_serde, QueryResponses};
use cosmwasm_std::{Binary, CosmosMsg, CustomMsg, Empty};
#[cw_serde]
pub struct InstantiateMsg {
pub owner: String,
pub astro_denom: String,
pub transfer_channel: String,
pub main_controller: String,
pub main_maker: String,
pub timeout: u64,
pub max_signal_outage: u64,
pub emergency_owner: String,
}
#[cw_serde]
pub struct UpdateConfigMsg {
pub astro_denom: Option<String>,
pub gov_channel: Option<String>,
pub main_controller_addr: Option<String>,
pub main_maker: Option<String>,
pub transfer_channel: Option<String>,
pub accept_new_connections: Option<bool>,
pub timeout: Option<u64>,
pub max_signal_outage: Option<u64>,
pub emergency_owner: Option<String>,
}
#[cw_serde]
pub enum ExecuteMsg<M: CustomMsg = Empty> {
TransferAstro {},
UpdateConfig(UpdateConfigMsg),
CheckMessages(Vec<CosmosMsg<M>>),
ExecuteFromMultisig(Vec<CosmosMsg<M>>),
CheckMessagesPassed {},
ProposeNewOwner {
owner: String,
expires_in: u64,
},
DropOwnershipProposal {},
ClaimOwnership {},
SetEmergencyOwnerAsAdmin {},
}
#[cw_serde]
pub enum SatelliteMsg {
ExecuteProposal { id: u64, messages: Vec<CosmosMsg> },
Heartbeat {},
}
#[cw_serde]
pub enum ProposalStatus {
Active,
Passed,
Rejected,
InProgress,
Failed,
Executed,
Expired,
}
#[cw_serde]
#[derive(QueryResponses)]
pub enum QueryMsg {
#[returns(ProposalStatus)]
ProposalState { id: u64 },
}
#[cw_serde]
pub enum IbcAckResult {
Ok(Binary),
Error(String),
}