import { ChangeEventHandler, ClipboardEventHandler, FocusEventHandler, ForwardedRef, KeyboardEventHandler, MutableRefObject } from 'react';
import { INTERNAL_ERROR_EXECUTION } from '../../input/types/input';
import { InputState } from '../../input/types/inputTheme';
import { InputTypeType } from '../../input/types/inputType';
import { IOptionGroup, SearchFilterConfig } from '../types/inputSearch';
import { InputSearchStylesProps } from '../types/inputSearchTheme';
interface MultipleRef {
    refInput?: MutableRefObject<HTMLInputElement | undefined>;
    refList: ForwardedRef<unknown> | (({ ref, index }: {
        ref: any;
        index: any;
    }) => void);
    refIcon: MutableRefObject<HTMLSpanElement | undefined>;
    refActionBottomSheet: React.ForwardedRef<HTMLDivElement> | undefined | null;
}
type ParamsType = {
    ref?: ForwardedRef<HTMLInputElement | undefined>;
    open: boolean;
    styles?: InputSearchStylesProps;
    elementsToShow: number;
    options: IOptionGroup[];
    type: InputTypeType;
    value?: string;
    regex?: string | RegExp;
    disabled?: boolean;
    error?: boolean;
    hasResultTextWrittenByUser?: boolean;
    disableErrorInvalidOption?: boolean;
    /**
     * @deprecated
     * @description This prop is deprecated and will be removed in the next major version.
     */
    clearTextInputPopoverIconClick?: boolean;
    highlightedOption?: string;
    informationAssociated?: string;
    maxLength?: number;
    searchFilterConfig?: SearchFilterConfig;
    caseSensitive?: boolean;
    internalErrorExecution?: INTERNAL_ERROR_EXECUTION;
    disabledCopyAndPaste?: boolean;
    onClick?: (event: React.MouseEvent<HTMLInputElement, MouseEvent>) => void;
    onIconClick?: React.MouseEventHandler<HTMLButtonElement>;
    executeInternalOpenOptions?: boolean;
    onInputPopoverIconClick?: () => void;
    onInputPopoverEnterKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
    onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
    onBlur?: FocusEventHandler<HTMLInputElement>;
    onFocus?: FocusEventHandler<HTMLInputElement>;
    onKeyDown?: KeyboardEventHandler<HTMLInputElement>;
    onPopoverOpen?: (open: boolean) => void;
    onInternalErrors?: (errors: string[]) => void;
    onOptionClick?: (value: string) => void;
    onPaste?: ClipboardEventHandler<HTMLInputElement>;
    onRightIconClick?: React.MouseEventHandler<HTMLButtonElement>;
};
type ReturnType = {
    ref?: MultipleRef;
    listOptionsHeight: string;
    openOptions: boolean;
    showHighlightedOption: boolean;
    searchText: string;
    inputPopoverText: string;
    optionsFiltered: IOptionGroup[];
    handleOpenOptions: (open: boolean) => void;
    handleClickInputSearch: React.MouseEventHandler<HTMLInputElement>;
    handleIconClick: React.MouseEventHandler<HTMLButtonElement>;
    handleInputPopoverIconClick: () => void;
    handleValueSelected: (value: any) => void;
    handleChangeInputSearch: ChangeEventHandler<HTMLInputElement>;
    handleInputKeyDown: KeyboardEventHandler<HTMLInputElement>;
    handleInputPopoverKeyDown: KeyboardEventHandler<HTMLInputElement>;
    state: InputState;
    handleBlurInternal: FocusEventHandler<HTMLInputElement>;
    handleFocusInternal: FocusEventHandler<HTMLInputElement>;
    handleInputPopoverChange: ChangeEventHandler<HTMLInputElement>;
    handleOptionsListKeyDown: KeyboardEventHandler<HTMLDivElement>;
    handlePasteInternal: ClipboardEventHandler<HTMLInputElement>;
    handleRightIconClick: React.MouseEventHandler<HTMLButtonElement>;
};
export declare const useInputSearch: ({ executeInternalOpenOptions, ...props }: ParamsType) => ReturnType;
export {};
