import { default as React } from 'react';
export type SelectSize = 'sm' | 'md' | 'lg';
export interface SelectOption {
    value: string;
    label: string;
    /** Disable just this option. */
    disabled?: boolean;
}
export interface SelectProps {
    /** The options, in display order. */
    options: SelectOption[];
    /** Visible label above the trigger. */
    label?: string;
    /** Text shown while nothing is selected. */
    placeholder?: string;
    /** Size — same `sm | md | lg` scale as Button. @default 'md' */
    size?: SelectSize;
    /** Controlled selected value (`null` clears it). */
    selectedKey?: string | null;
    /** Uncontrolled initial value. */
    defaultSelectedKey?: string;
    /** Fires with the newly selected value, or `null` when the selection is cleared. */
    onSelectionChange?: (value: string | null) => void;
    /** Disable the whole control. */
    isDisabled?: boolean;
    /** Mark the field required. */
    isRequired?: boolean;
    /** Mark the field invalid (red border + `aria-invalid`). */
    isInvalid?: boolean;
    /** Name for native form submission (renders a hidden `<select>`). */
    name?: string;
    onBlur?: (e: React.FocusEvent) => void;
    onFocus?: (e: React.FocusEvent) => void;
    onFocusChange?: (isFocused: boolean) => void;
    /**
     * @deprecated Use `selectedKey`. (The previous `value` was wired to a DOM
     * attribute, not React Aria's selection — so controlled use never worked;
     * this now maps correctly.)
     */
    value?: string;
    /** @deprecated Use `defaultSelectedKey`. */
    defaultValue?: string;
    /** @deprecated Use `isDisabled`. */
    disabled?: boolean;
    /** @deprecated Use `isRequired`. */
    required?: boolean;
    className?: string;
    'aria-label'?: string;
    'aria-labelledby'?: string;
    testId?: string;
}
/**
 * Select — an accessible dropdown built on React Aria's `Select`, with a
 * token-driven, `sm | md | lg` skin. Single selection, controlled or
 * uncontrolled, mirroring RAC's selection API.
 *
 * @example
 * <Select
 *   label="Discipline"
 *   options={[
 *     { value: 'logic', label: 'Logic' },
 *     { value: 'ethics', label: 'Ethics' },
 *   ]}
 *   defaultSelectedKey="logic"
 *   onSelectionChange={(value) => setField(value)}
 * />
 */
export declare const Select: React.FC<SelectProps>;
//# sourceMappingURL=Select.d.ts.map