import React from 'react';
import type { Task } from '../../tools/tasks/types.js';
import type { ContextSource, DevelopmentMode, ImageAttachment, ToolCall, TuneConfig } from '../../types/index.js';
import type { PendingQuestion } from '../../utils/question-queue.js';
import type { PendingToolApproval } from '../../utils/tool-approval-queue.js';
import type { PendingToolConfirmation } from '../../utils/tool-confirm-queue.js';
import type { ActiveEditorState } from '../../vscode/vscode-server.js';
export interface ChatInputProps {
    isCancelling: boolean;
    isToolExecuting: boolean;
    isQuestionMode: boolean;
    pendingToolCalls: ToolCall[];
    currentToolIndex: number;
    pendingQuestion: PendingQuestion | null;
    onQuestionAnswer: (answer: string) => void;
    pendingSubagentApproval: PendingToolApproval | null;
    onSubagentToolApproval: (confirmed: boolean) => void;
    pendingToolConfirmation: PendingToolConfirmation | null;
    onToolConfirmation: (confirmed: boolean) => void;
    mcpInitialized: boolean;
    client: unknown | null;
    customCommands: string[];
    inputDisabled: boolean;
    isBusy: boolean;
    developmentMode: DevelopmentMode;
    contextPercentUsed: number | null;
    contextSource: ContextSource | null;
    sessionName?: string;
    compactToolCounts?: Record<string, number> | null;
    onToggleCompactDisplay?: () => void;
    compactToolDisplay?: boolean;
    liveTaskList?: Task[] | null;
    onSubmit: (message: string, displayValue: string, images?: ImageAttachment[]) => Promise<void>;
    onToggleMode: () => void;
    onToggleReasoningExpanded: () => void;
    tune?: TuneConfig;
    currentModel?: string;
    activeEditor?: ActiveEditorState | null;
    onDismissActiveEditor?: () => void;
}
/**
 * Interactive chat input. Renders user input, tool confirmation prompts,
 * question prompts, and in-flight indicators.
 *
 * Non-interactive (`run`) mode does not route through this component —
 * see NonInteractiveShell.
 *
 * Unlike ChatHistory, this component CAN be conditionally mounted/unmounted.
 * It does not contain ink's Static component, so it's safe to hide when
 * modal dialogs are shown.
 */
export declare function ChatInput({ isCancelling, isToolExecuting, isQuestionMode, pendingToolCalls, currentToolIndex, pendingQuestion, onQuestionAnswer, pendingSubagentApproval, onSubagentToolApproval, pendingToolConfirmation, onToolConfirmation, mcpInitialized, client, customCommands, inputDisabled, isBusy, developmentMode, contextPercentUsed, contextSource, sessionName, compactToolCounts, onToggleCompactDisplay, compactToolDisplay, liveTaskList, onSubmit, onToggleMode, onToggleReasoningExpanded, tune, currentModel, activeEditor, onDismissActiveEditor, }: ChatInputProps): React.ReactElement;
//# sourceMappingURL=chat-input.d.ts.map