use crate::domain::{ConfidenceTier, MemoryLifecycleState, MemoryScope};
use serde::{Deserialize, Serialize};
use ts_rs::TS;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, TS)]
#[ts(export, export_to = "../frontend/src/lib/types/generated/")]
pub struct LifecycleCandidate {
pub record_id: String,
pub title: String,
pub summary: String,
pub memory_type: String,
pub scope: MemoryScope,
pub state: MemoryLifecycleState,
pub score: i32,
pub reasons: Vec<String>,
pub project_id: Option<String>,
pub confidence: ConfidenceTier,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub contradicts: Vec<String>,
}