import { EventsClient, type EmitResult } from "@hasna/events"; export interface TmuxPaneProbeResult { target: string; exists: boolean; paneId?: string; checkedAt: string; exitCode?: number | null; error?: string; stderr?: string; } export interface TmuxWatchOptions { target: string; intervalMs?: number; maxChecks?: number; emitInitialMissing?: boolean; deliver?: boolean; tmuxCommand?: string; client?: Pick; probe?: (target: string) => TmuxPaneProbeResult | Promise; sleep?: (ms: number) => Promise; onProbe?: (probe: TmuxPaneProbeResult) => void; } export interface TmuxWatchResult { target: string; checks: number; status: "present" | "missing" | "died" | "stopped"; lastProbe: TmuxPaneProbeResult; emitted?: EmitResult; } export interface TmuxPaneDiedHookPlan { tmuxCommand: string; args: string[]; shellCommand: string; eventType: "machines.tmux.pane_died"; deliver: boolean; trustedLocalMutation: boolean; } export declare function assertMachinesCommandSafe(command: string): void; export declare function buildTmuxPaneDiedHookPlan(options?: { tmuxCommand?: string; machinesCommand?: string; deliver?: boolean; approvalToken?: string; trustedLocalMutation?: boolean; }): TmuxPaneDiedHookPlan; export declare function probeTmuxPane(target: string, tmuxCommand?: string): TmuxPaneProbeResult; export declare function watchTmuxPane(options: TmuxWatchOptions): Promise;