use crate::contracts::SupervisedTask;
use crate::enums::SupervisionStatus;
use std::future::Future;
use std::pin::Pin;
use std::sync::Arc;
use tokio::sync::broadcast;
pub type PrerequisiteFuture =
Pin<Box<dyn Future<Output = anyhow::Result<()>> + Send + 'static>>;
#[derive(Debug, Clone)]
pub struct SupervisionResult {
pub task_name: String,
pub task_id: String,
pub total_attempts: usize,
pub final_status: SupervisionStatus,
}
pub struct TaskEntry {
pub task: Arc<dyn SupervisedTask>,
pub setup_tx: broadcast::Sender<Result<(), String>>,
}