use crate::progress::ProgressHub;
use crate::run_store::RunStore;
use klieo::App;
use klieo_auth_common::Authenticator;
use klieo_provenance::ProvenanceRepository;
use klieo_workflow::Registry;
use std::sync::Arc;
use std::time::Duration;
use tokio::sync::Semaphore;
pub(crate) struct WorkflowRunState {
pub(crate) authenticator: Arc<dyn Authenticator>,
pub(crate) app: Arc<App>,
pub(crate) registry: Registry,
pub(crate) run_store: RunStore,
pub(crate) provenance: Arc<dyn ProvenanceRepository>,
pub(crate) progress: ProgressHub,
pub(crate) permits: Arc<Semaphore>,
pub(crate) run_timeout: Duration,
}