/**
 * Accessibility Utilities
 *
 * Provides utilities for improved accessibility including:
 * - Screen reader announcements
 * - Focus management
 * - Keyboard navigation
 * - High contrast mode
 * - Reduced motion support
 * - Color contrast checking
 */
export interface AriaLiveRegion {
    /** Politeness level */
    politeness: 'polite' | 'assertive' | 'off';
    /** Message to announce */
    message: string;
    /** Timestamp */
    timestamp: number;
}
export interface KeyboardShortcut {
    /** Key combination */
    keys: string[];
    /** Description */
    description: string;
    /** Handler function */
    handler: () => void;
    /** Whether it's enabled */
    enabled?: boolean;
}
export interface ContrastRatio {
    /** Contrast ratio (1-21) */
    ratio: number;
    /** WCAG AA compliance (4.5:1 for normal text, 3:1 for large text) */
    isAA: boolean;
    /** WCAG AAA compliance (7:1 for normal text, 4.5:1 for large text) */
    isAAA: boolean;
}
export interface AccessibilitySettings {
    /** Enable screen reader support */
    screenReader: boolean;
    /** Enable high contrast mode */
    highContrast: boolean;
    /** Reduce motion */
    reduceMotion: boolean;
    /** Announce keystrokes */
    announceKeys: boolean;
    /** Focus indicator style */
    focusIndicator: 'underline' | 'box' | 'background' | 'none';
    /** Minimum contrast ratio */
    minContrastRatio: number;
}
declare class ScreenReaderManager {
    private announcements;
    private listeners;
    /**
     * Announce a message to screen readers
     */
    announce(message: string, politeness?: 'polite' | 'assertive'): void;
    /**
     * Subscribe to announcements
     */
    subscribe(listener: (announcement: AriaLiveRegion) => void): () => void;
    /**
     * Get recent announcements
     */
    getRecent(count?: number): AriaLiveRegion[];
    /**
     * Clear all announcements
     */
    clear(): void;
}
/**
 * Announce a message to screen readers
 */
export declare function announceToScreenReader(message: string, politeness?: 'polite' | 'assertive'): void;
/**
 * Hook for subscribing to screen reader announcements
 */
export declare function useScreenReaderAnnouncements(callback: (announcement: AriaLiveRegion) => void): void;
export interface FocusableElement {
    id: string;
    label: string;
    order: number;
}
declare class FocusManager {
    private elements;
    private currentFocus;
    private listeners;
    /**
     * Register a focusable element
     */
    register(element: FocusableElement): () => void;
    /**
     * Set focus to an element
     */
    focus(id: string | null): void;
    /**
     * Move focus to next element
     */
    focusNext(): void;
    /**
     * Move focus to previous element
     */
    focusPrevious(): void;
    /**
     * Get current focus
     */
    getCurrentFocus(): string | null;
    /**
     * Subscribe to focus changes
     */
    subscribe(listener: (focusId: string | null) => void): () => void;
    /**
     * Get all focusable elements
     */
    getElements(): FocusableElement[];
}
/**
 * Hook for managing focus
 */
export declare function useFocusManagement(elementId: string, label: string, order?: number): {
    isFocused: boolean;
    focus: () => void;
    focusNext: () => void;
    focusPrevious: () => void;
};
/**
 * Hook for keyboard shortcuts with accessibility
 */
export declare function useKeyboardShortcuts(shortcuts: KeyboardShortcut[]): void;
/**
 * Hook for arrow key navigation
 */
export declare function useArrowKeyNavigation(itemCount: number, onSelect: (index: number) => void, options?: {
    enabled?: boolean;
    wrap?: boolean;
    horizontal?: boolean;
    announceSelection?: boolean;
}): {
    selectedIndex: number;
    setSelectedIndex: (index: number) => void;
};
/**
 * Calculate contrast ratio between two colors
 */
export declare function calculateContrastRatio(color1: string, color2: string): number;
/**
 * Check if contrast ratio meets WCAG standards
 */
export declare function checkContrast(foreground: string, background: string, isLargeText?: boolean): ContrastRatio;
/**
 * Get high contrast version of a color
 */
export declare function getHighContrastColor(color: string, background: string, targetRatio?: number): string;
declare class AccessibilitySettingsManager {
    private settings;
    private listeners;
    /**
     * Load settings from environment or system preferences
     */
    constructor();
    /**
     * Get current settings
     */
    getSettings(): AccessibilitySettings;
    /**
     * Update settings
     */
    updateSettings(updates: Partial<AccessibilitySettings>): void;
    /**
     * Subscribe to settings changes
     */
    subscribe(listener: (settings: AccessibilitySettings) => void): () => void;
    /**
     * Reset to defaults
     */
    reset(): void;
}
/**
 * Hook for accessibility settings
 */
export declare function useAccessibilitySettings(): {
    settings: AccessibilitySettings;
    updateSettings: (updates: Partial<AccessibilitySettings>) => void;
    reset: () => void;
};
/**
 * Hook for respecting reduced motion preference
 */
export declare function useReducedMotion(): boolean;
/**
 * Get animation duration based on reduced motion preference
 */
export declare function getAnimationDuration(defaultMs: number, reducedMotion: boolean): number;
/**
 * Generate ARIA label for UI element
 */
export declare function generateAriaLabel(label: string, context?: {
    role?: string;
    index?: number;
    total?: number;
    state?: 'selected' | 'active' | 'disabled' | 'expanded' | 'collapsed';
}): string;
export declare const accessibility: {
    screenReader: ScreenReaderManager;
    focus: FocusManager;
    settings: AccessibilitySettingsManager;
};
export default accessibility;
