import type { WatchdogTickResult } from '../watchdog/runner.js';
/**
 * One registered fleet device, for the menu-bar's collapsible DEVICES section.
 * Sourced from the local registry read (`loadDevices`) — no network probe — so
 * it carries only local persisted state (name, platform, preferred status,
 * whether it is the interactive host, whether it is this machine). Live load% is merged in
 * on the Swift side from the daemon-warmed `.fleet-stats.json`; online/offline
 * is deliberately NOT claimed here (the registry's cached tailscale flag is
 * documented as stale in both directions — registry.ts isLikelyOnline).
 */
export interface MenubarDevice {
    name: string;
    platform: string;
    interactive: boolean;
    isLocal: boolean;
    preferred: boolean;
}
export interface MenubarSnapshot {
    version: 1;
    capturedAt: string;
    /**
     * The installed CLI version that produced this snapshot — the same string
     * `agents --version` prints (RUSH-2688). The snapshot is emitted by whatever
     * `agents` binary is on PATH, so this is resolved at runtime, letting the menu
     * bar show its own version in the header and making a stale menu bar visible.
     */
    cliVersion: string;
    routines: Record<string, unknown>[];
    recentSessions: Record<string, unknown>[];
    activeSessions: Record<string, unknown>[];
    devices: MenubarDevice[];
    watchdog: {
        enabled: boolean;
        lastTick: Pick<WatchdogTickResult, 'didNudge' | 'counts'> | null;
    };
}
export declare function readLastWatchdogTick(stateDir?: string): WatchdogTickResult | null;
/** One-process read model for AGI Menu's repeating three-minute refresh. */
export declare function computeMenubarSnapshot(): Promise<MenubarSnapshot>;
