/**
 * Line editor with cursor management for raw-mode terminal input.
 *
 * Handles:
 * - Escape sequence parsing (Kitty keyboard protocol, paste bracket mode)
 * - Cursor-aware buffer editing (insert, delete, move)
 * - Terminal rendering via ANSI escape sequences
 */
import type { CompletionProvider } from './completionMenu.js';
import { type ImagePasteHandler } from './inlineImagePaste.js';
/** Callbacks for parsed input events */
export interface InputCallbacks {
    onPasteStart: () => void;
    onPasteEnd: () => void;
    onShiftEnter: () => void;
    onArrowLeft: () => void;
    onArrowRight: () => void;
    onArrowUp: () => void;
    onArrowDown: () => void;
    onWordLeft: () => void;
    onWordRight: () => void;
    onHome: () => void;
    onEnd: () => void;
    onEsc: () => void;
    onChar: (ch: string) => void;
}
/**
 * Parse raw stdin data into semantic input events.
 *
 * Handles paste bracket mode, Kitty keyboard protocol, arrow keys,
 * Home/End, and Ctrl key combinations. Unknown CSI sequences are skipped.
 */
export declare function parseInputData(data: string, callbacks: InputCallbacks): void;
/**
 * Stateful escape sequence parser for chunked stdin input.
 *
 * Holds an incomplete trailing \x1B across chunks and resolves it
 * when the next chunk arrives or after a timeout.
 */
export declare const createEscapeParser: (callbacks: InputCallbacks) => {
    feed: (data: string) => void;
    flush: () => void;
};
/**
 * Read multiline input from the user using raw mode with cursor management.
 *
 * Supports:
 * - Enter to submit, Shift+Enter to insert newline
 * - Paste bracket mode for pasted text with newlines
 * - Left/Right arrows, Home/End for cursor navigation
 * - Ctrl+A/E (line start/end), Ctrl+K/U (kill line), Ctrl+W (delete word)
 * - Backspace / Ctrl+H, Ctrl+C / Ctrl+D (cancel)
 *
 * Falls back to readline.question() in non-TTY environments.
 */
export declare function readMultilineInput(prompt: string, options?: {
    completionProvider?: CompletionProvider;
    onImagePaste?: ImagePasteHandler;
}): Promise<string | null>;
//# sourceMappingURL=lineEditor.d.ts.map