/**
 * Screen Observer
 *
 * Periodic screen monitoring with perceptual hashing for change detection.
 * Maintains a rolling history of frames for diff comparison.
 */
import { EventEmitter } from 'events';
export interface ScreenDiff {
    hasChanges: boolean;
    changePercentage: number;
    changedRegions: Region[];
    previousHash: string;
    currentHash: string;
    timestamp: Date;
}
export interface Region {
    x: number;
    y: number;
    width: number;
    height: number;
    description?: string;
}
export interface ScreenFrame {
    hash: string;
    timestamp: Date;
    metadata?: Record<string, unknown>;
}
export interface ScreenObserverConfig {
    /** Observation interval (ms) */
    intervalMs: number;
    /** Max frames to keep in history */
    maxHistory: number;
    /** Change detection threshold (0-1) */
    changeThreshold: number;
}
export declare class ScreenObserver extends EventEmitter {
    private config;
    private timer;
    private running;
    private history;
    private lastHash;
    private captureImpl;
    constructor(config?: Partial<ScreenObserverConfig>);
    /**
     * Set the capture implementation (platform-specific)
     */
    setCaptureMethod(capture: () => Promise<Buffer | null>): void;
    /**
     * Start observing
     */
    start(intervalMs?: number): void;
    /**
     * Stop observing
     */
    stop(): void;
    /**
     * Run a single observation cycle
     */
    observe(): Promise<ScreenDiff | null>;
    /**
     * Compute perceptual hash of image data
     */
    private computeHash;
    /**
     * Compare two hashes and determine if there's a change
     */
    private compareHashes;
    /**
     * Get frame history
     */
    getHistory(): ScreenFrame[];
    /**
     * Is observer running
     */
    isRunning(): boolean;
    /**
     * Get config
     */
    getConfig(): ScreenObserverConfig;
}
