import { type ReactNode, type TextareaHTMLAttributes } from 'react'; import { type VariantProps } from 'class-variance-authority'; declare const rootVariants: (props?: ({ size?: "sm" | "md" | "lg" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; type NativeTextareaProps = Omit, 'size' | 'onSubmit' | 'children'>; /** Curated imperative handle for agent / external automation. */ export interface ChatInputHandle { getValue: () => string; isEmpty: () => boolean; setValue: (value: string) => void; clear: () => void; submit: () => void; focus: () => void; } export interface ChatInputProps extends NativeTextareaProps, VariantProps { /** Invoked when the user submits (Cmd/Ctrl+Enter, or send button). */ onSubmit?: (text: string) => void; /** Maximum allowed characters (grapheme clusters via Intl.Segmenter when available). */ maxLength?: number; /** When true, plain Enter submits and Shift+Enter inserts a newline. * Default false (Enter inserts newline; Cmd/Ctrl+Enter submits). */ submitOnEnter?: boolean; /** Minimum visible rows. Default 1. */ minRows?: number; /** Maximum visible rows before the field scrolls. Default 8. */ maxRows?: number; /** Optional attachment handler — when provided, renders the attachment button. */ onAttach?: (files: FileList) => void; /** `accept` forwarded to the hidden file input. */ accept?: string; /** Controls whether the textarea is disabled and submit is blocked. */ disabled?: boolean; /** Optional slot placed between the textarea and the send button. */ toolbar?: ReactNode; /** Visible label above the textarea. When omitted, a visually-hidden label is used. */ label?: string; } export declare const ChatInput: import("react").ForwardRefExoticComponent>; export {}; //# sourceMappingURL=chat-input.d.ts.map