import { UseComboboxProps } from 'downshift';
import { MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types';
import { SelectItem } from '../../../internal/types/selectFieldInternalTypes';
import { CheckState } from '../../../types';
export type UseComboMultipleOptions = {
    /** An array of currently loaded options */
    options: MultiSelectFieldOption[];
    /** Options to pin to the top of the list */
    pinned?: MultiSelectFieldPinnedOptions;
    /** Function to convert a group value to a display label */
    groupToString?: (groupValue: MultiSelectFieldGroupByValue) => string;
    /** Function to sort group sections */
    groupSorter?: (a: MultiSelectFieldGroupByValue, b: MultiSelectFieldGroupByValue) => number;
    /** Configuration for the "Select All" option (shown when search is empty). */
    selectAll?: {
        label: string;
        checkState: CheckState;
    };
    /** Function that receives the search value and returns config for "Select Filtered". */
    selectFiltered?: (searchValue: string) => {
        label?: string;
        checkState: CheckState;
    };
    /** True while a `compute`-driven bulk action is in flight. Disables option rows. */
    bulkPending: boolean;
    /** Called when the user activates the select-all or select-filtered row. */
    onBulkActivate: (kind: "selectAll" | "selectFiltered", searchValue: string) => void;
    /** The currently selected options (controlled from outside) */
    selectedOptions: MultiSelectFieldOption[];
    onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void;
    displayAs: "popover" | "dialog";
    disabled: boolean;
    /** Whether options are currently loading (hides select-filtered to prevent stale selections) */
    loading?: boolean;
    /** Whether the list is virtualized (disables built-in scroll behavior) */
    virtualize?: boolean;
    onScrollToHighlight?: (index: number) => void;
} & Pick<UseComboboxProps<SelectItem>, "onInputValueChange" | "onIsOpenChange">;
/**
 * Hook that wraps downshift's useCombobox for multi-select behavior.
 * Unlike useCombo, this hook:
 * - Keeps the menu open after item selection
 * - Does not track internal selection state (controlled externally)
 * - Preserves input value on item selection for continued filtering
 * @param options - Configuration options for the hook
 * @returns Downshift combobox props and state
 */
export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, bulkPending, onBulkActivate, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, onScrollToHighlight, }: UseComboMultipleOptions) => {
    inputValue: string;
    wrapperDivRef: import('react').RefObject<HTMLDivElement>;
    getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
    getLabelProps: <Options>(options?: import('downshift').UseComboboxGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetLabelPropsReturnValue, Options>;
    getMenuProps: <Options>(options?: import('downshift').UseComboboxGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetMenuPropsReturnValue, Options>;
    getInputProps: <Options>(options?: import('downshift').UseComboboxGetInputPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetInputPropsReturnValue, Options>;
    getItemProps: <Options>(options: import('downshift').UseComboboxGetItemPropsOptions<SelectItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseComboboxGetItemPropsReturnValue, Options>, "item" | "index">;
    highlightedIndex: number;
    isOpen: boolean;
    items: SelectItem[];
    sectionsMeta: import('../../SelectField/internal/useCombo').SectionMeta[];
    closeMenu: () => void;
    openMenu: () => void;
    toggleMenu: () => void;
    selectedOptions: import('../..').SelectFieldOption[];
};
