/**
 * Screen capture backend for macOS.
 * Uses `screencapture` CLI for screenshots and screen recording.
 * Captures are returned as base64-encoded images for vision model consumption.
 */
import { EventEmitter } from "events";
export type CaptureMode = "screenshot" | "record";
export interface ScreenCaptureEvents {
    /** Capture has started */
    started: (mode: CaptureMode) => void;
    /** Screenshot taken successfully */
    captured: (imagePath: string) => void;
    /** Recording stopped, frames extracted */
    frames_ready: (framePaths: string[]) => void;
    /** Error occurred */
    error: (message: string) => void;
    /** Recording/capture stopped */
    stopped: () => void;
}
export interface DisplayInfo {
    id: number;
    name: string;
    resolution: string;
    isMain: boolean;
}
export declare class ScreenCapture extends EventEmitter {
    private recordProcess;
    private _recording;
    private captureDir;
    private recordingPath;
    get recording(): boolean;
    constructor();
    /**
     * List available displays.
     */
    listDisplays(): DisplayInfo[];
    /**
     * Take a screenshot of a specific display (or main display by default).
     * Returns the file path of the captured PNG.
     */
    screenshot(displayId?: number): Promise<string>;
    /**
     * Start recording the screen. Call stopRecording() to finish.
     */
    startRecording(displayId?: number): void;
    /**
     * Stop recording and extract key frames as images.
     * Returns paths to extracted frame images.
     */
    stopRecording(): Promise<string[]>;
    private extractFrames;
    private getVideoDuration;
    /**
     * Read an image file and return it as a base64 ImageContent object.
     */
    static imageToBase64(filePath: string): {
        data: string;
        mimeType: string;
    };
    /**
     * Clean up temporary files.
     */
    cleanup(): void;
}
//# sourceMappingURL=screen-capture.d.ts.map