import { AriaAttributes, ButtonHTMLAttributes, InputHTMLAttributes, RefObject } from 'react'; import { AriaButtonProps, AriaListBoxOptions } from 'react-aria'; import { AriaLabelingProps, DOMProps, FocusableProps, InputBase } from '@react-types/shared'; import { MultiSelectState } from './useMultiSelectState'; export interface TriggerOptions extends Omit, FocusableProps { } /** Options for useMultiSelect hook. */ export interface UseMultiSelectOptions extends TriggerOptions, AriaLabelingProps, DOMProps { /** The ref for the optional list box popup trigger button. */ triggerRef?: RefObject; /** The ref for the list box popover. */ popoverRef: RefObject; /** The ref for the input element. */ filterRef: RefObject; /** The ref for the list box. */ listRef: RefObject; } /** Props that are turned by useMultiSelect hook. */ export interface MultiSelectAria { /** Props for the trigger button, to be passed to [useButton](useButton.html). */ inputProps: AriaButtonProps & Pick, 'role'> & Pick; /** Props for the popover element. */ popoverProps: DOMProps; /** Props for the dialog element. */ dialogProps: DOMProps & AriaLabelingProps; /** Props for the select all button. */ toggleAllProps: AriaButtonProps & Pick, 'tabIndex'>; /** Props for the filter input element. */ filterProps: InputHTMLAttributes; /** Props for the list box. */ listProps: AriaListBoxOptions; } export declare function useMultiSelect(props: UseMultiSelectOptions, state: MultiSelectState): MultiSelectAria;