use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ClaudeCliStatus {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub checked_at: String,
pub available: Option<bool>,
pub logged_in: Option<bool>,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub error: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct MergeError {
pub message: String,
pub at: String,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct MergeStatus {
pub enabled: bool,
pub claude_cli: ClaudeCliStatus,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub last_merge_at: String,
pub last_merge_error: Option<MergeError>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Health {
pub status: String,
pub git_commit: String,
pub started_at: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub last_sync_at: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub last_backup_at: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub last_offbox_at: String,
pub merge: MergeStatus,
}