import type { Readable, Writable } from "node:stream";
export declare function isTTY(): boolean;
export interface CheckboxItem {
    label: string;
    description?: string;
    checked?: boolean;
}
export interface CheckboxOptions {
    title?: string;
}
export interface ChoiceItem {
    label: string;
    hint?: string;
}
export interface Prompter {
    promptCheckboxList(items: CheckboxItem[], options?: CheckboxOptions): Promise<number[]>;
    promptChoice(question: string, choices: ChoiceItem[]): Promise<number>;
    promptConfirm(question: string, defaultYes?: boolean): Promise<boolean>;
}
/**
 * Returns true if the line consists entirely of ANSI escape sequences
 * (no real typed content). Used to detect stray arrow-key input.
 */
export declare function isEscapeSequence(line: string): boolean;
/**
 * Parse a toggle input string into 0-based indices.
 *
 * Supported formats (1-based user input):
 *   "3"       → [2]
 *   "1-3"     → [0, 1, 2]
 *   "1,3,5"   → [0, 2, 4]
 *   "1-3,5"   → [0, 1, 2, 4]
 *
 * Invalid ranges (start > end) or out-of-bounds entries are silently ignored.
 * Returns a sorted, deduplicated array of 0-based indices.
 */
export declare function parseToggleInput(input: string, maxIndex: number): number[];
/**
 * Create a Prompter instance.
 *
 * - When called without arguments on a real TTY → interactive raw mode
 *   (arrow keys, space toggle, proper cursor movement)
 * - When called with custom streams or on non-TTY → text-based fallback
 *   (type numbers, compatible with piped input and tests)
 */
export declare function createPrompter(input?: Readable, output?: Writable): Prompter;
