/**
 * ThemeProvider
 *
 * Applies consistent accessibility theming across items and tools.
 * Uses CSS custom properties and classes for framework-agnostic theming.
 *
 * Features:
 * - High contrast mode
 * - Font size scaling (small, normal, large, xlarge)
 * - Color customization (background, foreground, accent)
 * - Consistent theming across shadow DOM boundaries
 * - No framework dependencies
 *
 * Part of PIE Assessment Toolkit.
 */
import type { ThemeProviderApi } from "./interfaces.js";
/**
 * Font size options
 */
export type FontSize = "small" | "normal" | "large" | "xlarge";
/**
 * Theme configuration
 */
export interface ThemeConfig {
    highContrast?: boolean;
    fontSize?: FontSize;
    backgroundColor?: string;
    foregroundColor?: string;
    accentColor?: string;
    linkColor?: string;
    errorColor?: string;
    successColor?: string;
    warningColor?: string;
}
export declare class ThemeProvider implements ThemeProviderApi {
    private currentTheme;
    private styleElement;
    private rootElement;
    private styleContainer;
    constructor(rootElement?: HTMLElement | null);
    /**
     * Initialize theme styles
     */
    private initializeStyles;
    /**
     * Apply theme configuration
     *
     * @param config Partial theme configuration (merged with current theme)
     */
    applyTheme(config: ThemeConfig): void;
    /**
     * Apply CSS custom properties to root element
     */
    private applyCSSVariables;
    /**
     * Apply CSS classes to root element
     */
    private applyCSSClasses;
    /**
     * Update global theme styles
     */
    private updateGlobalStyles;
    /**
     * Set high contrast mode
     */
    setHighContrast(enabled: boolean): void;
    /**
     * Set font size
     */
    setFontSize(size: FontSize): void;
    /**
     * Set color scheme
     */
    setColors(colors: {
        backgroundColor?: string;
        foregroundColor?: string;
        accentColor?: string;
    }): void;
    /**
     * Get current theme configuration
     */
    getCurrentTheme(): Required<ThemeConfig>;
    /**
     * Reset to default theme
     */
    reset(): void;
    /**
     * Adjust color opacity (helper)
     */
    private adjustOpacity;
    /**
     * Cleanup - remove theme styles
     */
    destroy(): void;
}
