/** * 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. */ import type { UnderlineStyle } from "@wterm/core"; 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; /** Host foreground/background/cursor and 16 palette entries as 19 little-endian u32s. */ set_theme_colors?(ptr: number, colors_ptr: number): void; /** 0 = foreground, 1 = background, 2 = cursor; -1 when unset. */ get_color_override?(ptr: number, target: number): number; get_viewport(ptr: number, buf_ptr: number): number; /** 20-byte cells with underline style/color. Optional for older binaries. */ get_viewport_v2?(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; get_cursor_shape?(ptr: number): number; get_cursor_blinking?(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; mouse_encoding?(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; /** Bit 0: wraps to next; bit 1: continues previous. -1 for an invalid row. */ get_row_wraps?(ptr: number, row: number): number; track_position?(ptr: number, row: number, col: number): number; /** Retained row * 65536 + column, or -1 for an invalidated handle. */ resolve_position?(ptr: number, handle: number): number; release_position?(ptr: number, handle: number): void; get_scrollback_count(ptr: number): number; get_scrollback_row_wraps?(ptr: number, offset: 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_line_v2?(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; get_title_len?(ptr: number): number; get_title_ptr?(ptr: number): number; get_working_directory_len?(ptr: number): number; get_working_directory_ptr?(ptr: number): number; get_bell_count?(ptr: number): number; get_clipboard_write_len?(ptr: number): number; get_clipboard_write_ptr?(ptr: number): number; get_shell_phase?(ptr: number): number; get_shell_exit_code?(ptr: number): number; find_prompt?(ptr: number, row: number, direction: 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; export declare const CELL_BYTES_V2 = 20; /** * 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: explicit fg, bit 1: explicit bg, bit 2 (v2): explicit underline */ colorFlags: number; underlineStyle?: UnderlineStyle; underlineRgb?: number; hasGrapheme: boolean; hasHyperlink: boolean; spacerHead: boolean; } /** * Parse a single cell from the viewport buffer at the given byte offset. * The buffer layout matches the selected cell export from wasm_api.zig. */ export declare function parseCell(view: DataView, byteOffset: number, cellBytes?: 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