import React from 'react';
import { IconLookup } from '@fortawesome/fontawesome-svg-core';
import { MultiSelectLabelProps } from './multi-select-label';
import { TypeaheadOption, TypeaheadItem } from '../typeahead';
import { TypeaheadOptionListProps } from '../typeahead-option-list';
import { HELPER_TEXT_POSITION } from '../../form-field';
import { FormFieldValidity, AsyncValidation } from '../../form-field/validity-shape';
import './multi-select-typeahead.less';
export type MultiSelectTypeaheadOption = TypeaheadOption & {
    isDisabled?: boolean;
};
export type MultiSelectTypeaheadProps<TItem> = {
    items?: TItem[];
    onSelect?: (option?: MultiSelectTypeaheadOption) => void;
    onSearch?: (value: string) => void;
    onDelete?: (item: TypeaheadItem, index: number) => void;
    options?: MultiSelectTypeaheadOption[];
    optionId: string;
    optionLabel?: string;
    searchFields?: string[];
    asyncValidation?: AsyncValidation;
    LabelComponent?: React.FC<MultiSelectLabelProps<TItem>>;
    OptionList?: React.FC<TypeaheadOptionListProps>;
    optionComponent?: React.ReactElement;
    placeholder?: string;
    autoFocus?: boolean;
    isDisabled?: boolean;
    maxItems?: number;
    testId?: string;
    containerTestId?: string;
    label?: string;
    labelTestId?: string;
    labelIcon?: IconLookup;
    labelIconTestId?: string;
    labelIconTooltipText?: string;
    id?: string;
    hasErrored?: boolean;
    helperText?: string;
    showAllOnFocus?: boolean;
    keepInvalidText?: boolean;
    dropdownContentClass?: string;
    multiselectContainerClass?: string;
    className?: string;
    helperTextPosition?: HELPER_TEXT_POSITION;
    onBlur?: (value: string) => void;
    onKeyDown?: (event: React.KeyboardEvent, searchValue: string) => void;
    onClearAll?: () => void;
    clearAllTooltipText?: string;
    clearAllAriaLabel?: string;
    removeLabelText?: string;
    isClearAllEnabled?: boolean;
    inputRef?: React.RefObject<HTMLInputElement>;
    validity?: FormFieldValidity;
    invalidItems?: TItem[];
    isRequired?: boolean;
    isOptional?: boolean;
    optionalLabelText?: string;
    noItemsText?: string;
    shouldShowSelectedOptions?: boolean;
};
/**
 * @midnight-gray-supported
 * @alpine-light-supported
 */
declare function MultiSelectTypeahead<TItem extends TypeaheadItem>({ items, OptionList, optionComponent, LabelComponent, onDelete, onSearch, onSelect, options, optionId, isDisabled, autoFocus, optionLabel, searchFields, asyncValidation, placeholder, maxItems, id, label, helperText, labelTestId, labelIcon, labelIconTestId, labelIconTooltipText, testId, helperTextPosition, containerTestId, hasErrored, showAllOnFocus, keepInvalidText, dropdownContentClass, multiselectContainerClass, className, onBlur, onKeyDown, onClearAll, clearAllTooltipText, clearAllAriaLabel, removeLabelText, isClearAllEnabled, inputRef, validity, noItemsText, invalidItems, isRequired, isOptional, optionalLabelText, shouldShowSelectedOptions, }: MultiSelectTypeaheadProps<TItem>): import("react/jsx-runtime").JSX.Element;
export default MultiSelectTypeahead;
