use crate::fleet_ensure::{
model::capacity_import::CapacityImportPlanRecord,
ops::capacity_import::journal::CapacityImportJournalError,
view::capacity_import::{CapacityImportDestinationView, CapacityImportSourceView},
};
use candid::Principal;
use std::future::Future;
pub trait PreparedCapacityImportObservation {
type View;
fn observe(self) -> impl Future<Output = Result<Self::View, CapacityImportJournalError>>;
}
pub trait CapacityImportObserver {
type Destination: PreparedCapacityImportObservation<View = CapacityImportDestinationView>;
type Source: PreparedCapacityImportObservation<View = CapacityImportSourceView>;
fn prepare_destination(
&mut self,
plan: &CapacityImportPlanRecord,
) -> impl Future<Output = Result<Self::Destination, CapacityImportJournalError>>;
fn prepare_source(
&mut self,
plan: &CapacityImportPlanRecord,
canister: Principal,
) -> impl Future<Output = Result<Self::Source, CapacityImportJournalError>>;
}