use crate::error::TauditError;
use crate::finding::Finding;
use crate::graph::{AuthorityGraph, PipelineSource};
pub trait PipelineParser: Send + Sync {
fn platform(&self) -> &str;
fn parse(&self, content: &str, source: &PipelineSource) -> Result<AuthorityGraph, TauditError>;
}
pub trait ReportSink<W: std::io::Write>: Send + Sync {
fn emit(
&self,
writer: &mut W,
graph: &AuthorityGraph,
findings: &[Finding],
) -> Result<(), TauditError>;
}
pub trait AnalysisRule: Send + Sync {
fn name(&self) -> &str;
fn evaluate(&self, graph: &AuthorityGraph) -> Vec<Finding>;
}