use std::path::PathBuf;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum AgentConnectionStatus {
Connected,
Disconnected { since: DateTime<Utc> },
Error { message: String, since: DateTime<Utc> },
Unknown,
}
#[derive(Debug, Clone)]
pub struct HealthStatus {
pub reachable: bool,
pub latency_ms: Option<u64>,
pub version: Option<String>,
}
#[derive(Debug, Clone)]
pub struct InstallationStatus {
pub installed: bool,
pub version: Option<String>,
pub path: Option<PathBuf>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum AuthStatus {
Valid { expires_at: Option<DateTime<Utc>> },
Expired { expired_at: DateTime<Utc> },
NotConfigured,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentStatusEvent {
pub agent_id: String,
pub previous_status: AgentConnectionStatus,
pub new_status: AgentConnectionStatus,
pub timestamp: DateTime<Utc>,
}