/**
 * TagInput Molecule Component
 *
 * Free-form chip editor for `string[]` values. The user types into an
 * `Input` and presses Enter to commit; each committed value renders as
 * a removable `Badge` (`onRemove` X-chip). Backspace on an empty input
 * deletes the most recently added chip. Optional `unique` flag
 * (default true) suppresses duplicate entries.
 *
 * **Atomic Design**: Composed using `Input`, `Badge`, `Typography`,
 * `HStack`, `VStack` atoms — no raw HTML. Generic primitive; no entity
 * binding.
 *
 * Event contract (mirrors DataList / FilterGroup):
 * - Emits `UI:{addEvent}` with `{ tag, value }` when a chip is added.
 * - Emits `UI:{removeEvent}` with `{ tag, index, value }` when a chip
 *   is removed.
 * - `onChange` callback stays as the direct / Storybook contract.
 *
 * Used by the studio Questionnaire for the `tagList` input type
 * (`[string]` config knobs without `enumValues`).
 */
import React from 'react';
import type { EventKey } from '@almadar/core';
import { type BadgeVariant } from '../atoms/Badge';
export interface TagInputProps {
    /** Current list of tags. */
    value: ReadonlyArray<string>;
    /** Direct callback emitted on every change. Stays as the
     *  Storybook / non-trait contract; trait-driven schemas should prefer
     *  the bus events below. */
    onChange?: (next: ReadonlyArray<string>) => void;
    /** Placeholder for the entry input. Default: `"Type and press Enter…"`. */
    placeholder?: string;
    /** Disable add + remove interactions. */
    disabled?: boolean;
    /** Variant applied to each chip Badge. Default: `'default'`. */
    variant?: BadgeVariant;
    /** Suppress duplicate entries. Default: `true`. */
    unique?: boolean;
    /** Helper text rendered under the input. */
    helperText?: string;
    /** Additional CSS classes applied to the outer container. */
    className?: string;
    /** Event emitted when a tag is added: `UI:{addEvent}` with payload
     *  `{ tag: string, value: string[] }`. */
    addEvent?: EventKey;
    /** Event emitted when a tag is removed: `UI:{removeEvent}` with
     *  payload `{ tag: string, index: number, value: string[] }`. */
    removeEvent?: EventKey;
}
export declare const TagInput: React.FC<TagInputProps>;
