use serde::{Deserialize, Serialize};
use serde_json::Value;
pub type RawJson = serde_json::Map<String, Value>;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ScanUrl {
pub submitted: String,
pub normalized: String,
pub redirects: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ScanResult {
pub request_id: String,
pub url: ScanUrl,
pub mode: String,
pub verdict: String,
pub confidence: Option<f64>,
pub risk_score: Option<f64>,
pub threat_categories: Vec<String>,
pub reason_codes: Vec<String>,
pub brand_target: Option<String>,
pub screenshot_url: Option<String>,
pub scanned_at: String,
pub freshness: String,
pub engine_version: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BasicCheckResult {
pub result: Option<String>,
pub is_malicious: bool,
pub is_safe: bool,
pub raw: RawJson,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DetailedCheckResult {
pub result: Option<String>,
pub screenshot_url: Option<String>,
pub tag: Option<String>,
pub is_malicious: bool,
pub raw: RawJson,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct NsfwCheckResult {
pub result: Option<String>,
pub is_nsfw: bool,
pub raw: RawJson,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ChimeraResult {
pub result: Option<String>,
pub probability: Option<f64>,
pub detection_method: Option<String>,
pub matched_signatures: Option<i64>,
pub url: Option<String>,
pub is_malicious: bool,
pub raw: RawJson,
}