use serde::Serialize;
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct ContinuationForecast {
pub authority: ContinuationAuthority,
pub reviewed_actions: usize,
pub maximum_successor_actions: Option<u32>,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_operator_debit_cycles: u128,
pub imports: Vec<ContinuationImport>,
pub dependent_funding: Vec<DependentPoolFunding>,
pub requires_live_discovery: Vec<ContinuationDiscovery>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ContinuationAuthority {
Complete,
SeparateReview,
WithinReviewedProtocolBounds,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct ContinuationImport {
pub root: String,
pub canister: String,
pub principal: Option<String>,
pub state: ContinuationImportState,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ContinuationImportState {
PostInitializationObservation,
ReviewedReconciliation,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct DependentPoolFunding {
pub root: String,
pub principal: String,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub amount_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub ledger_fee_cycles: u128,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
#[serde(rename_all = "snake_case")]
pub enum ContinuationDiscovery {
PoolReadiness,
PoolFundingAndCapacity,
PublicationAndProvisioning,
}