/** * Low-level typed bindings to the ghostty-vt WASM module built from * our Zig export layer (zig/src/wasm_api.zig). * * Each exported Zig function maps 1:1 to a property on GhosttyExports. * This module handles WASM loading, memory management, and cell parsing. */ export interface GhosttyExports { memory: WebAssembly.Memory; init(cols: number, rows: number, max_scrollback: number, foreground_rgb: number, background_rgb: number, image_storage_limit: number): number; deinit(ptr: number): void; resize(ptr: number, cols: number, rows: number): void; write(ptr: number, data_ptr: number, data_len: number): void; update(ptr: number): void; get_viewport(ptr: number, buf_ptr: number): number; get_viewport_grapheme(ptr: number, row: number, col: number, buf_ptr: number, buf_len: number): number; get_viewport_hyperlink(ptr: number, row: number, col: number, buf_ptr: number, buf_len: number): number; is_dirty(ptr: number): number; is_dirty_row(ptr: number, row: number): number; clear_dirty(ptr: number): void; get_cursor_row(ptr: number): number; get_cursor_col(ptr: number): number; get_cursor_visible(ptr: number): number; cursor_keys_app(ptr: number): number; bracketed_paste(ptr: number): number; using_alt_screen(ptr: number): number; mouse_tracking(ptr: number): number; mouse_sgr(ptr: number): number; focus_events(ptr: number): number; synchronized_output(ptr: number): number; synchronized_output_generation(ptr: number): number; kitty_keyboard_flags?(ptr: number): number; graphics_generation?(ptr: number): number; graphics_image_count?(ptr: number): number; graphics_placement_count?(ptr: number): number; graphics_bytes_used?(ptr: number): number; graphics_capacity?(ptr: number): number; graphics_rejected?(ptr: number): number; graphics_evicted?(ptr: number): number; graphics_images?(ptr: number, buf_ptr: number, max_records: number): number; graphics_placements?(ptr: number, buf_ptr: number, max_records: number): number; graphics_image_size?(ptr: number, image_id: number, version: number): number; graphics_image_copy?(ptr: number, image_id: number, version: number, buf_ptr: number, buf_len: number): number; get_cols(ptr: number): number; get_rows(ptr: number): number; get_scrollback_count(ptr: number): number; get_scrollback_discarded_count(ptr: number): number; get_scrollback_line(ptr: number, offset: number, buf_ptr: number, max_cols: number): number; get_scrollback_grapheme(ptr: number, offset: number, col: number, buf_ptr: number, buf_len: number): number; get_scrollback_hyperlink(ptr: number, offset: number, col: number, buf_ptr: number, buf_len: number): number; read_response(ptr: number, buf_ptr: number, buf_len: number): number; alloc_buffer(len: number): number; free_buffer(ptr: number, len: number): void; } export interface GhosttyWasm { exports: GhosttyExports; instance: WebAssembly.Instance; } declare const CELL_BYTES = 16; /** * Load the ghostty-vt WASM module. * * @param wasmUrl - URL or path to the .wasm file. Defaults to the * committed binary at `../wasm/ghostty-vt.wasm`. */ export declare function loadGhosttyWasm(wasmUrl?: string): Promise; /** Parsed cell data from the viewport buffer. */ export interface WasmCellData { codepoint: number; fgR: number; fgG: number; fgB: number; bgR: number; bgG: number; bgB: number; flags: number; width: number; /** Bit 0: has explicit fg color, Bit 1: has explicit bg color */ colorFlags: number; hasGrapheme: boolean; hasHyperlink: boolean; } /** * Parse a single cell from the viewport buffer at the given byte offset. * The buffer layout matches the 16-byte struct from wasm_api.zig. */ export declare function parseCell(view: DataView, byteOffset: number): WasmCellData; /** Byte size of one cell in the viewport buffer. */ export { CELL_BYTES }; /** * Allocate a buffer in WASM memory and return its pointer. * The caller must free it with freeBuffer when done. */ export declare function allocBuffer(wasm: GhosttyWasm, size: number): number; /** Free a buffer previously allocated with allocBuffer. */ export declare function freeBuffer(wasm: GhosttyWasm, ptr: number, size: number): void; export declare const GRAPHICS_IMAGE_BYTES = 16; export declare const GRAPHICS_PLACEMENT_BYTES = 60; export interface WasmGraphicsImage { imageId: number; version: number; width: number; height: number; } export interface WasmGraphicsPlacement { placementKey: string; imageId: number; imageVersion: number; row: number; col: number; offsetX: number; offsetY: number; sourceX: number; sourceY: number; sourceWidth: number; sourceHeight: number; columns: number; rows: number; z: number; } export declare function readGraphicsImages(wasm: GhosttyWasm, termPtr: number, bufPtr: number, capacity: number): WasmGraphicsImage[]; export declare function readGraphicsPlacements(wasm: GhosttyWasm, termPtr: number, bufPtr: number, capacity: number): WasmGraphicsPlacement[]; /** * Write a UTF-8 string into WASM memory and call the terminal's write * function. Handles allocation/deallocation of the transfer buffer. */ export declare function writeString(wasm: GhosttyWasm, termPtr: number, str: string, afterChunk?: () => void): void; /** * Write raw bytes into the terminal. Handles allocation/deallocation * of the transfer buffer. */ export declare function writeBytes(wasm: GhosttyWasm, termPtr: number, data: Uint8Array, afterChunk?: () => void): void; //# sourceMappingURL=wasm-bindings.d.ts.map