import * as React from 'react'; import type { ButtonProps } from '../../../button/button'; import type { Icon } from '../../../icons/icons'; import type { HeaderAndFooterProps, PopoverProps, TriggerProps, Width as PopoverWidth } from '../../../surface/popover/popover'; import type { AreEqualFn, GetLabelFn, IsSelectedFn, SelectOption, SelectOptionGroup } from './base_select_util'; type PickRequired = Required>; export type BaseSelectWidth = PopoverWidth; export type StatelessBaseSelectProps = { trigger?: (props: BaseSelectTriggerProps) => React.ReactNode Trigger?: React.ComponentType> size?: 'medium' | 'large' menu?: (props: BaseSelectMenuProps) => React.ReactNode Menu?: React.ComponentType> item?: (props: BaseSelectItemProps) => React.ReactNode Item?: React.ComponentType> Popover?: React.ComponentType options: (SelectOption | SelectOptionGroup)[] flatOptions?: SelectOption[] optionGroups?: SelectOptionGroup[] selectedOptions?: SelectOption[] value?: T[] | T | undefined open?: boolean activeIndex?: number placeholder?: string disabled?: boolean error?: boolean triggerContainerRef?: React.Ref menuContainerRef?: React.Ref className?: string stretch?: boolean animatePopover?: boolean focusOnMenu?: boolean popoverPlacement?: 'bottom-start' | 'bottom-end' popoverWidth?: BaseSelectWidth blockOutsidePointerEvents?: boolean id?: string ariaLabel?: string ariaLabelledBy?: string ariaDescribedBy?: string tooltipLabel?: ButtonProps['tooltipLabel'] tooltipPlacement?: ButtonProps['tooltipPlacement'] tooltipDisabled?: ButtonProps['tooltipDisabled'] areEqual?: AreEqualFn isSelected?: IsSelectedFn getLabel?: GetLabelFn onBlur?(): void onFocus?(): void onRequestClose(): void onRequestOpen(): void onItemClick?(option: SelectOption, event?: React.MouseEvent): void onItemHover?(option: SelectOption, event?: React.MouseEvent): void } & Pick; export type BaseSelectTriggerProps = Pick, 'options' | 'value' | 'disabled' | 'error' | 'placeholder' | 'activeIndex' | 'id' | 'ariaLabel' | 'ariaLabelledBy' | 'ariaDescribedBy' | 'tooltipLabel' | 'tooltipPlacement' | 'tooltipDisabled' | 'size' | 'onBlur' | 'onFocus'> & PickRequired, 'getLabel' | 'isSelected' | 'flatOptions' | 'optionGroups' | 'selectedOptions'> & { activeOption?: SelectOption | undefined className?: string children?: React.ReactNode Icon?: 'auto' | 'none' | Icon role: 'combobox' labelId: string open?: boolean ariaActiveDescendant?: string onRequestToggle(): void } & Pick; export type BaseSelectMenuProps = Pick, 'Item' | 'item' | 'value' | 'options' | 'activeIndex' | 'ariaLabel' | 'ariaLabelledBy' | 'onItemClick' | 'onItemHover' | 'menuContainerRef'> & PickRequired, 'areEqual' | 'isSelected' | 'getLabel' | 'flatOptions' | 'optionGroups' | 'selectedOptions'> & { sizingMode?: 'fixed' | 'fill' activeOption?: SelectOption | undefined id: string className?: string header?: React.ReactNode footer?: React.ReactNode children?: React.ReactNode }; export type BaseSelectItemProps = React.PropsWithChildren<{ id: string option: SelectOption selected: boolean active: boolean forwardedRef?: React.Ref start?: React.ReactNode end?: React.ReactNode className?: string multiSelectable?: boolean } & Pick, 'getLabel' | 'onItemClick' | 'onItemHover'>>; export declare function StatelessBaseSelect(props: StatelessBaseSelectProps): React.JSX.Element; export declare function BaseSelectTrigger(props: BaseSelectTriggerProps): React.JSX.Element; export declare function BaseSelectMenu(props: BaseSelectMenuProps): React.JSX.Element; export type WindowedSelectMenuProps = BaseSelectMenuProps & { itemHeightMultiplier?: number }; export declare function WindowedSelectMenu(props: WindowedSelectMenuProps): React.JSX.Element; export declare function renderEmptyMenuContent(): React.JSX.Element; export declare const BaseSelectItem: typeof BaseSelectItem_; declare function BaseSelectItem_(props: BaseSelectItemProps): React.JSX.Element; export {};