use super::types::*;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdversarialProbingResult {
pub timestamp: DateTime<Utc>,
pub base_input: HashMap<String, f64>,
pub adversarial_examples: HashMap<AdversarialMethod, Vec<AdversarialExample>>,
pub attack_success_analysis: AttackSuccessAnalysis,
pub robustness_assessment: AdversarialRobustnessAssessment,
pub defense_recommendations: Vec<DefenseRecommendation>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdversarialExample {
pub id: String,
pub attack_method: AdversarialMethod,
pub original_input: HashMap<String, f64>,
pub adversarial_input: HashMap<String, f64>,
pub original_prediction: f64,
pub adversarial_prediction: f64,
pub perturbation: HashMap<String, f64>,
pub perturbation_norm: f64,
pub is_successful: bool,
pub confidence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttackSuccessAnalysis {
pub success_rate_by_method: HashMap<AdversarialMethod, f64>,
pub overall_success_rate: f64,
pub avg_perturbation_magnitude: f64,
pub most_effective_methods: Vec<AdversarialMethod>,
pub attack_difficulty: AttackDifficultyAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AttackDifficultyAnalysis {
pub easy_targets: Vec<String>,
pub hard_targets: Vec<String>,
pub perturbation_by_feature: HashMap<String, f64>,
pub complexity_assessment: ComplexityAssessment,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ComplexityAssessment {
pub complexity_score: f64,
pub features_required: usize,
pub min_perturbation: f64,
pub sophistication_level: SophisticationLevel,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdversarialRobustnessAssessment {
pub robustness_score: f64,
pub robustness_by_attack: HashMap<AdversarialMethod, f64>,
pub vulnerability_hotspots: Vec<VulnerabilityHotspot>,
pub certified_robustness: CertifiedRobustnessAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VulnerabilityHotspot {
pub location: HashMap<String, f64>,
pub vulnerability_score: f64,
pub susceptible_attacks: Vec<AdversarialMethod>,
pub radius: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CertifiedRobustnessAnalysis {
pub certified_radius: f64,
pub certification_confidence: f64,
pub certification_method: String,
pub robustness_guarantees: Vec<RobustnessGuarantee>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RobustnessGuarantee {
pub guarantee_type: GuaranteeType,
pub strength: f64,
pub conditions: Vec<String>,
pub confidence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DefenseRecommendation {
pub name: String,
pub description: String,
pub target_vulnerabilities: Vec<String>,
pub effectiveness: f64,
pub complexity: DefenseComplexity,
pub performance_impact: PerformanceImpact,
}