import { ReactNode } from 'react'; export interface ChatComposerAttachment { id: string; label: string; } export interface ChatComposerProps { attachments?: readonly ChatComposerAttachment[]; className?: string; error?: ReactNode; isDisabled?: boolean; isPending?: boolean; mentionSlot?: ReactNode; onAttachPress?: () => void; onCancelReply?: () => void; onChange: (value: string) => void; onMentionPress?: () => void; onRemoveAttachment?: (id: string) => void; onSubmit: () => void | Promise; placeholder?: string; replyToLabel?: ReactNode; /** Desktop Enter submits when true (default). Mobile stays newline-friendly. */ submitOnEnter?: boolean; toolbarStart?: ReactNode; value: string; } /** * Product-grade discussion composer with auto-grow, attachments, and IME-safe submit. * * Presentational primitive — fully supported; you own the data. Connected * counterpart: {@link AthenaChatComposer} adds mention autocomplete, optimistic * send and upload handling. Use `ChatComposer` when you own submit and * attachment state yourself. */ export declare function ChatComposer({ attachments, className, error, isDisabled, isPending, mentionSlot, onAttachPress, onCancelReply, onChange, onMentionPress, onRemoveAttachment, onSubmit, placeholder, replyToLabel, submitOnEnter, toolbarStart, value, }: ChatComposerProps): import("react").JSX.Element;