use crate::types::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContinuityProof {
pub resonator_id: ResonatorId,
pub checkpoint_time: chrono::DateTime<chrono::Utc>,
pub signature: Vec<u8>,
pub nonce: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContinuityRecord {
pub identity: ResonatorId,
pub presence_state: PresenceState,
pub attention_state: AttentionBudget,
pub couplings: Vec<Coupling>,
pub pending_commitments: Vec<CommitmentId>,
pub memory: Option<Vec<u8>>,
pub checkpoint_time: chrono::DateTime<chrono::Utc>,
}
impl ContinuityRecord {
pub fn new(
identity: ResonatorId,
presence_state: PresenceState,
attention_state: AttentionBudget,
couplings: Vec<Coupling>,
) -> Self {
Self {
identity,
presence_state,
attention_state,
couplings,
pending_commitments: Vec::new(),
memory: None,
checkpoint_time: chrono::Utc::now(),
}
}
pub fn generate_proof(&self) -> ContinuityProof {
ContinuityProof {
resonator_id: self.identity,
checkpoint_time: self.checkpoint_time,
signature: Vec::new(), nonce: 0, }
}
}