import type { NodeStatus } from './types.js'; import { type Fault, type FaultKind } from '../runtime/fault.js'; export declare const STATUS_GLYPH: Record; export declare const STATUS_COLOR: Record; export declare const HANGING_GLYPH = "\u26A0"; export declare const HANGING_COLOR = 33; /** Short label for the fault kind. The overlay keeps one glyph and lets the * label carry the distinction. */ export declare function hangingLabel(kind: FaultKind): string; export interface NodeVisual { glyph: string; color: number; /** Overlay word (hanging kind label / 'live'); undefined for a plain status * (the caller supplies its own status word). */ word?: string; bold?: boolean; } /** Resolve a node's glyph + hue + overlay word, applying the precedence * hanging > streaming > status. */ export declare function resolveNodeVisual(status: NodeStatus, opts: { streaming?: boolean; hanging?: Fault | { kind: FaultKind; } | null; }): NodeVisual; /** True for exactly the fault dispositions `faultDispositionText` renders as * "needs you" — nothing (sdk/daemon/client) is auto-driving recovery, so the * dashboard flags the node for the human. Exported so a recovery verb (e.g. * `node lifecycle revive --now`, src/commands/node-lifecycle-revive.ts) can gate on the SAME * predicate the dashboard advertises instead of drifting out of sync with it * (issue #115 — `--now` used to reject exactly the nodes shown as "needs you"). */ export declare function faultNeedsYou(fault: Pick): boolean; /** Human-friendly active-fault disposition text. `auto` faults show the current * retry attempt plus the next scheduled retry; client-owned redials say * `redialing`; everything else says `needs you`. */ export declare function faultDispositionText(fault: Fault, now?: number): string; /** One-line active-fault summary used by the canvas surfaces: `link kind · * disposition`. */ export declare function faultSummary(fault: Fault, now?: number): string; /** Elapsed counter used by the browse rail's countdown slot. `faultSummary` * covers the presenter surfaces; this stays for the rail's existing time text. */ export declare function hangingCountdown(since: string, now?: number): string;