import type { ClipboardEvent } from 'react'; import type { FileAttachment } from '../../hooks/useFileUpload'; interface ChatInputProps { onSend: (message: string) => void; onCommand?: (commandId: string) => void; disabled?: boolean; onConfigClick?: () => void; onPlanModeToggle?: (isPlanMode: boolean) => void; isPlanMode?: boolean; reasoningEnabled?: boolean; sessionId?: string; images?: FileAttachment[]; documents?: FileAttachment[]; onFileRemove?: (id: string) => void; isDragging?: boolean; onPaste?: (e: ClipboardEvent) => void; visionEnabled?: boolean; attachmentEnabled?: boolean; modelName?: string; providerName?: string; isCustomProvider?: boolean; authType?: 'api' | 'oauth'; isFreeModel?: boolean; researchContexts?: Array<{ id: string; label: string; }>; onResearchContextRemove?: (id: string) => void; fileSelectionContexts?: Array<{ id: string; label: string; }>; onFileSelectionContextRemove?: (id: string) => void; onModelInfoClick?: () => void; agent?: string; agents?: string[]; onAgentChange?: (agent: string) => void; /** Renders the agent as a fixed label without the switch dropdown. */ agentLocked?: boolean; /** Extra bars rendered above the input alongside InputTodosBar (e.g. otto goals bar). */ topBars?: React.ReactNode; /** Keeps the composer in document flow so growing content pushes nearby elements. */ inlineLayout?: boolean; /** Persistent draft key for composers that do not have a session yet. */ draftKey?: string; } export interface ChatInputRef { focus: () => void; setValue: (value: string) => void; /** Composer boundary element, used to capture geometry for session handoffs. */ getBoundaryElement: () => HTMLElement | null; } export declare const ChatInput: import("react").NamedExoticComponent>; export {}; //# sourceMappingURL=ChatInput.d.ts.map