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,
pub headroom: Option<ImportHeadroom>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
pub struct ImportHeadroom {
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub minimum_ready_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
pub maximum_source_debit_cycles: u128,
pub assessment: ImportHeadroomAssessment,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
#[serde(tag = "state", rename_all = "snake_case")]
pub enum ImportHeadroomAssessment {
AwaitingCurrentRootObservation,
InvalidBounds,
Observed {
#[serde(with = "crate::fleet_ensure::model::u128_text")]
required_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
available_cycles: u128,
#[serde(with = "crate::fleet_ensure::model::u128_text")]
shortfall_cycles: u128,
},
}
#[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,
}