/**
 * Editor Monitor (Feature #2 — Windows side)
 *
 * Standalone daemon that watches the user's active editor (VS Code, Cursor,
 * etc.) and pushes its state to the Fivo Cell bridge. On Windows, it uses
 * PowerShell to query the foreground window title (which contains the
 * active file path in VS Code/Cursor). On macOS/Linux, it falls back to
 * `xdotool`/AppleScript.
 *
 * Two modes:
 *   1) Active-window polling (default) — every N seconds, check what's open
 *   2) File watcher — when a file in the project is touched, push state
 *
 * Usage:
 *   cell watch-editor start [--project NAME] [--interval 3000] [--port 9877]
 *   cell watch-editor stop
 *   cell watch-editor status
 */
interface ActiveWindow {
    title: string;
    processName: string;
    pid: number;
}
interface ParsedEditorState {
    editorName: string;
    filePath: string;
    line: number;
    column: number;
    isDirty: boolean;
    project: string;
    language?: string;
    unsavedBuffer?: string;
    unsavedLength?: number;
}
export declare function getActiveWindow(): Promise<ActiveWindow | null>;
export declare function parseTitleToState(title: string, processName: string, project: string, fileBaseDir?: string): ParsedEditorState | null;
export declare class BridgeClient {
    private socket;
    private buffer;
    private connected;
    private retryTimer;
    private connectResolvers;
    private host;
    private port;
    constructor(host?: string, port?: number);
    connect(): void;
    whenConnected(timeoutMs?: number): Promise<boolean>;
    private cleanup;
    private scheduleRetry;
    pushState(state: ParsedEditorState): boolean;
    stop(): void;
    isConnected(): boolean;
}
export interface MonitorOptions {
    project: string;
    intervalMs?: number;
    bridgeHost?: string;
    bridgePort?: number;
    fileBaseDir?: string;
    watchFiles?: boolean;
    onState?: (state: ParsedEditorState) => void;
    onError?: (e: Error) => void;
    onSkip?: (reason: string) => void;
}
export declare class EditorMonitor {
    private opts;
    private client;
    private timer;
    private fileWatcher;
    private lastState;
    private running;
    private startTime;
    private pollsCompleted;
    private statesDetected;
    private statesPushed;
    constructor(opts: MonitorOptions);
    start(): void;
    stop(): void;
    isRunning(): boolean;
    getInfo(): {
        running: boolean;
        project: string;
        startTime: string | null;
        pollsCompleted: number;
        statesDetected: number;
        statesPushed: number;
        bridgeConnected: boolean;
        lastState: ParsedEditorState | null;
    };
    private poll;
}
export {};
//# sourceMappingURL=editor-monitor.d.ts.map