/** Comfortably past Firefox's 5 s reconnect, short enough that a closed tab costs one breath. */ export declare const TAB_REUSE_WINDOW_MS = 7000; export interface DevViewRecord { /** Epoch ms when a tab last attached to a `dev` on this port. */ watcherSeenAt: number; editorPort: number; } export declare function devViewRecordPath(root: string): string; export declare function readDevViewRecord(root: string): DevViewRecord | null; export declare function writeDevViewRecord(root: string, record: DevViewRecord): void; export interface TabDecisionInput { /** A tab attached to a previous `dev` on this very port — worth waiting for. */ evidence: boolean; /** Epoch ms when the sidecar began listening; the wait is measured from here, not from now. */ listeningAt: number; hasWatcher: () => boolean; } export interface TabDecisionDeps { now?: () => number; sleep?: (ms: number) => Promise; } /** True when a tab should be opened; false when one is already watching this server. */ export declare function shouldOpenTab(input: TabDecisionInput, deps?: TabDecisionDeps): Promise;