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;