import { EventEmitter } from 'eventemitter3';
import { SensoryPreferences } from '../preferences/schemas.js';

/**
 * Events emitted by VisualAdapter
 */
export interface VisualAdapterEvents {
    'adaptation-applied': (type: string, details: Record<string, unknown>) => void;
    'adaptation-removed': (type: string) => void;
    'error': (error: Error) => void;
}
/**
 * Configuration options for VisualAdapter
 */
export interface VisualAdapterOptions {
    targetElement?: HTMLElement;
    autoApply?: boolean;
    prefix?: string;
}
/**
 * Color vision filter types for accessibility
 */
export type ColorVisionFilter = 'none' | 'protanopia' | 'deuteranopia' | 'tritanopia';
/**
 * Visual adaptation types that can be applied
 */
export interface VisualAdaptations {
    motionReduction: boolean;
    highContrast: boolean;
    colorVisionFilter: ColorVisionFilter;
    fontSize: number;
    reducedFlashing: boolean;
    darkMode: boolean;
}
/**
 * VisualAdapter applies real-time visual adaptations to the DOM
 * based on user sensory preferences
 */
export declare class VisualAdapter extends EventEmitter<VisualAdapterEvents> {
    private readonly targetElement;
    private readonly prefix;
    private readonly appliedAdaptations;
    private styleElement?;
    private currentAdaptations;
    constructor(preferences: SensoryPreferences, options?: VisualAdapterOptions);
    /**
     * Apply visual adaptations based on sensory preferences
     */
    applyAdaptations(preferences: SensoryPreferences): void;
    /**
     * Remove all applied visual adaptations
     */
    disable(): void;
    /**
     * Get currently applied adaptations
     */
    getCurrentAdaptations(): Readonly<Partial<VisualAdaptations>>;
    /**
     * Check if a specific adaptation is currently applied
     */
    isAdaptationApplied(adaptation: keyof VisualAdaptations): boolean;
    private initializeStyleElement;
    private applyMotionReduction;
    private removeMotionReduction;
    private applyHighContrast;
    private removeHighContrast;
    private applyColorVisionFilter;
    private removeColorVisionFilter;
    private applyFontSizeScaling;
    private removeFontSizeScaling;
    private applyReducedFlashing;
    private removeReducedFlashing;
    private applyDarkMode;
    private removeDarkMode;
}
//# sourceMappingURL=visual-adapter.d.ts.map