wafrift-types 0.3.1

Core types for WAF Rift — Request, Technique, EvasionResult, Config, Error.
Documentation
use crate::Technique;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Explanation {
    pub original_payload: String,
    pub bypass_payload: String,
    pub technique_chain: Vec<Technique>,
    pub triggered_rules: Vec<RuleAttribution>,
    pub diff: Vec<DiffHunk>,
    pub human_summary: String,
    pub mode: ExplanationMode,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RuleAttribution {
    pub rule_id: String,
    pub rule_name: String,
    pub matched_substring: String,
    pub matched_pattern: String,
    pub confidence: f64,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum DiffHunk {
    Equal(String),
    Delete(String),
    Insert(String),
}

#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum ExplanationMode {
    Minimal,
    #[default]
    Standard,
    Educational,
}