/**
 * Text Input Handler Implementation
 *
 * Provides seamless multi-line text input without external editors
 * Implementation of the TextInputHandler interface.
 */
import { TextInputHandler, KeyEvent, InputOptions, InputSession } from '../interfaces/TextInputHandler.js';
/**
 * TextInputHandlerImpl provides seamless multi-line text input without external editors
 *
 * This implementation uses process.stdin.setRawMode(true) to capture individual keystrokes
 * and handles special characters manually to provide a smooth editing experience.
 */
export declare class TextInputHandlerImpl implements TextInputHandler {
    private currentSession;
    private isRawModeEnabled;
    private originalStdinMode;
    /**
     * Collect multi-line text input from the user
     */
    collectMultilineInput(prompt: string, options?: InputOptions): Promise<string>;
    /**
     * Enable raw mode for direct keystroke capture
     */
    enableRawMode(): void;
    /**
     * Disable raw mode and return to normal terminal behavior
     */
    disableRawMode(): void;
    /**
     * Handle special keyboard events
     */
    handleSpecialKeys(key: KeyEvent): boolean;
    /**
     * Display the input prompt with current content
     */
    displayInputPrompt(content: string): void;
    /**
     * Get the current input session
     */
    getCurrentSession(): InputSession | null;
    /**
     * Cancel the current input session
     */
    cancelInput(): void;
    /**
     * Parse raw key event from buffer
     */
    private parseKeyEvent;
    private resumeStdinIfSupported;
    /**
     * Check if a key event matches a key pattern
     */
    private matchesKey;
    /**
     * Add a character to the current input
     */
    private addCharacterToInput;
    /**
     * Add a new line to the input
     */
    private addNewLine;
    /**
     * Handle backspace key
     */
    private handleBackspace;
    /**
     * Handle arrow key navigation
     */
    private handleArrowKey;
    /**
     * Get the current content as a string
     */
    private getCurrentContent;
}
