import { a as WriteFn, c as ResolvedMultiselectPromptConfig, d as resolvePromptConfig, l as ResolvedPromptConfig, o as PromptEngine, s as ReadFn, u as ResolvedSelectPromptConfig } from "./index-BziI2aKc.mjs"; //#region src/core/prompt/terminal.d.ts /** * Create a prompt engine backed by line-based terminal I/O. * * Uses a {@linkcode ReadFn} for input and a {@linkcode WriteFn} for output. This is the * built-in renderer — sufficient for most CLI use cases. For richer * TUI experiences, users can implement {@linkcode PromptEngine} with a library * like `@clack/prompts` or `inquirer`. * * The prompter does **not** use raw mode — all input is line-based. * This keeps the implementation portable across Node, Bun, and Deno * without platform-specific stdin configuration. * * @param read - Line reader function (returns `null` on EOF) * @param write - Output writer function * @returns A {@linkcode PromptEngine} that prompts via terminal I/O * * @example * ```ts * import { createInterface } from 'node:readline'; * * const rl = createInterface({ input: process.stdin, output: process.stdout }); * let closed = false; * rl.once('close', () => { * closed = true; * }); * const read: ReadFn = () => * new Promise((resolve) => { * if (closed) { * resolve(null); * return; * } * const onClose = (): void => resolve(null); * rl.once('close', onClose); * rl.question('', (answer) => { * rl.off('close', onClose); * resolve(answer); * }); * }); * const write: WriteFn = (s) => process.stdout.write(s); * * const prompter = createTerminalPrompter(read, write); * ``` */ declare function createTerminalPrompter(read: ReadFn, write: WriteFn): PromptEngine; //#endregion export { type PromptEngine, type ReadFn, type ResolvedMultiselectPromptConfig, type ResolvedPromptConfig, type ResolvedSelectPromptConfig, createTerminalPrompter, resolvePromptConfig };