import { type TmuxApi } from "./tmux.js"; export interface NudgeConfig { delayMs: number; maxCount: number; scanIntervalMs: number; message: string; } export declare const DEFAULT_NUDGE_CONFIG: NudgeConfig; interface PaneNudgeState { revision: number; nudgeCount: number; firstIdleAt: number | null; lastNudgeAt: number | null; lastAttempt?: PersistedNudgeAttempt; } export type NudgeOutcome = "reserved" | "sent" | "failed" | "skipped"; export interface PersistedNudgeAttempt { attemptId: string; reservedAt: number; outcome: NudgeOutcome; completedAt?: number; } export interface PaneNudgeSnapshot extends PaneNudgeState { paneId: string; } export interface NudgeTrackerSnapshot { schemaVersion: 1; lastScanAt: number; panes: PaneNudgeSnapshot[]; } export interface NudgeSummaryEntry { paneId: string; nudgeCount: number; lastNudgeAt: number | null; } export interface NudgeAttempt { paneId: string; attemptId: string; nudgeCount: number; at: number; outcome: Exclude; } export interface NudgeCandidate { paneId: string; at: number; } export declare class NudgeTracker { private readonly config; private readonly states; private lastScanAt; constructor(config?: Partial, snapshot?: NudgeTrackerSnapshot); observePanes(api: TmuxApi, panes: string[], leaderPaneId?: string, now?: number): NudgeCandidate[]; reserveNudge(paneId: string, attemptId: string, now?: number): Omit | undefined; recordNudgeOutcome(paneId: string, attemptId: string, outcome: Exclude, completedAt?: number): boolean; checkAndNudge(api: TmuxApi, sessionName: string, panes: string[], leaderPaneId?: string, now?: number): Promise; getSummary(): NudgeSummaryEntry[]; snapshot(): NudgeTrackerSnapshot; reset(): void; } export {};