import type { MachineState, MetricSample } from "../../types/machines.js"; import { type OpenGeniText } from "../../messages/runtime.js"; export type HealthLevel = "healthy" | "degraded" | "critical" | "offline" | "unknown"; export type HealthVerdict = { level: HealthLevel; /** Title-case label for the pill ("Healthy", "Under load", "Critical", …). */ label: string; /** One short human clause naming the dominant cause ("Memory 94%", "No display"…). */ reason: string; /** The latest sample is older than we'd expect from a live agent (~5s cadence). */ stale: boolean; }; /** Fold a machine's reachability + latest sample + wall-clock into one verdict. */ export declare function deriveHealth(msg: OpenGeniText, state: MachineState, metrics: MetricSample | null, now?: number): HealthVerdict; /** * The token color ramp for a health level. Green/amber/red/grey is the * universally-legible traffic model; we reserve it for the HEALTH verdict * specifically (per-resource meters keep their own ramp in `machine-metrics`). */ export declare const HEALTH_TOKEN: Record; /** Live/transient levels breathe; settled levels hold still. */ export declare function healthPulses(level: HealthLevel): boolean;