type StdinDataListener = (data: Uint8Array) => void; type StdinEndListener = () => void; type StdinErrorListener = (error: unknown) => void; /** @internal Minimal Node-compatible stream surface used by the adapter. */ export interface NodeStdinLike { readonly readableEnded?: boolean; setRawMode?(enabled: boolean): void; resume(): void; pause(): void; on(event: "data", listener: StdinDataListener): void; on(event: "end", listener: StdinEndListener): void; on(event: "error", listener: StdinErrorListener): void; off(event: "data", listener: StdinDataListener): void; off(event: "end", listener: StdinEndListener): void; off(event: "error", listener: StdinErrorListener): void; } export interface NodeRawStdinLike { setRawMode?(enabled: boolean): void; } export interface NodeKeypressStdinLike extends NodeRawStdinLike { pause(): void; resume(): void; once(event: string, listener: (data: Uint8Array) => void): void; } export declare function setNodeRawMode(stdin: NodeRawStdinLike, enabled: boolean): void; /** * Set raw mode on stdin (enables character-by-character input) */ export declare function setRawMode(enabled: boolean): void; /** * Stdin reader interface for cross-runtime compatibility */ export interface StdinReader { read(): Promise<{ value: Uint8Array | undefined; done: boolean; }>; releaseLock(): void; } /** @internal Creates the Node stream-backed reader without consulting globals. */ export declare function createNodeStdinReader(stdin: NodeStdinLike): StdinReader; /** * Get a reader for stdin (for raw mode character reading) * Returns an object with read() and releaseLock() methods */ export declare function getStdinReader(): StdinReader; /** Read one line from stdin and release the reader when complete. */ export declare function readStdinLine(reader?: StdinReader): Promise; /** * Wait for a single keypress from stdin. * Works in both Deno and Node.js. */ export declare function waitForNodeKeypress(stdin: NodeKeypressStdinLike): Promise; export declare function waitForKeypress(): Promise; /** * Buffer for escape sequences that may arrive in separate reads. * Arrow keys (\x1b[A) can arrive as "\x1b" then "[A" - this combines them. */ export interface EscapeBuffer { push(input: string): string | null; clear(): void; } /** * Create an escape sequence buffer. * @param onTimeout Called when a standalone Escape key times out */ export declare function createEscapeBuffer(onTimeout: (key: string) => void): EscapeBuffer; /** * Wait for Enter key or Ctrl+C. * Returns true if Enter was pressed (continue), false if Ctrl+C (exit). * Works in both Deno and Node.js. */ export declare function waitForEnterOrExit(): Promise; export {}; //# sourceMappingURL=stdin.d.ts.map