import { HTMLAttributes, Ref } from 'react';
import { SelectSize, SelectVariant } from './types';
export interface SelectProps extends HTMLAttributes {
/**
* Whether the select is disabled.
* Prevents interaction and applies a disabled style.
*/
disabled?: boolean;
/**
* If true, the select cannot be changed but remains focusable.
*/
readOnly?: boolean;
/**
* Visual style variant for the select control.
*/
variant?: SelectVariant;
/**
* Visual size of the select control.
*/
size?: SelectSize;
/**
* The currently selected value (controlled).
*/
value?: V | undefined;
/**
* The default selected value (uncontrolled).
*/
defaultValue?: V | undefined;
/**
* Callback fired when an option is selected.
*
* @param value - The selected option value
*/
onSelectValue?(value: V | undefined): void;
/**
* Ref to the trigger button element.
*/
ref?: Ref;
/**
* Controls the open state of the Select dropdown.
*
* When provided, the Select becomes a controlled component
* and relies on this value to determine whether the listbox
* is open or closed.
*/
open?: boolean;
/**
* Callback fired when the open state changes.
*
* Called with the next open state (`true` or `false`)
* whenever the Select is opened or closed by user interaction.
*
* Useful for synchronizing the Select state with external logic.
*/
onOpenChange?(open: boolean): void;
/**
* Sets the initial open state of the Select when used
* in uncontrolled mode.
*
* Applied only on the first render and ignored afterward.
*/
defaultOpen?: boolean;
/**
* Enables type-based matching for typeahead navigation.
*
* When enabled, option matching respects the value type.
*
* @default true
*/
typeMatchEnabled?: boolean;
}
/** A Select is a UI component that provides a dropdown menu of options from which users can choose one. It is commonly used for forms and filtering, offering a list of predefined values in a compact, accessible manner */
export declare const Select: ({ className, disabled, readOnly, children, variant, size, value, defaultValue, onSelectValue, open: _open, defaultOpen, typeMatchEnabled, onOpenChange, ref, ...props }: SelectProps) => import("react/jsx-runtime").JSX.Element;