use crate::event::observability::CaptureStamp;
use crate::event::vector_clock::VectorClock;
use crate::{EventId, JournalWriterId, WriterId};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct RuntimeSnapshot {
pub capture: CaptureStamp,
pub progress: ExecutionProgress,
pub fsm_state: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ExecutionProgress {
pub reader_seq: u64,
pub receipted_seq: u64,
pub writer_seq: u64,
pub last_consumed_event_id: Option<EventId>,
pub last_consumed_writer: Option<JournalWriterId>,
pub last_consumed_vector_clock: Option<VectorClock>,
pub last_receipted_event_id: Option<EventId>,
pub last_receipted_vector_clock: Option<VectorClock>,
pub last_emitted_event_id: Option<EventId>,
pub last_emitted_writer: Option<WriterId>,
}