import React from 'react';
import { DropdownStatusProps } from '../internal/components/dropdown-status';
import { DropdownOption } from '../internal/components/option/interfaces';
import { SomeRequired } from '../internal/types';
import { SelectListProps } from '../select/parts/plain-list';
import { TokenGroupProps } from '../token-group/interfaces';
import { MultiselectProps } from './interfaces';
type UseMultiselectOptions = SomeRequired<Pick<MultiselectProps, 'options' | 'selectedOptions' | 'filteringType' | 'filteringResultsText' | 'disabled' | 'noMatch' | 'renderHighlightedAriaLive' | 'deselectAriaLabel' | 'keepOpen' | 'onBlur' | 'onFocus' | 'onLoadItems' | 'onChange' | 'selectedAriaLabel' | 'enableSelectAll' | 'i18nStrings'> & DropdownStatusProps & {
  controlId?: string;
  ariaLabelId: string;
  footerId: string;
  filteringValue: string;
  setFilteringValue?: (value: string) => void;
  externalRef: React.Ref<MultiselectProps.Ref>;
}, 'options' | 'selectedOptions' | 'filteringType' | 'statusType' | 'keepOpen'> & {
  embedded?: boolean;
};
export declare function useMultiselect({
  options,
  filteringType,
  filteringResultsText,
  disabled,
  statusType,
  empty,
  loadingText,
  finishedText,
  errorText,
  noMatch,
  renderHighlightedAriaLive,
  selectedOptions,
  deselectAriaLabel,
  keepOpen,
  onBlur,
  onFocus,
  onLoadItems,
  onChange,
  controlId,
  ariaLabelId,
  footerId,
  filteringValue,
  setFilteringValue,
  externalRef,
  embedded,
  enableSelectAll,
  i18nStrings,
  ...restProps
}: UseMultiselectOptions): {
  isOpen: boolean;
  tokens: readonly TokenGroupProps.Item[];
  announcement: string;
  dropdownStatus: import("../internal/components/dropdown-status").DropdownStatusResult;
  filteringValue: string;
  filteredOptions: readonly DropdownOption[];
  highlightType: import("../internal/components/options-list/utils/use-highlight-option").HighlightType;
  scrollToIndex: React.RefObject<SelectListProps.SelectListRef>;
  getFilterProps: () => Partial<import("../select/parts/filter").FilterProps>;
  getTriggerProps: (disabled?: boolean, autoFocus?: boolean) => import("../select/utils/use-select").SelectTriggerProps;
  getMenuProps: () => {
    onLoadMore: () => void;
    ariaLabelledby: string | undefined;
    ariaDescribedby: string | undefined;
    embedded: boolean | undefined;
    position?: import("csstype").Property.Position | undefined;
    open?: boolean | undefined;
    className?: string | undefined;
    id?: string | undefined;
    role?: "listbox" | "list" | "menu" | undefined;
    onFocus?: import("../internal/events").NonCancelableEventHandler | undefined;
    onBlur?: import("../internal/events").NonCancelableEventHandler<{
      relatedTarget: Node | null;
    }> | undefined;
    onKeyDown?: import("../internal/events").CancelableEventHandler<import("../internal/events").BaseKeyDetail> | undefined;
    onMouseMove?: ((itemIndex: number) => void) | undefined;
    onMouseUp?: ((itemIndex: number) => void) | undefined;
    nativeAttributes?: Record<string, any> | undefined;
    ariaLabel?: string | undefined;
    tagOverride?: "div" | "ul" | undefined;
    statusType: DropdownStatusProps.StatusType;
    decreaseBlockMargin?: boolean | undefined;
    stickyItemBlockSize?: number | null | undefined;
    isMultiSelect?: boolean | undefined;
    ref: React.RefObject<HTMLDivElement>;
  };
  getOptionProps: (option: DropdownOption, index: number) => any;
  getTokenProps: () => {
    onDismiss: import("../internal/events").NonCancelableEventHandler<TokenGroupProps.DismissDetail>;
  };
  getDropdownProps: () => {
    onMouseDown: (event: React.MouseEvent) => void;
    onFocus?: import("../internal/events").NonCancelableEventHandler<Pick<React.FocusEvent, "target" | "relatedTarget">> | undefined;
    onBlur?: import("../internal/events").NonCancelableEventHandler<Pick<React.FocusEvent, "target" | "relatedTarget">> | undefined;
    ariaRole?: string | undefined;
    dropdownContentId?: string | undefined;
  };
  getWrapperProps: () => {
    onKeyDown: (event: React.KeyboardEvent) => void;
  };
  highlightedIndex: number;
};
export {};