import type { Element } from "./elements.js"; import type { InputSource, KeyEvent } from "./input/types.js"; import type { OutputTarget } from "./output/types.js"; import { Frame } from "./frame.js"; export declare class Screen { private output; private input; private width; private height; constructor(opts: { output: OutputTarget; input: InputSource; width: number; height: number; }); render(root: Element, label?: string): Frame; nextKey(): Promise; nextLine(prompt: string): Promise; size(): { width: number; height: number; }; /** Adopt a new terminal size. Layout reads these on every render, so an app * that watches SIGWINCH can keep panes correct without restarting. */ resize(width: number, height: number): void; runLoop(opts: { initialState: S; render: (state: S) => Element | Promise; handleKey: (state: S, event: KeyEvent) => S | Promise; isDone: (state: S) => boolean | Promise; label?: string; }): Promise; destroy(): void; }