import { ToolResult } from '../types/index.js';
export interface ScreenshotOptions {
    fullscreen?: boolean;
    region?: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    window?: string;
    delay?: number;
    format?: 'png' | 'jpg';
    quality?: number;
    outputPath?: string;
    /** Auto-normalize the screenshot for LLM consumption (resize + compress) */
    forLLM?: boolean;
}
export interface NormalizedImage {
    base64: string;
    contentType: 'image/jpeg' | 'image/png';
    width: number;
    height: number;
}
export interface ScreenshotResult {
    path: string;
    width?: number;
    height?: number;
    size: string;
    timestamp: string;
}
/**
 * Screenshot Tool for capturing screen, windows, and regions
 * Works on Linux (with scrot/gnome-screenshot), macOS (screencapture), and Windows (PowerShell)
 */
export declare class ScreenshotTool {
    private readonly defaultOutputDir;
    private vfs;
    /**
     * Capture a screenshot
     */
    capture(options?: ScreenshotOptions): Promise<ToolResult>;
    /**
     * Capture screenshot on macOS using screencapture
     */
    private captureMacOS;
    /**
     * Capture screenshot on Linux using scrot or gnome-screenshot
     */
    private captureLinux;
    /**
     * Capture screenshot on Windows using PowerShell
     */
    private captureWindows;
    /**
     * Detect if running inside WSL2
     */
    private isWSL;
    /**
     * Capture screenshot on WSL2 via PowerShell interop (real Windows desktop)
     * Falls back to scrot if powershell.exe is not available.
     */
    private captureWSL;
    /**
     * Normalize a screenshot for LLM consumption.
     * Iterates sizes × qualities to find smallest JPEG under maxBytes.
     * Uses sharp if available, falls back to ffmpeg.
     */
    normalizeForLLM(imagePath: string, maxBytes?: number): Promise<NormalizedImage>;
    /**
     * Capture active window
     */
    captureWindow(windowTitle?: string): Promise<ToolResult>;
    /**
     * Capture a region
     */
    captureRegion(x: number, y: number, width: number, height: number): Promise<ToolResult>;
    /**
     * Capture fullscreen with delay
     */
    captureDelayed(seconds: number): Promise<ToolResult>;
    /**
     * List saved screenshots
     */
    listScreenshots(): Promise<ToolResult>;
    /**
     * Read a screenshot and convert to base64
     */
    toBase64(filePath: string): Promise<ToolResult>;
    /**
     * Delete a screenshot
     */
    deleteScreenshot(filePath: string): Promise<ToolResult>;
    /**
     * Clear all screenshots
     */
    clearScreenshots(): Promise<ToolResult>;
    /**
     * Format file size
     */
    private formatSize;
    /**
     * Format result for display
     */
    private formatResult;
}
