import { ReactNode } from 'react';
import { ButtonProps } from '../button';
import { ListItemProps, ListProps } from '../list';
import { PopoverContentProps, PopoverProps } from '../popover';
import { SystemProps } from '../system';
import { ThemingProps } from '../theme';
import { UseSelectReturnType } from './useSelect';
import { UseSelectProps } from './useSelect.types';
export type SelectButtonProps = ButtonProps;
export type SelectContentProps = PopoverContentProps;
export type SelectContext = Pick<SelectProps, 'disabled' | 'isInvalid' | 'isMultiple' | 'name' | 'options' | 'placeholder' | 'readOnly' | 'size' | 'variant'> & UseSelectReturnType;
export type SelectGroupProps = ListProps;
export type SelectProps = ThemingProps<'Select'> & SystemProps & PopoverProps & UseSelectProps & {
    /** Select cannot be opened and is styled accordingly. */
    disabled?: boolean;
    /** Hiding the options list on scroll event. Recommended for scrollable containers. */
    closeOnScroll?: boolean;
    /** Socket displaying error text below an input. */
    errorText?: string | React.ReactNode;
    /** Socket displaying help text below an input. */
    helpText?: React.ReactNode | string;
    /** Unique identifier */
    id?: string;
    /** Represents invalid form input and is styled accordingly. */
    isInvalid?: boolean;
    /** Maximum container height in px. */
    maxHeight?: number;
    /** Name of the input. Used in custom change event to support form library integration. */
    name?: string;
    /** The label. */
    label?: string | React.ReactNode;
    /** Should the label indicates that the field is optional */
    labelMarkOptional?: boolean;
    /** Adds a tooltip with the text inside the label */
    labelTooltipText?: string;
    /** Sets the Popover matchWidth prop. @default true */
    matchWidth?: boolean;
    /** Data prop to display an array of options in the popover. */
    options?: SelectOptionData[];
    /** Displayed inside the trigger when no value is selected. */
    placeholder?: string;
    /** Displayed inside the trigger when value(s) selected. */
    selectedText?: string;
    /** Select cannot be opened and is styled accordingly. */
    readOnly?: boolean;
    /** Custom select button slot. */
    selectButton?: ReactNode;
    /** Displays a filter input to limit the number of options. Important: it takes effect only if the options array is provided. */
    showOptionsFilter?: boolean;
};
export type SelectOptionData = {
    /** Option is displayed as disabled. */
    disabled?: boolean;
    /** Text label of the option. */
    text: string;
    /** Value of a given option. */
    value: SelectValue;
};
export type SelectOptionProps = ListItemProps & {
    /** Hiding the options list on scroll event. */
    closeOnScroll?: boolean;
    /** Currently selected value. Can be a string/number or array of those when using 'isMultiple'.  */
    value?: SelectValue;
    /** Hover title text. */
    title?: string;
};
export type SelectLabelProps = Pick<SelectProps, 'disabled' | 'id' | 'label' | 'labelMarkOptional' | 'labelTooltipText'>;
export type SelectValue = number | string;
//# sourceMappingURL=select.types.d.ts.map