import * as React from 'react';
import { type SimulateReactInputTargetState } from '../../lib/react';
import { type FilterFn, type SortFn } from '../../lib/select';
import { type UseChipsInputProps } from '../ChipsInput/useChipsInput';
import type { ChipOption, ChipOptionLabel, ChipOptionValue } from '../ChipsInputBase/types';
import type { OptionPreset } from './types';
export interface UseChipsSelectProps<O extends ChipOption = ChipOption> extends UseChipsInputProps<O> {
    /**
     * Список опций в выпадающем списке.
     */
    options?: O[];
    /**
     * Возможность создавать чипы которых нет в списке:
     * - `true` – добавление по кнопке Enter;
     * - `<текст>` – помимо возможности добавления через Enter, в пункте меню появится кнопка с текстом.
     * Текст для пункта, создающего чипы при нажатии, также отвечает за то, будет ли показан этот пункт
     * (показывается после того как в списке не останется опций).
     */
    creatable?: boolean | string;
    /**
     * Текст, который показывается если список опций пуст.
     */
    emptyText?: string;
    /**
     * Показывать или скрывать уже выбранные опции.
     */
    selectedBehavior?: 'hide' | 'highlight';
    /**
     * Функция для фильтрации опций в списке.
     */
    filterFn?: false | FilterFn<O>;
    /**
     * Функция для сортировки опций в списке.
     */
    sortFn?: false | SortFn<O>;
    /**
     * Будет вызвано в момент скрытия выпадающего списка.
     */
    onClose?: VoidFunction;
    /**
     * Будет вызвано в момент открытия выпадающего списка.
     */
    onOpen?: VoidFunction;
}
export declare const useChipsSelect: <O extends ChipOption>({ disabled, delimiter, value: valueProp, defaultValue, onChange, getOptionLabel, getOptionValue, getNewOptionData, inputValue: inputValueProp, defaultInputValue, onInputChange: onInputChangeProp, creatable, emptyText, filterFn, sortFn, selectedBehavior, options: optionsProp, onClose, onOpen, }: UseChipsSelectProps<O>) => {
    value: Array<O & {
        label: ChipOptionLabel;
        value: ChipOptionValue;
    }>;
    inputValue: string;
    onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
    options: Array<OptionPreset<O>>;
    opened: boolean;
    setOpened: (isOpened: boolean) => void;
    focusedOption: O | null;
    focusedOptionIndex: number | null;
    setFocusedOption: React.Dispatch<React.SetStateAction<O | null>>;
    setFocusedOptionIndex: React.Dispatch<React.SetStateAction<number | null>>;
    addOption: (newValue: string | O) => void;
    addOptionFromInput: (inputValue: string) => void;
    removeOption: (newValue: ChipOptionValue | O) => void;
    clearOptions: () => void;
    inputRef: React.RefObject<(HTMLInputElement & SimulateReactInputTargetState) | null>;
    clearInput: () => void;
};
//# sourceMappingURL=useChipsSelect.d.ts.map