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

interface SelectOption {
    value: string;
    label: string;
    disabled?: boolean;
}
interface SelectProps {
    value?: string;
    options?: SelectOption[];
    placeholder?: string;
    disabled?: boolean;
    open?: boolean;
    name?: string;
}
interface SelectAPI {
    /** Trigger element ARIA + keyboard props */
    triggerProps: {
        ariaProps: Partial<AccessibilityProps>;
        keyboardHandlers: KeyboardHandlerMap;
        dataAttributes: Record<string, string>;
    };
    /** Content (dropdown) props */
    contentProps: {
        ariaProps: Partial<AccessibilityProps>;
        dataAttributes: Record<string, string>;
    };
    /** Get props for a single option */
    getOptionProps: (option: SelectOption) => {
        ariaProps: Partial<AccessibilityProps>;
        dataAttributes: Record<string, string>;
        isSelected: boolean;
    };
    /** Whether interaction should be blocked */
    isInteractive: boolean;
    /** Current state */
    state: {
        open: boolean;
        selectedValue: string | undefined;
        selectedLabel: string | undefined;
        disabled: boolean;
        placeholder: string;
    };
    /** Generated IDs for trigger/content association */
    ids: {
        trigger: string;
        content: string;
    };
}
declare function createSelect(props?: SelectProps): SelectAPI;

declare const selectTokens: TokenContract;
declare const selectTriggerVariants: (props?: ({
    size?: "sm" | "default" | "lg" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const selectContentVariants: (props?: ({
    position?: "popper" | "item-aligned" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const selectItemVariants: (props?: ({
    selected?: "true" | "false" | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type SelectAPI, type SelectOption, type SelectProps, createSelect, selectContentVariants, selectItemVariants, selectTokens, selectTriggerVariants };
