use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SnapshotMeta {
pub id: u64,
pub name: Option<String>,
pub created_at: u64,
pub lineage_count: u32,
pub bond_count: u32,
pub size_bytes: u64,
pub version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Snapshot {
pub meta: SnapshotMeta,
pub psyche_data: Vec<u8>,
pub strata_data: Vec<u8>,
pub bond_data: Vec<u8>,
pub cortex_data: Option<Vec<u8>>,
pub physics_config: PhysicsSnapshot,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PhysicsSnapshot {
pub decay_multiplier: f32,
pub trauma_threshold: f32,
pub bond_prune_threshold: f32,
pub is_frozen: bool,
}
impl Snapshot {
pub fn total_size(&self) -> usize {
self.psyche_data.len() + self.strata_data.len() + self.bond_data.len()
}
}