import { type KeyboardEvent, type ReactNode } from "react";
export interface TagSearchOption<T = string> {
    label: string;
    value: T;
}
export interface TagSearchInputProps<T = string> {
    /** Active tags displayed inline */
    tags: TagSearchOption<T>[];
    /** Controlled search input value */
    searchValue: string;
    /** Called when input text changes */
    onSearchChange: (value: string) => void;
    /** Called when a single tag is removed */
    onTagRemove: (value: T) => void;
    /** Called when the clear-all button is clicked (clears tags + input) */
    onClearAll?: () => void;
    /** Placeholder when no tags are present */
    placeholder?: string;
    /** Placeholder when tags exist */
    addMorePlaceholder?: string;
    /** Whether the component is disabled */
    disabled?: boolean;
    /** Extra class names for the outer wrapper */
    className?: string;
    /** Show the clear-all (x) icon on the right. Default true */
    showClearAll?: boolean;
    /** Called when Enter is pressed */
    onSubmit?: (value: string) => void;
    /** Forward arbitrary key events */
    onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
    /** Custom render for tag label */
    renderTag?: (option: TagSearchOption<T>) => ReactNode;
    /** Custom render function for the "+N" overflow text */
    getLimitTagsText?: (more: number) => ReactNode;
    /** Maximum number of visible tags. Set to "auto" for automatic calculation based on available width. Default "auto" */
    limitTags?: number | "auto";
}
export declare function TagSearchInput<T = string>({ tags, searchValue, onSearchChange, onTagRemove, onClearAll, placeholder, addMorePlaceholder, disabled, className, showClearAll, onSubmit, onKeyDown, renderTag, getLimitTagsText, limitTags, }: TagSearchInputProps<T>): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=tag-search-input.d.ts.map