use anyhow::Result;
use crate::config::{RedactionConfig, RedactionSummaryItem};
use crate::profiles::EngineOptions;
use crate::sanitizers::compiler::CompiledRules;
use crate::audit_log::AuditLog;
use crate::redaction_match::RedactionMatch;
pub trait SanitizationEngine: Send + Sync {
fn sanitize(
&self,
content: &str,
source_id: &str,
run_id: &str,
input_hash: &str,
user_id: &str,
reason: &str,
outcome: &str,
audit_log: Option<&mut AuditLog>,
) -> Result<(String, Vec<RedactionSummaryItem>)>;
fn analyze_for_stats(&self, content: &str, source_id: &str) -> Result<Vec<RedactionSummaryItem>>;
fn find_matches_for_ui(&self, content: &str, source_id: &str) -> Result<Vec<RedactionMatch>>;
fn compiled_rules(&self) -> &CompiledRules;
fn get_rules(&self) -> &RedactionConfig;
fn get_options(&self) -> &EngineOptions;
}