use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SVOAnalysis {
pub svo_structure_percent: f64,
pub avg_subject_length: f64,
pub avg_object_length: f64,
pub common_pivots: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WritingFootprint {
pub vocabulary_richness: f64,
pub avg_sentence_length: f64,
pub punctuation: PunctuationMetrics,
pub template_diversity: usize,
pub avg_entropy: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub svo_analysis: Option<SVOAnalysis>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PunctuationMetrics {
pub period_percent: f64,
pub question_percent: f64,
pub exclamation_percent: f64,
pub dialogue_percent: f64,
pub avg_commas_per_sentence: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompressionStats {
pub original_tokens: usize,
pub compressed_tokens: usize,
pub reduction_percent: f64,
}