import type { InputEvent } from "../input/event.ts"; import { Renderer } from "../renderer/engine.ts"; import type { Terminal } from "../terminal/types.ts"; import type { Component } from "./component.ts"; import { FocusManager } from "./focus.ts"; import { type OverlayHandle, OverlayManager, type OverlayOptions } from "./overlay.ts"; export type TuiStopListener = () => void; export interface TuiOptions { /** Minimum delay between requested renders. 0 keeps microtask rendering for tests/low-latency embeds. */ readonly renderFrameMs?: number; } export declare class Tui { private readonly options; readonly terminal: Terminal; readonly renderer: Renderer; readonly focus: FocusManager; readonly overlays: OverlayManager; private readonly decoder; private readonly children; private readonly inputListeners; private readonly stopListeners; private stopResolvers; private cleanup; private running; private renderQueued; private renderForceQueued; private renderTimer; private lastRenderAt; private escapeFlushTimer; constructor(terminal: Terminal, renderer?: Renderer, options?: TuiOptions); addChild(component: Component): void; setRoot(component: Component): void; setFocus(component?: Component): void; addInputListener(listener: (event: InputEvent) => boolean | void): () => void; onStop(listener: TuiStopListener): () => void; waitUntilStop(): Promise; showOverlay(component: Component, options?: OverlayOptions): OverlayHandle; start(): void; stop(): void; requestRender(force?: boolean): void; renderNow(force?: boolean): void; private handleRawInput; private handleInput; } export { Tui as TUI }; //# sourceMappingURL=tui.d.ts.map