use crate::fleet_ensure::view::release::FleetReleasePoolView;
use candid::Principal;
use std::collections::BTreeSet;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReleasePoolImportState {
Reserved,
Ready,
Released,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleasePoolImportFacts {
pub sequence: u64,
pub plan_sha256: [u8; 32],
pub state: ReleasePoolImportState,
pub root_settled: bool,
pub call_budget_exhausted: bool,
pub debit_budget_exhausted: bool,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReleasePoolCreationState {
Intent { uncertain: bool },
Created { canister_id: Principal },
WaitingForFunding,
LedgerCreationFailed,
LedgerRejected,
UnresolvedAfterLedgerWindow,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleasePoolCreationFacts {
pub operation_id: [u8; 32],
pub state: ReleasePoolCreationState,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleasePoolHandoffFact {
pub canister_id: Principal,
pub recipient: Principal,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleasePoolFacts {
pub root: Principal,
pub import: Option<ReleasePoolImportFacts>,
pub creation: Option<ReleasePoolCreationFacts>,
pub handoff: Option<ReleasePoolHandoffFact>,
pub custody_candidates: BTreeSet<Principal>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReleasePoolImportDisposition {
ImportRecovery,
RootSettlement,
PublicationRecovery,
RecordedCompletion,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReleasePoolCreationDisposition {
OwnerCancellation,
LedgerReconciliation,
InventoryRecovery { canister_id: Principal },
UnresolvedLedgerCreation,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ReleaseRootPoolAssessment {
pub facts: ReleasePoolFacts,
pub import: Option<ReleasePoolImportDisposition>,
pub creation: Option<ReleasePoolCreationDisposition>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct FleetReleasePoolAssessment {
pub evidence: FleetReleasePoolView,
pub roots: Vec<ReleaseRootPoolAssessment>,
}