import * as svelte_store from 'svelte/store';

type WidgetSize = 'S' | 'M' | 'L';
type Position = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
type TextAlignment = 'left' | 'center' | 'right' | 'default';
type AccessibilityProfile = 'seizure-safe' | 'vision-impaired' | 'adhd-friendly' | 'cognitive-disability' | 'keyboard-navigation' | 'screen-reader' | 'color-blind' | 'dyslexia';
type ColorScheme = 'light' | 'dark';
type Lang = 'en' | 'ar' | 'es' | 'fr' | 'de' | 'pt';
type TriggerScheme = 'auto' | 'dark' | 'light' | 'blue';
interface AccessifyConfig {
    position?: Position;
    size?: WidgetSize;
    theme?: {
        primary?: string;
        background?: string;
        text?: string;
        headerBackground?: string;
    };
    colorScheme?: ColorScheme;
    /**
     * Trigger button color preset.
     * - 'auto'  — matches colorScheme (default)
     * - 'dark'  — black background, white icon
     * - 'light' — white background, dark icon
     * - 'blue'  — blue background (#0066ff), white icon (standard a11y preset)
     */
    triggerScheme?: TriggerScheme;
    /** Custom SVG markup for the trigger button icon */
    triggerIcon?: string;
    /** Brand title displayed in widget header. Defaults to 'Tech unicorn' */
    brandTitle?: string;
    persistence?: boolean;
    lang?: Lang;
    onOpen?: () => void;
    onClose?: () => void;
    onReset?: () => void;
    onLangChange?: (lang: Lang) => void;
    onColorSchemeChange?: (scheme: ColorScheme) => void;
    onSizeChange?: (size: WidgetSize) => void;
}
interface AccessifyState {
    profile: AccessibilityProfile | null;
    fontSize: number;
    contentScale: number;
    lineHeight: number;
    letterSpacing: number;
    textAlignment: TextAlignment;
    readableFont: boolean;
    highlightTitles: boolean;
    highlightLinks: boolean;
    textMagnifier: boolean;
    readingLens: boolean;
    darkContrast: boolean;
    lightContrast: boolean;
    highContrast: boolean;
    colorBlind: boolean;
    monochrome: boolean;
    invertColors: boolean;
    highSaturation: boolean;
    lowSaturation: boolean;
    textColor: string | null;
    titleColor: string | null;
    backgroundColor: string | null;
    readingGuide: boolean;
    readingMask: boolean;
    stopAnimations: boolean;
    highlightHover: boolean;
    bigBlackCursor: boolean;
    bigWhiteCursor: boolean;
}

declare class Accessify {
    private static instance;
    /**
     * Initializes and mounts a global Accessify widget singleton.
     * If an instance is already mounted, it is destroyed before mounting the new one.
     */
    static init(config?: AccessifyConfig): Accessify;
    /**
     * Returns the currently active global Accessify instance, if any.
     */
    static getInstance(): Accessify | null;
    private readonly config;
    private size;
    private lang;
    private scheme;
    private state;
    private root;
    private trigger;
    private overlay;
    private panel;
    private isOpen;
    private isStatementOpen;
    private wcagResult;
    private wcagScanning;
    constructor(config?: AccessifyConfig);
    mount(_target?: HTMLElement): void;
    destroy(): void;
    open(): void;
    close(): void;
    openStatement(): void;
    closeStatement(): void;
    getIsStatementOpen(): boolean;
    toggle(): void;
    reset(): void;
    getState(): AccessifyState;
    getIsOpen(): boolean;
    setSize(size: WidgetSize): void;
    setLang(lang: Lang): void;
    getLang(): Lang;
    getColorScheme(): ColorScheme;
    setColorScheme(scheme: ColorScheme): void;
    private applyScheme;
    private applyTheme;
    private applyTriggerScheme;
    setTriggerScheme(scheme: TriggerScheme): void;
    setTriggerIcon(icon: string): void;
    setBrandTitle(title: string): void;
    updateConfig(config: Partial<AccessifyConfig>): void;
    private handlePanelClick;
    private handleLangClick;
    private handleActionClick;
    private handleSizeClick;
    private handleSchemeClick;
    private handleProfileClick;
    private handleStepClick;
    private handleToggleClick;
    private handleAlignClick;
    private handleColorClick;
    private handleSwatchClick;
    private handleCancelColorClick;
    setTextColor(color: string | null): void;
    setTitleColor(color: string | null): void;
    setBackgroundColor(color: string | null): void;
    private runAnalysis;
    private toggleProfile;
    private adjustStepper;
    private toggleFlag;
    private toggleColor;
    private commit;
    private getElementFocusSelector;
    private update;
    private injectStyles;
    private loadState;
    private saveState;
}

declare function createAccessifyStore(config?: AccessifyConfig): {
    subscribe: (this: void, run: svelte_store.Subscriber<AccessifyState>, invalidate?: svelte_store.Invalidator<AccessifyState> | undefined) => svelte_store.Unsubscriber;
    isOpen: {
        subscribe: (this: void, run: svelte_store.Subscriber<boolean>, invalidate?: svelte_store.Invalidator<boolean> | undefined) => svelte_store.Unsubscriber;
    };
    mount: () => void;
    destroy: () => void;
    open: () => void;
    close: () => void;
    toggle: () => void;
    reset: () => void;
    setSize: (size: WidgetSize) => void;
    setLang: (lang: Lang) => void;
    setColorScheme: (scheme: ColorScheme) => void;
    setTriggerScheme: (scheme: TriggerScheme) => void;
    setTriggerIcon: (icon: string) => void;
    setBrandTitle: (title: string) => void;
};
/**
 * Default singleton store. Lazily created so it doesn't construct an
 * Accessify instance during SSR module evaluation.
 */
declare const accessifyStore: {
    subscribe: (this: void, run: svelte_store.Subscriber<AccessifyState>, invalidate?: svelte_store.Invalidator<AccessifyState> | undefined) => svelte_store.Unsubscriber;
    isOpen: {
        subscribe: (this: void, run: svelte_store.Subscriber<boolean>, invalidate?: svelte_store.Invalidator<boolean> | undefined) => svelte_store.Unsubscriber;
    };
    mount: () => void;
    destroy: () => void;
    open: () => void;
    close: () => void;
    toggle: () => void;
    reset: () => void;
    setSize: (size: WidgetSize) => void;
    setLang: (lang: Lang) => void;
    setColorScheme: (scheme: ColorScheme) => void;
    setTriggerScheme: (scheme: TriggerScheme) => void;
    setTriggerIcon: (icon: string) => void;
    setBrandTitle: (title: string) => void;
};

export { Accessify, type AccessifyConfig, type AccessifyState, accessifyStore, createAccessifyStore };
