/**
 * Modos de contraste suportados pelo widget de acessibilidade
 */
export type ContrastMode = 'normal' | 'high' | 'inverted';
/**
 * Modos de saturação para usuários com sensibilidade visual
 */
export type SaturationMode = 'normal' | 'grayscale' | 'low';
/**
 * Auxiliares de leitura mutuamente exclusivos:
 * - `none`: nenhum auxiliar
 * - `ruler`: linha horizontal acompanha o cursor
 * - `mask`: escurece a tela exceto uma faixa central na altura do cursor
 */
export type ReadingAid = 'none' | 'ruler' | 'mask';
/**
 * Modo do leitor de texto (TTS):
 * - `off`: leitor desligado
 * - `click-to-read`: usuário clica em um elemento e o widget lê o texto dele
 * - `read-selection`: usuário pressiona "Ler seleção" para falar o texto selecionado
 */
export type TTSMode = 'off' | 'click-to-read' | 'read-selection';
/** Status runtime da síntese de voz — não persistido. */
export type TTSStatus = 'idle' | 'speaking' | 'paused';
/**
 * Modos de daltonismo. Aplicam matrizes `<feColorMatrix>` (SVG) que
 * remapeiam cores para ajudar usuários com cada tipo de discromatopsia.
 *
 * Enum (e não union de strings como os outros modos) porque cada valor
 * é também usado como identificador estável em três outros lugares —
 * classes CSS, IDs de filter SVG e seletores no CSS — então centralizar
 * em um enum + helpers evita strings duplicadas e typos silenciosos.
 */
export declare enum ColorBlindMode {
    None = "none",
    Protanopia = "protanopia",
    Deuteranopia = "deuteranopia",
    Tritanopia = "tritanopia"
}
/**
 * Retorna a classe CSS aplicada no `<html>` para o modo informado, ou
 * `null` quando nenhum modo está ativo.
 */
export declare const getColorBlindClass: (mode: ColorBlindMode) => string | null;
/** Retorna o id do `<filter>` SVG correspondente ao modo. */
export declare const getColorBlindFilterId: (mode: Exclude<ColorBlindMode, ColorBlindMode.None>) => string;
/**
 * Níveis discretos para tamanho de fonte (0 = padrão da página)
 */
export type FontSizeLevel = 0 | 1 | 2 | 3;
/**
 * Níveis discretos para espaçamento entre letras e linhas
 */
export type SpacingLevel = 0 | 1 | 2 | 3;
/**
 * Conjunto completo de preferências persistidas
 */
export interface AccessibilityPreferences {
    contrastMode: ContrastMode;
    saturationMode: SaturationMode;
    fontSize: FontSizeLevel;
    letterSpacing: SpacingLevel;
    lineSpacing: SpacingLevel;
    highlightLinks: boolean;
    pauseAnimations: boolean;
    bigCursor: boolean;
    /** Fonte amigável para dislexia (OpenDyslexic com fallback Comic Sans MS) */
    dyslexiaFont: boolean;
    /** Auxiliar visual de leitura (régua, máscara ou nenhum) */
    readingAid: ReadingAid;
    /** Habilita atalho Alt+A para abrir/fechar o painel */
    keyboardShortcut: boolean;
    /** Modo de daltonismo aplicado (filtro SVG na página inteira) */
    colorBlindMode: ColorBlindMode;
    /** Modo do leitor de texto (TTS) */
    ttsMode: TTSMode;
    /** Velocidade da fala (0.5 a 2.0) */
    ttsRate: number;
    /** Voz selecionada pelo usuário (id retornado pelo provider) ou null para padrão */
    ttsVoiceId: string | null;
    /** Habilita o widget VLibras (gov.br) — carregado lazy ao ativar */
    librasEnabled: boolean;
}
export interface AccessibilityState extends AccessibilityPreferences {
    /** Indica se o painel de acessibilidade está aberto */
    isPanelOpen: boolean;
    /** Status runtime da síntese de voz — não persistido */
    ttsStatus: TTSStatus;
}
export interface AccessibilityActions {
    setContrastMode: (mode: ContrastMode) => void;
    setSaturationMode: (mode: SaturationMode) => void;
    setFontSize: (level: FontSizeLevel) => void;
    setLetterSpacing: (level: SpacingLevel) => void;
    setLineSpacing: (level: SpacingLevel) => void;
    setHighlightLinks: (value: boolean) => void;
    setPauseAnimations: (value: boolean) => void;
    setBigCursor: (value: boolean) => void;
    setDyslexiaFont: (value: boolean) => void;
    setReadingAid: (mode: ReadingAid) => void;
    setKeyboardShortcut: (value: boolean) => void;
    setColorBlindMode: (mode: ColorBlindMode) => void;
    setTTSMode: (mode: TTSMode) => void;
    setTTSRate: (rate: number) => void;
    setTTSVoiceId: (id: string | null) => void;
    setTTSStatus: (status: TTSStatus) => void;
    setLibrasEnabled: (value: boolean) => void;
    /** Restaura todas as preferências para o estado padrão */
    resetPreferences: () => void;
    openPanel: () => void;
    closePanel: () => void;
    togglePanel: () => void;
}
export type AccessibilityStore = AccessibilityState & AccessibilityActions;
export declare const DEFAULT_ACCESSIBILITY_PREFERENCES: AccessibilityPreferences;
/**
 * Store Zustand com persistência em localStorage para preferências
 * de acessibilidade. As preferências são aplicadas ao DOM pelo hook
 * `useA11yPreferences` — este store apenas guarda o estado.
 */
export declare const useAccessibilityStore: import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<AccessibilityStore>, "setState" | "devtools"> & {
    setState(partial: AccessibilityStore | Partial<AccessibilityStore> | ((state: AccessibilityStore) => AccessibilityStore | Partial<AccessibilityStore>), replace?: false | undefined, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): void;
    setState(state: AccessibilityStore | ((state: AccessibilityStore) => AccessibilityStore), replace: true, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): void;
    devtools: {
        cleanup: () => void;
    };
}, "setState" | "persist"> & {
    setState(partial: AccessibilityStore | Partial<AccessibilityStore> | ((state: AccessibilityStore) => AccessibilityStore | Partial<AccessibilityStore>), replace?: false | undefined, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): unknown;
    setState(state: AccessibilityStore | ((state: AccessibilityStore) => AccessibilityStore), replace: true, action?: (string | {
        [x: string]: unknown;
        [x: number]: unknown;
        [x: symbol]: unknown;
        type: string;
    }) | undefined): unknown;
    persist: {
        setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AccessibilityStore, any, unknown>>) => void;
        clearStorage: () => void;
        rehydrate: () => Promise<void> | void;
        hasHydrated: () => boolean;
        onHydrate: (fn: (state: AccessibilityStore) => void) => () => void;
        onFinishHydration: (fn: (state: AccessibilityStore) => void) => () => void;
        getOptions: () => Partial<import("zustand/middleware").PersistOptions<AccessibilityStore, any, unknown>>;
    };
}>;
//# sourceMappingURL=accessibilityStore.d.ts.map