use std::sync::Arc;
use chrono::{DateTime, Utc};
use sqlx::SqlitePool;
use crate::config::Config;
use crate::modules::ModuleManifest;
use crate::services::consumer::DetectionConsumer;
use crate::services::mirror::MirrorRecorderManager;
use crate::services::recorder::RecorderManager;
use crate::services::sampler::SamplerManager;
#[derive(Clone)]
pub struct AppState {
pub pool: SqlitePool,
pub cfg: Arc<Config>,
pub recorder: Arc<RecorderManager>,
pub mirror: Option<Arc<MirrorRecorderManager>>,
pub sampler: Arc<SamplerManager>,
pub consumers: Arc<Vec<Arc<dyn DetectionConsumer>>>,
pub modules: Arc<Vec<ModuleManifest>>,
pub http: reqwest::Client,
pub started_at: DateTime<Utc>,
}