/**
 * InputContainer Component
 * Smart container for input area - handles submission and state
 *
 * Buffer is passed as prop from parent (useCLIState).
 * No more ref chain - buffer can be accessed directly.
 */
import React from 'react';
import type { QueuedMessage } from '@dexto/core';
import { InputService } from '../services/index.js';
import type { Message, UIState, InputState, SessionState, TodoItem } from '../state/types.js';
import type { ApprovalRequest } from '../components/ApprovalPrompt.js';
import type { TextBuffer } from '../components/shared/text-buffer.js';
import { type TuiAgentBackend } from '../agent-backend.js';
/** Handle for imperative access to InputContainer */
export interface InputContainerHandle {
    /** Submit a command/message programmatically (bypasses overlay check) */
    submit: (text: string) => Promise<void>;
}
interface InputContainerProps {
    /** Text buffer (owned by useCLIState) */
    buffer: TextBuffer;
    input: InputState;
    ui: UIState;
    session: SessionState;
    /** If provided, auto-submits once when the UI is ready */
    initialPrompt?: string | undefined;
    approval: ApprovalRequest | null;
    /** Active-turn input waiting for the next executor boundary */
    steerMessages: QueuedMessage[];
    /** Follow-up messages waiting to run after the current turn */
    queuedMessages: QueuedMessage[];
    setInput: React.Dispatch<React.SetStateAction<InputState>>;
    setUi: React.Dispatch<React.SetStateAction<UIState>>;
    setSession: React.Dispatch<React.SetStateAction<SessionState>>;
    /** Setter for finalized messages (rendered in <Static>) */
    setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
    /** Setter for pending/streaming messages (rendered dynamically) */
    setPendingMessages: React.Dispatch<React.SetStateAction<Message[]>>;
    /** Setter for dequeued buffer (user messages waiting to render after pending) */
    setDequeuedBuffer: React.Dispatch<React.SetStateAction<Message[]>>;
    /** Setter for active-turn steer messages */
    setSteerMessages: React.Dispatch<React.SetStateAction<QueuedMessage[]>>;
    /** Setter for queued follow-up messages */
    setQueuedMessages: React.Dispatch<React.SetStateAction<QueuedMessage[]>>;
    /** Setter for current approval request (for approval UI via processStream) */
    setApproval: React.Dispatch<React.SetStateAction<ApprovalRequest | null>>;
    /** Setter for approval queue (for queued approvals via processStream) */
    setApprovalQueue: React.Dispatch<React.SetStateAction<ApprovalRequest[]>>;
    /** Setter for todo items (for todo tool updates via processStream) */
    setTodos: React.Dispatch<React.SetStateAction<TodoItem[]>>;
    agent: TuiAgentBackend;
    inputService: InputService;
    /** Source agent config file path (if available) */
    configFilePath: string | null;
    /** Optional keyboard scroll handler (for alternate buffer mode) */
    onKeyboardScroll?: (direction: 'up' | 'down') => void;
    /** Whether to stream chunks or wait for complete response (default: true) */
    useStreaming?: boolean;
}
/**
 * Smart container for input area
 * Manages submission, history, and overlay triggers
 */
export declare const InputContainer: React.ForwardRefExoticComponent<InputContainerProps & React.RefAttributes<InputContainerHandle>>;
export {};
//# sourceMappingURL=InputContainer.d.ts.map