/**
 * TextBufferInput Component
 *
 * Buffer is passed as prop from parent.
 * Uses direct useKeypress for input handling (no ref chain).
 * Parent owns the buffer and can read values directly.
 */
import type { TextBuffer } from './shared/text-buffer.js';
import type { PendingImage, PastedBlock } from '../state/types.js';
/** Overlay trigger types for event-driven overlay detection */
export type OverlayTrigger = 'slash-autocomplete' | 'resource-autocomplete' | 'close';
interface TextBufferInputProps {
    /** Text buffer (owned by parent) */
    buffer: TextBuffer;
    /** Called when user presses Enter to submit */
    onSubmit: (value: string) => void;
    /** Called when user presses Alt+Enter to queue a follow-up */
    onQueueSubmit?: ((value: string) => void) | undefined;
    /** Placeholder text when empty */
    placeholder?: string | undefined;
    /** Whether input handling is disabled (e.g., during processing) */
    isDisabled?: boolean | undefined;
    /** Called for history navigation (up/down at boundaries) */
    onHistoryNavigate?: ((direction: 'up' | 'down') => void) | undefined;
    /** Called before Alt+Up jumps to top; return true to consume */
    onCurrentTurnEdit?: (() => boolean) | undefined;
    /** Called to trigger overlay (slash command, @mention) */
    onTriggerOverlay?: ((trigger: OverlayTrigger) => void) | undefined;
    /** Maximum lines to show in viewport */
    maxViewportLines?: number | undefined;
    /** Whether this input should handle keypresses */
    isActive: boolean;
    /** Optional handler for keyboard scroll (PageUp/PageDown, Shift+arrows) */
    onKeyboardScroll?: ((direction: 'up' | 'down') => void) | undefined;
    /** Current number of attached images (for placeholder numbering) */
    imageCount?: number | undefined;
    /** Called when image is pasted from clipboard */
    onImagePaste?: ((image: PendingImage) => void) | undefined;
    /** Current pending images (for placeholder removal detection) */
    images?: PendingImage[] | undefined;
    /** Called when an image placeholder is removed from text */
    onImageRemove?: ((imageId: string) => void) | undefined;
    /** Current pasted blocks for collapse/expand feature */
    pastedBlocks?: PastedBlock[] | undefined;
    /** Called when a large paste is detected and should be collapsed */
    onPasteBlock?: ((block: PastedBlock) => void) | undefined;
    /** Called to update a pasted block (e.g., toggle collapse) */
    onPasteBlockUpdate?: ((blockId: string, updates: Partial<PastedBlock>) => void) | undefined;
    /** Called when a paste block placeholder is removed from text */
    onPasteBlockRemove?: ((blockId: string) => void) | undefined;
    /** Query to highlight in input text (for history search) */
    highlightQuery?: string | undefined;
    /** Cycle the current reasoning variant. */
    onCycleReasoningVariant?: (() => void) | undefined;
}
export declare function TextBufferInput({ buffer, onSubmit, onQueueSubmit, placeholder, isDisabled, onHistoryNavigate, onCurrentTurnEdit, onTriggerOverlay, maxViewportLines, isActive, onKeyboardScroll, imageCount, onImagePaste, images, onImageRemove, pastedBlocks, onPasteBlock, onPasteBlockUpdate, onPasteBlockRemove, highlightQuery, onCycleReasoningVariant, }: TextBufferInputProps): import("react/jsx-runtime").JSX.Element;
export {};
//# sourceMappingURL=TextBufferInput.d.ts.map