use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "action", rename_all = "snake_case")]
pub enum SafeStopAction {
HaltSynthesis,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Heartbeat {
pub sequence: u64,
pub timestamp: DateTime<Utc>,
pub timeout_ms: u64,
pub on_timeout: SafeStopAction,
pub signature: String,
pub signer_kid: String,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn safe_stop_halt_synthesis_serializes() {
let v = serde_json::to_value(SafeStopAction::HaltSynthesis).unwrap();
assert_eq!(v, serde_json::json!({"action": "halt_synthesis"}));
}
}