use anyhow::Result;
use async_trait::async_trait;
use crate::redaction_match::RedactionMatch;
use serde::{Deserialize, Serialize};
pub mod fingerprint;
pub mod vault;
pub mod providers;
pub mod orchestrator;
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize)]
pub enum ConfidenceLevel {
Low, Medium, High, Critical, }
#[async_trait]
pub trait Remediator: Send + Sync {
fn name(&self) -> &str;
fn can_handle(&self, redaction: &RedactionMatch) -> bool;
async fn verify_live_status(&self, secret: &str) -> Result<bool>;
async fn remediate(&self, redaction: &RedactionMatch) -> Result<RemediationOutcome>;
fn auto_remediation_threshold(&self) -> ConfidenceLevel;
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RemediationOutcome {
pub provider: String,
pub action: String,
pub successful: bool,
pub message: String,
pub confidence_boost: bool, }