import { KeyboardHandlerMap } from '../shared/index.js';

interface LanguageOption {
    value: string;
    label: string;
    group?: string;
}
interface LanguageSelectorProps {
    value?: string | string[];
    onValueChange?: (value: string | string[]) => void;
    options: LanguageOption[];
    multiple?: boolean;
}
interface LanguageSelectorAPI {
    /** Current state */
    state: {
        selectedValues: string[];
        isOpen: boolean;
    };
    /** Props to spread on the trigger element */
    triggerProps: {
        'aria-expanded': boolean;
        'aria-controls': string;
        'aria-haspopup': 'listbox';
        role: 'combobox';
    };
    /** Props to spread on the content/dropdown element */
    contentProps: {
        role: 'listbox';
        id: string;
        'aria-multiselectable'?: boolean;
    };
    /** Get props for an individual option */
    getOptionProps: (value: string) => {
        role: 'option';
        'aria-selected': boolean;
        'data-value': string;
    };
    /** Toggle an option's selection */
    toggle: (value: string) => void;
    /** Open the dropdown */
    open: () => void;
    /** Close the dropdown */
    close: () => void;
    /** Keyboard handler map */
    keyboardHandlers: KeyboardHandlerMap;
    /** Pre-built keyboard event handler */
    handleKeyDown: (event: KeyboardEvent) => void;
}
declare function createLanguageSelector(props: LanguageSelectorProps): LanguageSelectorAPI;

declare const selectorVariants: (props?: ({
    size?: "sm" | "md" | "lg" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const optionVariants: (props?: ({
    selected?: "true" | "false" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type LanguageOption, type LanguageSelectorAPI, type LanguageSelectorProps, createLanguageSelector, optionVariants, selectorVariants };
