import * as react_jsx_runtime from 'react/jsx-runtime';
import React__default, { PropsWithChildren, HTMLAttributes, ReactNode, ButtonHTMLAttributes } from 'react';
import { UseFloatingElementOptions } from '../../../hooks/useFloatingElement.js';

type SelectIconAppearance = 'left' | 'right' | 'none';
type SelectRootProps = PropsWithChildren<{
    id?: string;
    value?: string;
    onValueChanged?: (value: string) => void;
    values?: string[];
    onValuesChanged?: (value: string[]) => void;
    isOpen?: boolean;
    disabled?: boolean;
    invalid?: boolean;
    isMultiSelect?: boolean;
    iconAppearance?: SelectIconAppearance;
}>;
declare const SelectRoot: ({ children, id, value, onValueChanged, values, onValuesChanged, isOpen, disabled, invalid, isMultiSelect, iconAppearance, }: SelectRootProps) => react_jsx_runtime.JSX.Element;
type SelectOptionProps = Omit<HTMLAttributes<HTMLLIElement>, 'children'> & {
    value: string;
    disabled?: boolean;
    iconAppearance?: SelectIconAppearance;
    children?: ReactNode;
};
declare const SelectOption: React__default.ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLLIElement>, "children"> & {
    value: string;
    disabled?: boolean;
    iconAppearance?: SelectIconAppearance;
    children?: ReactNode;
} & React__default.RefAttributes<HTMLLIElement>>;
type SelectButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
    placeholder?: ReactNode;
    selectedDisplay?: (value: string[]) => ReactNode;
};
declare const SelectButton: React__default.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
    placeholder?: ReactNode;
    selectedDisplay?: (value: string[]) => ReactNode;
} & React__default.RefAttributes<HTMLButtonElement>>;
type SelectChipDisplayProps = HTMLAttributes<HTMLDivElement> & {
    disabled?: boolean;
    placeholder?: ReactNode;
};
declare const SelectChipDisplay: React__default.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
    disabled?: boolean;
    placeholder?: ReactNode;
} & React__default.RefAttributes<HTMLDivElement>>;
type Orientation = 'vertical' | 'horizontal';
type SelectContentProps = HTMLAttributes<HTMLUListElement> & {
    alignment?: Pick<UseFloatingElementOptions, 'gap' | 'horizontalAlignment' | 'verticalAlignment'>;
    orientation?: Orientation;
    containerClassName?: string;
};
declare const SelectContent: React__default.ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
    alignment?: Pick<UseFloatingElementOptions, "gap" | "horizontalAlignment" | "verticalAlignment">;
    orientation?: Orientation;
    containerClassName?: string;
} & React__default.RefAttributes<HTMLUListElement>>;
type SelectProps = Omit<SelectRootProps, 'isMultiSelect' | 'values' | 'onValuesChanged'> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: Omit<SelectButtonProps, 'selectedDisplay'> & {
        selectedDisplay?: (value: string) => ReactNode;
    };
};
declare const Select: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "values" | "onValuesChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: Omit<SelectButtonProps, "selectedDisplay"> & {
        selectedDisplay?: (value: string) => ReactNode;
    };
} & React__default.RefAttributes<HTMLButtonElement>>;
type SelectUncontrolledProps = SelectProps;
declare const SelectUncontrolled: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "values" | "onValuesChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: Omit<SelectButtonProps, "selectedDisplay"> & {
        selectedDisplay?: (value: string) => ReactNode;
    };
} & React__default.RefAttributes<HTMLButtonElement>>;
type MultiSelectProps = Omit<SelectRootProps, 'isMultiSelect' | 'value' | 'onValueChanged'> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: SelectButtonProps;
};
declare const MultiSelect: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "value" | "onValueChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: SelectButtonProps;
} & React__default.RefAttributes<HTMLButtonElement>>;
type MultiSelectUncontrolledProps = MultiSelectProps;
declare const MultiSelectUncontrolled: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "value" | "onValueChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    buttonProps?: SelectButtonProps;
} & React__default.RefAttributes<HTMLButtonElement>>;
type MultiSelectChipDisplayProps = Omit<SelectRootProps, 'isMultiSelect' | 'value' | 'onValueChanged'> & {
    contentPanelProps?: SelectContentProps;
    chipDisplayProps?: SelectChipDisplayProps;
};
declare const MultiSelectChipDisplay: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "value" | "onValueChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    chipDisplayProps?: SelectChipDisplayProps;
} & React__default.RefAttributes<HTMLDivElement>>;
type MultiSelectChipDisplayUncontrolledProps = MultiSelectChipDisplayProps;
declare const MultiSelectChipDisplayUncontrolled: React__default.ForwardRefExoticComponent<Omit<SelectRootProps, "value" | "onValueChanged" | "isMultiSelect"> & {
    contentPanelProps?: SelectContentProps;
    chipDisplayProps?: SelectChipDisplayProps;
} & React__default.RefAttributes<HTMLDivElement>>;

export { MultiSelect, MultiSelectChipDisplay, type MultiSelectChipDisplayProps, MultiSelectChipDisplayUncontrolled, type MultiSelectChipDisplayUncontrolledProps, type MultiSelectProps, MultiSelectUncontrolled, type MultiSelectUncontrolledProps, Select, SelectButton, SelectChipDisplay, SelectContent, type SelectContentProps, SelectOption, type SelectOptionProps, type SelectProps, SelectRoot, type SelectRootProps, SelectUncontrolled, type SelectUncontrolledProps };
