import { type Op } from "./ops.js"; import { type BoundingBox } from "./term-native.js"; import type { InputEvent } from "./input.js"; import type { Capabilities, Rgb, TerminalInfo } from "./terminfo.js"; export type { BoundingBox }; export interface TermOptions { height: number; width: number; /** * Terminal info from detectTerminal(). Seeds term.capabilities from * terminfo.capabilities. When omitted, the renderer uses the 256-color * baseline. */ terminfo?: TerminalInfo; } /** * The renderer's merged view of capabilities: the static Capabilities fields * plus all CapabilityEvent values folded in by update() calls. */ export interface RuntimeCapabilities extends Capabilities { readonly syncOutput: boolean; readonly kittyKeyboard: boolean; readonly kittyGraphics: boolean; readonly theme: { readonly foreground?: Rgb; readonly background?: Rgb; readonly cursor?: Rgb; }; } export interface RenderOptions { mode?: "line"; row?: number; pointer?: { x: number; y: number; down: boolean; }; deltaTime?: number; } export type PointerEvent = { type: "pointerenter"; id: string; } | { type: "pointerleave"; id: string; } | { type: "pointerclick"; id: string; }; export interface ElementInfo { bounds: BoundingBox; } export interface ClayError { type: string; message: string; } export interface RenderInfo { get(id: string): ElementInfo | undefined; } export interface RenderResult { output: Uint8Array; events: PointerEvent[]; info: RenderInfo; errors: ClayError[]; animating: boolean; } export interface Term { render(ops: Op[], options?: RenderOptions): RenderResult; /** * Fold InputEvents in order. Returns bytes to write now. An empty array is * valid when no immediate output is needed (TINV-5). * * Pass the events array from scan() directly. For an out-of-band resize, * pass [{ type: "resize", width, height }]. */ update(events: readonly InputEvent[]): Uint8Array; /** Frozen snapshot of the current merged capability state. */ readonly capabilities: RuntimeCapabilities; } export declare function createTerm(options: TermOptions): Promise;