use async_trait::async_trait;
use mockforge_foundation::incidents_types::{DriftIncident, IncidentQuery, IncidentStatus};
use std::collections::HashMap;
#[async_trait]
pub trait StructuralIncidents: Send + Sync {
async fn query_incidents(&self, query: IncidentQuery) -> Vec<DriftIncident>;
async fn get_incident(&self, id: &str) -> Option<DriftIncident>;
async fn acknowledge_incident(&self, id: &str) -> Option<DriftIncident>;
async fn resolve_incident(&self, id: &str) -> Option<DriftIncident>;
async fn close_incident(&self, id: &str) -> Option<DriftIncident>;
async fn link_external_ticket(
&self,
id: &str,
ticket_id: String,
ticket_url: Option<String>,
) -> Option<DriftIncident>;
async fn get_statistics(&self) -> HashMap<IncidentStatus, usize>;
}