import { type InputHTMLAttributes, type Ref } from "react";
import type { UiBaseProps } from "../types";
export interface TagInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "children" | "defaultValue" | "disabled" | "onChange" | "readOnly" | "size" | "value">, UiBaseProps<string[], readonly string[]> {
    /** Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop. */
    ref?: Ref<HTMLInputElement>;
    /** Сообщение валидации, связанное с полем через `aria-describedby`. */
    error?: string;
    /** Сбрасывает внешнюю ошибку после изменения черновика или набора тегов. */
    onClearError?: () => void;
    /** Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст. */
    readOnly?: boolean;
    /** Максимальное количество тегов. Отсутствие значения не ограничивает набор. */
    maxTags?: number;
    /**
     * Нормализует введённое значение перед проверкой дубликата и добавлением.
     * По умолчанию удаляет пробелы в начале и конце.
     */
    normalizeTag?: (value: string) => string;
    /**
     * Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
     * По умолчанию используется точное строковое сравнение.
     */
    getTagKey?: (value: string) => string;
    /** Добавляет непустой черновик при уходе фокуса с input. По умолчанию включено. */
    addOnBlur?: boolean;
    /** Формирует доступное имя кнопки удаления конкретного тега. */
    getRemoveButtonAriaLabel?: (value: string, index: number) => string;
    /** Доступное имя списка уже добавленных тегов. */
    tokensAriaLabel?: string;
    /** CSS-класс непосредственно для внутреннего `input`; `className` применяется к оболочке поля. */
    inputClassName?: string;
}
/**
 * Controlled-поле для создания коротких строковых тегов.
 *
 * Новое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит
 * только незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.
 */
export declare function TagInput({ ref, value, onChange, label, description, placeholder, size, disabled, readOnly, error, onClearError, maxTags, normalizeTag, getTagKey, addOnBlur, getRemoveButtonAriaLabel, tokensAriaLabel, inputClassName, className, id: externalId, name, form, required, maxLength, onKeyDown, onPaste, onBlur, onCompositionStart, onCompositionEnd, "aria-describedby": externalAriaDescribedBy, "aria-labelledby": externalAriaLabelledBy, ...inputProps }: TagInputProps): import("react").JSX.Element;
//# sourceMappingURL=TagInput.d.ts.map