use serde::{Deserialize, Serialize};
use crate::uslm::AmendingAction;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChangeAnnotation {
pub operation: AmendingAction,
pub source_bill: BillReference,
pub paths: Vec<String>,
pub metadata: AnnotationMetadata,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BillReference {
pub bill_id: String,
pub amendment_id: String,
pub causative_text: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AnnotationMetadata {
pub status: AnnotationStatus,
pub confidence: Option<f32>,
pub annotator: String,
pub timestamp: time::OffsetDateTime,
pub notes: Option<String>,
pub reasoning: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum AnnotationStatus {
Pending,
Verified,
Disputed,
Rejected,
}