import { MultiChangeHandler, Option } from '../../BaseSelect';
import { FocusEvent, ReactNode, MouseEventHandler } from 'react';
import { GetPropsCommonOptions, UseComboboxGetInputPropsOptions, UseComboboxGetToggleButtonPropsOptions, UseComboboxGetToggleButtonPropsReturnValue } from 'downshift';

export type RenderEndAdornmentType = (props: UseComboboxGetToggleButtonPropsReturnValue) => ReactNode;
export declare const useMultiselect: <T extends Option, V extends string | Option>({ selectedValues, showEmptyState, options, onChange, onInputValueChange, onFocus, onBlur, }: {
    selectedValues: V[];
    showEmptyState?: boolean | undefined;
    options: T[];
    onChange?: MultiChangeHandler<V> | undefined;
    onInputValueChange?: ((value: string) => void) | undefined;
    onFocus?: ((e: FocusEvent<HTMLInputElement, Element>) => void) | undefined;
    onBlur?: ((e: FocusEvent<HTMLInputElement, Element>) => void) | undefined;
}) => {
    active: boolean;
    itemsToSelect: T[];
    typed: boolean;
    isOpen: boolean;
    getLabelProps: <Options>(options?: (import('downshift').UseComboboxGetLabelPropsOptions & Options) | undefined) => import('downshift').Overwrite<import("downshift").UseComboboxGetLabelPropsReturnValue, Options>;
    getMenuProps: <Options_1>(options?: (import('downshift').UseComboboxGetMenuPropsOptions & Options_1) | undefined, otherOptions?: GetPropsCommonOptions | undefined) => import('downshift').Overwrite<import("downshift").UseComboboxGetMenuPropsReturnValue, Options_1>;
    getInputProps: (options?: UseComboboxGetInputPropsOptions, otherOptions?: GetPropsCommonOptions) => import('downshift').Overwrite<import("downshift").UseComboboxGetInputPropsReturnValue, {
        onFocus: (e: FocusEvent<HTMLInputElement>) => void;
        onBlur: (e: FocusEvent<HTMLInputElement>) => void;
    }>;
    highlightedIndex: number;
    getItemProps: <Options_2>(options: import('downshift').UseComboboxGetItemPropsOptions<T> & Options_2) => Omit<import('downshift').Overwrite<import("downshift").UseComboboxGetItemPropsReturnValue, Options_2>, "index" | "item">;
    getSelectedItemProps: <Options_3>(options: import('downshift').UseMultipleSelectionGetSelectedItemPropsOptions<T> & Options_3) => Omit<import('downshift').Overwrite<import("downshift").UseMultipleSelectionGetSelectedItemReturnValue, Options_3>, "selectedItem" | "index">;
    removeSelectedItem: (item: T) => void;
    selectedItems: T[];
    inputValue: string;
    showInput: boolean;
    getToggleButtonProps: (options?: UseComboboxGetToggleButtonPropsOptions) => import('downshift').Overwrite<UseComboboxGetToggleButtonPropsReturnValue, {
        onClick?: MouseEventHandler<HTMLButtonElement> | undefined;
    }>;
    hasItemsToSelect: boolean;
};
