/**
 * Multimodal Input Support
 *
 * Enables image and screenshot input for AI analysis:
 * - Screenshot capture
 * - Image file analysis
 * - Clipboard image paste
 * - OCR extraction
 * - Visual debugging
 *
 * Inspired by Gemini CLI's multimodal capabilities.
 */
import { EventEmitter } from 'events';
export interface ImageInput {
    /** Image ID */
    id: string;
    /** Source type */
    source: 'file' | 'screenshot' | 'clipboard' | 'url';
    /** Original path or URL */
    path?: string;
    /** Local file path (after download/capture) */
    localPath: string;
    /** MIME type */
    mimeType: string;
    /** Base64 encoded data */
    base64?: string;
    /** Image dimensions */
    dimensions?: {
        width: number;
        height: number;
    };
    /** File size in bytes */
    size: number;
    /** Created timestamp */
    createdAt: number;
    /** Optional description */
    description?: string;
}
export interface ScreenshotOptions {
    /** Capture full screen or selection */
    mode: 'fullscreen' | 'selection' | 'window';
    /** Delay before capture (ms) */
    delay?: number;
    /** Output format */
    format?: 'png' | 'jpg';
    /** Include cursor */
    includeCursor?: boolean;
    /** Specific display/monitor */
    display?: number;
}
export interface OCRResult {
    text: string;
    confidence?: number;
    regions?: Array<{
        text: string;
        bounds: {
            x: number;
            y: number;
            width: number;
            height: number;
        };
    }>;
}
export interface MultimodalConfig {
    /** Temporary storage directory */
    tempDir: string;
    /** Maximum image size (bytes) */
    maxImageSize: number;
    /** Supported formats */
    supportedFormats: string[];
    /** Enable OCR */
    ocrEnabled: boolean;
    /** OCR language */
    ocrLanguage: string;
    /** Auto-resize large images */
    autoResize: boolean;
    /** Max dimension for auto-resize */
    maxDimension: number;
}
export interface MultimodalCapabilities {
    /** Screenshot available */
    screenshotAvailable: boolean;
    /** Clipboard available */
    clipboardAvailable: boolean;
    /** OCR available */
    ocrAvailable: boolean;
    /** Image processing available */
    imageProcessingAvailable: boolean;
}
export declare class MultimodalInputManager extends EventEmitter {
    private config;
    private images;
    private capabilities;
    constructor(config?: Partial<MultimodalConfig>);
    /**
     * Initialize and detect capabilities
     */
    initialize(): Promise<MultimodalCapabilities>;
    /**
     * Capture screenshot
     */
    captureScreenshot(options?: Partial<ScreenshotOptions>): Promise<ImageInput>;
    /**
     * Load image from file
     */
    loadImageFile(filePath: string, source?: ImageInput['source']): Promise<ImageInput>;
    /**
     * Load image from URL
     */
    loadImageFromURL(url: string): Promise<ImageInput>;
    /**
     * Load image from clipboard
     */
    loadFromClipboard(): Promise<ImageInput>;
    /**
     * Perform OCR on image
     */
    performOCR(imageId: string): Promise<OCRResult>;
    /**
     * Get image by ID
     */
    getImage(id: string): ImageInput | undefined;
    /**
     * Get all images
     */
    getAllImages(): ImageInput[];
    /**
     * Remove image
     */
    removeImage(id: string): boolean;
    /**
     * Clear all images
     */
    clearAll(): void;
    /**
     * Prepare image for API (resize if needed, convert to base64)
     */
    prepareForAPI(imageId: string): Promise<{
        base64: string;
        mimeType: string;
    }>;
    /**
     * Format images summary
     */
    formatSummary(): string;
    private captureScreenshotMacOS;
    private captureScreenshotLinux;
    private captureScreenshotWindows;
    private getImageDimensions;
    private resizeImage;
    private getMimeType;
    private getExtensionFromURL;
    private generateId;
    private checkCommand;
    private execCommand;
    /**
     * Dispose and cleanup resources
     */
    dispose(): void;
}
export declare function getMultimodalInputManager(config?: Partial<MultimodalConfig>): MultimodalInputManager;
export declare function resetMultimodalInputManager(): void;
