import type { CursorState } from './types.js';
/** Default idle window before CLI may self-update (5 minutes). */
export declare const IDLE_UPDATE_DEFAULT_MS: number;
export interface BusyCheck {
    busy: boolean;
    reasons: string[];
}
export declare function isCurrentlyBusy(state: CursorState): BusyCheck;
export interface ActivityStatus {
    busy: boolean;
    busyReasons: string[];
    /** Last moment bridge saw active work (ms epoch), or null if never. */
    lastActivityAt: number | null;
    idleMs: number;
    /** Ms since last activity while not busy (0 if busy now). */
    idleForMs: number;
    /** Not busy now and no activity for at least idleMs. */
    idleForUpdate: boolean;
}
export declare class ActivityTracker {
    private lastActivityAt;
    touch(): void;
    recordFromState(state: CursorState): void;
    getStatus(state: CursorState, idleMs: number): ActivityStatus;
}
export declare const activityTracker: ActivityTracker;
export declare function parseIdleMsQuery(raw: unknown): number;
