import * as React from 'react'; import { ChatInput } from './chat-input'; import type { ChatInputRef, ModelDisplayProps } from './types/component.types'; import type { ChatContextItem, ChatContextPickerConfig } from './types/context-item.types'; export interface ChatComposerProps { /** Read-only archived chat → render the unarchive placeholder instead of the * input (Figma node 7361:426949). */ archived?: boolean; inputRef: React.Ref; onSend: (text: string) => void; onStop: () => void; sending: boolean; placeholder: string; autoFocus?: boolean; slashCommands?: React.ComponentProps['slashCommands']; /** Show the (Guide-only) attachment add button to the left of the model row. */ showAttachmentButton?: boolean; attachmentsCount?: number; onAddFiles?: (files: FileList | File[]) => void; attachmentsDisabled?: boolean; /** Model + usage row props, forwarded to ``. */ model: ModelDisplayProps; /** Host config (entity types + search resolver). Picker is inert when unset. */ contextPicker?: ChatContextPickerConfig; /** Currently-selected context items (chips + ✓ state). */ selectedContextItems?: ChatContextItem[]; /** Toggle an item in/out of the selection (picker rows). */ onToggleContextItem?: (item: ChatContextItem) => void; /** Remove an item (chip ×). */ onRemoveContextItem?: (item: ChatContextItem) => void; /** Ambient CONTEXT MEMORY (Figma 271:38656) — the entities the host collected * from the user's navigation history and sends with every message. Rendered * as a summary strip at the top of the composer card, above the assigned-item * chips. Empty/omitted → no strip. */ contextMemoryItems?: ChatContextItem[]; /** Drop one entity from the context memory (dropdown row ×). */ onRemoveContextMemoryItem?: (item: ChatContextItem) => void; /** Controlled picker open state. */ contextPickerOpen?: boolean; /** Open the picker (the `+` menu's "Assign Item"). */ onOpenContextPicker?: () => void; /** Close the picker (Escape / outside-click / pick-complete). */ onCloseContextPicker?: () => void; /** Active `@`-mention query (filters the type list); null when inactive. */ mentionQuery?: string | null; /** `@`-trigger callback forwarded to the input. */ onMentionQueryChange?: (query: string | null) => void; /** Fires on every draft value change — threaded to `ChatInput.onValueChange` * so the host can keep `@type:id` mention tokens in sync with context chips. */ onValueChange?: (value: string) => void; /** Non-destructive ghost preview shown in the empty composer (e.g. a hovered * quick-action's full prompt). Forwarded to `ChatInput.previewText`. */ previewText?: string; } /** * Chat panel footer (Figma node 7363:205952): the message composer (live * `ChatInput` or the read-only archived placeholder) above the model/usage * row. No own background — inherits the panel surface so it blends seamlessly. * * With `contextPicker` set, the selected-context chip strip sits above the * input, the two-level picker popover anchors above the input, and the bottom * controls row swaps the bare attachment `+` for the `+` plus-menu. */ export declare function ChatComposer({ archived, inputRef, onSend, onStop, sending, placeholder, autoFocus, slashCommands, showAttachmentButton, attachmentsCount, onAddFiles, attachmentsDisabled, model, contextPicker, selectedContextItems, onToggleContextItem, onRemoveContextItem, contextMemoryItems, onRemoveContextMemoryItem, contextPickerOpen, onOpenContextPicker, onCloseContextPicker, mentionQuery, onMentionQueryChange, onValueChange, previewText, }: ChatComposerProps): React.JSX.Element; //# sourceMappingURL=chat-composer.d.ts.map