UNPKG

@opentui/core

Version:

OpenTUI is a TypeScript library on a native Zig core for building terminal user interfaces (TUIs)

759 lines (758 loc) 46.4 kB
import { type FFICallbackInstance, type Pointer } from "./platform/ffi.js"; import { type CursorStyle, type CursorStyleOptions, type SelectionOccupancy, type SelectionBehavior, type TargetChannel, type DebugOverlayCorner, type WidthMethod, type TerminalCapabilities, type Highlight, type LineInfo, type ImageRenderProtocol } from "./types.js"; export type { LineInfo, AllocatorStats, AudioStreamCreateOptions, BuildOptions, NativeAudioCaptureStats, NativeAudioStreamStats, NativeRenderStats, }; import { RGBA } from "./lib/RGBA.js"; import { OptimizedBuffer } from "./buffer.js"; import { TextBuffer } from "./text-buffer.js"; import type { NativeSpanFeedOptions, NativeSpanFeedStats, ReserveInfo, AudioCreateOptions, AudioStartOptions, AudioVoiceOptions, AudioStreamCreateOptions, NativeAudioStreamCloseReason as NativeAudioStreamCloseReasonType, NativeAudioStreamFormat as NativeAudioStreamFormatType, NativeAudioStreamState as NativeAudioStreamStateType, NativeAudioStreamStats, NativeAudioCaptureStats, AudioStats, BuildOptions, AllocatorStats, NativeRenderStats, NativeImageInfo } from "./zig-structs.js"; export declare const NativeAudioStreamState: { readonly Initializing: 0; readonly Buffering: 1; readonly Playing: 2; readonly Ended: 3; readonly Failed: 4; readonly Cancelled: 5; readonly Reconnecting: 6; }; export type NativeAudioStreamState = NativeAudioStreamStateType; export declare const NativeAudioStreamCloseReason: { readonly PreserveNativeTerminal: 0; readonly TransportError: 1; readonly Disposed: 2; }; export type NativeAudioStreamCloseReason = NativeAudioStreamCloseReasonType; export declare const NativeAudioStreamFormat: { readonly Mp3: 1; readonly Flac: 2; }; export type NativeAudioStreamFormat = NativeAudioStreamFormatType; export type NativeHandle<T extends string> = Pointer & { readonly __nativeHandle: T; }; export type RendererHandle = NativeHandle<"renderer">; export type OptimizedBufferHandle = NativeHandle<"optimized_buffer">; export type TextBufferHandle = NativeHandle<"text_buffer">; export type TextBufferViewHandle = NativeHandle<"text_buffer_view">; export type EditBufferHandle = NativeHandle<"edit_buffer">; export type EditorViewHandle = NativeHandle<"editor_view">; export type SyntaxStyleHandle = NativeHandle<"syntax_style">; export type EventSinkHandle = NativeHandle<"event_sink">; export type AudioEngineHandle = NativeHandle<"audio_engine">; export type NativeRenderableHandle = NativeHandle<"native_renderable">; export type ImageHandle = NativeHandle<"image">; export type ClipboardServiceHandle = number & { readonly __nativeHandle: "clipboard_service"; }; export type ClipboardOperationHandle = number & { readonly __nativeHandle: "clipboard_operation"; }; export declare enum NativeClipboardOperationStatus { Pending = 0, Read = 1, Empty = 2, Written = 3, Cleared = 4, Unsupported = 5, Cancelled = 6, TimedOut = 7, LimitExceeded = 8, Failed = 9, InvalidHandle = 10 } export declare enum NativeClipboardStartStatus { Ok = 0, InvalidService = 1, ShuttingDown = 2, LimitExceeded = 3, InvalidArgument = 4, OutOfMemory = 5 } export declare enum NativeClipboardCancelStatus { Requested = 0, AlreadyTerminal = 1, InvalidHandle = 2 } export declare enum NativeClipboardCopyStatus { Ok = 0, BufferTooSmall = 1, InvalidHandle = 2, InvalidState = 3, InvalidArgument = 4 } export declare enum NativeClipboardDestroyStatus { Destroyed = 0, NotReady = 1, InvalidHandle = 2 } export declare enum NativeClipboardShutdownStatus { Pending = 0, Ready = 1, InvalidHandle = 2 } export type EmbeddedTerminalHandle = NativeHandle<"embedded_terminal">; export type EmbeddedTerminalCursor = { x: number; y: number; hasValue: boolean; visible: boolean; blinking: boolean; wideTail: boolean; style: "bar" | "block" | "underline" | "block-hollow"; color?: { r: number; g: number; b: number; }; }; export type EmbeddedTerminalKey = { action?: "release" | "press" | "repeat"; key?: string; mods?: number; consumedMods?: number; composing?: boolean; text?: string; unshiftedCodepoint?: number; }; export type EmbeddedTerminalMouse = { action: "press" | "release" | "motion"; button?: "unknown" | "left" | "right" | "middle" | "four" | "five" | "six" | "seven"; mods?: number; x: number; y: number; anyButtonPressed?: boolean; }; export declare enum LogLevel { Error = 0, Warn = 1, Info = 2, Debug = 3 } /** * VisualCursor represents a cursor position with both visual and logical coordinates. * Visual coordinates (visualRow, visualCol) are VIEWPORT-RELATIVE. * This means visualRow=0 is the first visible line in the viewport, not the first line in the document. * Logical coordinates (logicalRow, logicalCol) are document-absolute. */ export interface VisualCursor { visualRow: number; visualCol: number; logicalRow: number; logicalCol: number; offset: number; } export interface LogicalCursor { row: number; col: number; offset: number; } export interface MeasureResult { lineCount: number; widthColsMax: number; } export interface CursorState { x: number; y: number; visible: boolean; style: CursorStyle; blinking: boolean; color: RGBA; } export type NativeSpanFeedEventHandler = (eventId: number, arg0: Pointer, arg1: number | bigint) => void; export type NativeBufferedOutput = "stdout" | "memory"; export interface NativeRendererCreateOptions { remote?: boolean; feedPtr?: Pointer | null; bufferedOutput?: NativeBufferedOutput; } export interface NativeRenderOperationResult { renderOffset: number; status: number; } export interface NativeYogaLayout { left: number; top: number; right: number; bottom: number; width: number; height: number; } export type NativeYogaMeasureCallback = (node: Pointer | null, width: number, widthMode: number, height: number, heightMode: number) => void; export type NativeYogaDirtiedCallback = (node: Pointer | null) => void; export declare const NativeMeasureTargetKind: { readonly None: 0; readonly TextBufferView: 1; readonly EditorView: 2; }; export type NativeMeasureTargetKind = (typeof NativeMeasureTargetKind)[keyof typeof NativeMeasureTargetKind]; export type NativeMeasureTargetHandle = TextBufferViewHandle | EditorViewHandle; export interface AudioEngineLib { createAudioEngine: (options?: AudioCreateOptions | null) => AudioEngineHandle | null; destroyAudioEngine: (engine: AudioEngineHandle) => void; audioRefreshPlaybackDevices: (engine: AudioEngineHandle) => number; audioGetPlaybackDeviceCount: (engine: AudioEngineHandle) => number; audioGetPlaybackDeviceName: (engine: AudioEngineHandle, index: number) => string; audioIsPlaybackDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean; audioSelectPlaybackDevice: (engine: AudioEngineHandle, index: number) => number; audioClearPlaybackDeviceSelection: (engine: AudioEngineHandle) => void; audioRefreshCaptureDevices: (engine: AudioEngineHandle) => number; audioGetCaptureDeviceCount: (engine: AudioEngineHandle) => number; audioGetCaptureDeviceName: (engine: AudioEngineHandle, index: number) => string; audioIsCaptureDeviceDefault: (engine: AudioEngineHandle, index: number) => boolean; audioSelectCaptureDevice: (engine: AudioEngineHandle, index: number) => number; audioClearCaptureDeviceSelection: (engine: AudioEngineHandle) => void; audioStartCapture: (engine: AudioEngineHandle, options: AudioStartOptions | undefined, channels: number, capacityFrames: number) => number; audioStopCapture: (engine: AudioEngineHandle) => number; audioIsCaptureRunning: (engine: AudioEngineHandle) => boolean; audioReadCapture: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number) => { status: number; framesRead: number; }; audioGetCaptureStats: (engine: AudioEngineHandle) => { status: number; stats: NativeAudioCaptureStats | null; }; audioStart: (engine: AudioEngineHandle, options?: AudioStartOptions | null) => number; audioStartMixer: (engine: AudioEngineHandle) => number; audioStop: (engine: AudioEngineHandle) => number; audioCreateStream: (engine: AudioEngineHandle, options: AudioStreamCreateOptions) => { status: number; streamId: number | null; }; audioWriteStream: (engine: AudioEngineHandle, streamId: number, data: Uint8Array) => number; audioEndStream: (engine: AudioEngineHandle, streamId: number) => number; audioRestartStream: (engine: AudioEngineHandle, streamId: number) => number; audioSetStreamVolume: (engine: AudioEngineHandle, streamId: number, volume: number) => number; audioSetStreamPan: (engine: AudioEngineHandle, streamId: number, pan: number) => number; audioSetStreamGroup: (engine: AudioEngineHandle, streamId: number, groupId: number) => number; audioGetStreamStats: (engine: AudioEngineHandle, streamId: number) => NativeAudioStreamStats | null; audioCloseStream: (engine: AudioEngineHandle, streamId: number, reason: NativeAudioStreamCloseReason) => { status: number; stats: NativeAudioStreamStats | null; }; audioLoad: (engine: AudioEngineHandle, data: Uint8Array) => { status: number; soundId: number | null; }; audioUnload: (engine: AudioEngineHandle, soundId: number) => number; audioPlay: (engine: AudioEngineHandle, soundId: number, options?: AudioVoiceOptions) => { status: number; voiceId: number | null; }; audioStopVoice: (engine: AudioEngineHandle, voiceId: number) => number; audioSetVoiceGroup: (engine: AudioEngineHandle, voiceId: number, groupId: number) => number; audioCreateGroup: (engine: AudioEngineHandle, name: string) => { status: number; groupId: number | null; }; audioSetGroupVolume: (engine: AudioEngineHandle, groupId: number, volume: number) => number; audioSetMasterVolume: (engine: AudioEngineHandle, volume: number) => number; audioMixToBuffer: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => number; audioEnableTap: (engine: AudioEngineHandle, enabled: boolean, capacityFrames: number) => number; audioReadTap: (engine: AudioEngineHandle, outBuffer: Float32Array, frameCount: number, channels: number) => { status: number; framesRead: number; }; audioGetStats: (engine: AudioEngineHandle) => AudioStats | null; } export interface RenderLib extends AudioEngineLib { createRenderer: (width: number, height: number, options?: NativeRendererCreateOptions) => RendererHandle | null; setTerminalEnvVar: (renderer: RendererHandle, key: string, value: string) => boolean; destroyRenderer: (renderer: RendererHandle, flushInput?: boolean) => void; setUseThread: (renderer: RendererHandle, useThread: boolean) => void; setClearOnShutdown: (renderer: RendererHandle, clear: boolean) => void; setBackgroundColor: (renderer: RendererHandle, color: RGBA) => void; setRenderOffset: (renderer: RendererHandle, offset: number) => void; resetSplitScrollback: (renderer: RendererHandle, seedRows: number, pinnedRenderOffset: number) => number; syncSplitScrollback: (renderer: RendererHandle, pinnedRenderOffset: number) => number; getSplitOutputOffset: (renderer: RendererHandle, surfaceOffset: number) => number; setPendingSplitFooterTransition: (renderer: RendererHandle, mode: number, sourceTopLine: number, sourceHeight: number, targetTopLine: number, targetHeight: number, scrollLines: number) => void; clearPendingSplitFooterTransition: (renderer: RendererHandle) => void; updateStats: (renderer: RendererHandle, time: number, fps: number, frameCallbackTime: number) => void; updateMemoryStats: (renderer: RendererHandle, heapUsed: number, heapTotal: number, arrayBuffers: number) => void; getRenderStats: (renderer: RendererHandle) => NativeRenderStats; render: (renderer: RendererHandle, force: boolean) => number; repaintSplitFooter: (renderer: RendererHandle, pinnedRenderOffset: number, force: boolean) => NativeRenderOperationResult; commitSplitFooterSnapshot: (renderer: RendererHandle, snapshot: OptimizedBuffer, rowColumns: number, startOnNewLine: boolean, trailingNewline: boolean, pinnedRenderOffset: number, force: boolean, beginFrame?: boolean, finalizeFrame?: boolean) => NativeRenderOperationResult; getNextBuffer: (renderer: RendererHandle) => OptimizedBuffer; getCurrentBuffer: (renderer: RendererHandle) => OptimizedBuffer; rendererSetPaletteState: (renderer: RendererHandle, palette: readonly RGBA[], defaultForeground: RGBA, defaultBackground: RGBA, paletteEpoch: number) => void; createOptimizedBuffer: (width: number, height: number, widthMethod: WidthMethod, respectAlpha?: boolean, id?: string) => OptimizedBuffer; destroyOptimizedBuffer: (bufferPtr: OptimizedBufferHandle) => void; drawFrameBuffer: (targetBufferPtr: OptimizedBufferHandle, destX: number, destY: number, bufferPtr: OptimizedBufferHandle, sourceX?: number, sourceY?: number, sourceWidth?: number, sourceHeight?: number) => void; getBufferWidth: (buffer: OptimizedBufferHandle) => number; getBufferHeight: (buffer: OptimizedBufferHandle) => number; bufferClear: (buffer: OptimizedBufferHandle, color: RGBA) => void; bufferGetCharPtr: (buffer: OptimizedBufferHandle) => Pointer; bufferGetFgPtr: (buffer: OptimizedBufferHandle) => Pointer; bufferGetBgPtr: (buffer: OptimizedBufferHandle) => Pointer; bufferGetAttributesPtr: (buffer: OptimizedBufferHandle) => Pointer; bufferGetRespectAlpha: (buffer: OptimizedBufferHandle) => boolean; bufferSetRespectAlpha: (buffer: OptimizedBufferHandle, respectAlpha: boolean) => void; bufferGetId: (buffer: OptimizedBufferHandle) => string; bufferGetRealCharSize: (buffer: OptimizedBufferHandle) => number; bufferWriteResolvedChars: (buffer: OptimizedBufferHandle, outputBuffer: Uint8Array, addLineBreaks: boolean) => number; bufferDrawText: (buffer: OptimizedBufferHandle, text: string, x: number, y: number, color: RGBA, bgColor?: RGBA, attributes?: number) => void; bufferSetCellWithAlphaBlending: (buffer: OptimizedBufferHandle, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void; bufferSetCell: (buffer: OptimizedBufferHandle, x: number, y: number, char: string, color: RGBA, bgColor: RGBA, attributes?: number) => void; bufferFillRect: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number, color: RGBA) => void; bufferColorMatrix: (buffer: OptimizedBufferHandle, matrix: Pointer | Float32Array, cellMask: Pointer | Float32Array, cellMaskCount: number, strength: number, target: TargetChannel) => void; bufferColorMatrixUniform: (buffer: OptimizedBufferHandle, matrix: Pointer | Float32Array, strength: number, target: TargetChannel) => void; bufferDrawSuperSampleBuffer: (buffer: OptimizedBufferHandle, x: number, y: number, pixelData: Pointer | Uint8Array, pixelDataLength: number, format: "bgra8unorm" | "rgba8unorm", alignedBytesPerRow: number) => void; bufferDrawImage: (buffer: OptimizedBufferHandle, image: ImageHandle, x: number, y: number, width: number, height: number, pixelWidth: number, pixelHeight: number, sourceX: number, sourceY: number, sourceWidth: number, sourceHeight: number, protocol: ImageRenderProtocol) => boolean; bufferDrawPackedBuffer: (buffer: OptimizedBufferHandle, data: Pointer | Uint8Array, dataLen: number, posX: number, posY: number, terminalWidthCells: number, terminalHeightCells: number) => void; bufferDrawGrayscaleBuffer: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensities: Pointer | Float32Array, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void; bufferDrawGrayscaleBufferSupersampled: (buffer: OptimizedBufferHandle, posX: number, posY: number, intensities: Pointer | Float32Array, srcWidth: number, srcHeight: number, fg: RGBA | null, bg: RGBA | null) => void; bufferDrawGrid: (buffer: OptimizedBufferHandle, borderChars: Uint32Array, borderFg: RGBA, borderBg: RGBA, columnOffsets: Int32Array, columnCount: number, rowOffsets: Int32Array, rowCount: number, options: { drawInner: boolean; drawOuter: boolean; }) => void; bufferDrawBox: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number, borderChars: Uint32Array, packedOptions: number, borderColor: RGBA, backgroundColor: RGBA, titleColor: RGBA, title: string | null, bottomTitle: string | null) => void; bufferResize: (buffer: OptimizedBufferHandle, width: number, height: number) => void; resizeRenderer: (renderer: RendererHandle, width: number, height: number) => void; setCursorPosition: (renderer: RendererHandle, x: number, y: number, visible: boolean) => void; setCursorColor: (renderer: RendererHandle, color: RGBA) => void; getCursorState: (renderer: RendererHandle) => CursorState; setCursorStyleOptions: (renderer: RendererHandle, options: CursorStyleOptions) => void; setDebugOverlay: (renderer: RendererHandle, enabled: boolean, corner: DebugOverlayCorner) => void; clearTerminal: (renderer: RendererHandle) => void; setTerminalTitle: (renderer: RendererHandle, title: string) => void; copyToClipboardOSC52: (renderer: RendererHandle, target: number, textUtf8: Uint8Array) => boolean; clearClipboardOSC52: (renderer: RendererHandle, target: number) => boolean; clipboardServiceCreate: (maxConcurrentOperations: number, maxProviderTransfers: number, waylandSeat?: string) => ClipboardServiceHandle | null; clipboardServiceBeginShutdown: (service: ClipboardServiceHandle) => NativeClipboardShutdownStatus; clipboardServicePollShutdown: (service: ClipboardServiceHandle) => NativeClipboardShutdownStatus; clipboardServiceDestroy: (service: ClipboardServiceHandle) => NativeClipboardDestroyStatus; clipboardServiceDrain: (service: ClipboardServiceHandle) => number; clipboardReadOperationStart: (service: ClipboardServiceHandle, request: Uint8Array, selection: number, maxBytes: number, maxImagePixels: number, maxConversionBytes: number, timeoutMs: number) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null; }; clipboardWriteOperationStart: (service: ClipboardServiceHandle, textUtf8: Uint8Array, selection: number, timeoutMs: number) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null; }; clipboardClearOperationStart: (service: ClipboardServiceHandle, selection: number, timeoutMs: number) => { status: NativeClipboardStartStatus; operation: ClipboardOperationHandle | null; }; clipboardOperationPoll: (operation: ClipboardOperationHandle) => NativeClipboardOperationStatus; clipboardOperationCancel: (operation: ClipboardOperationHandle) => NativeClipboardCancelStatus; clipboardOperationResultMimeLength: (operation: ClipboardOperationHandle) => { status: NativeClipboardCopyStatus; length: number; }; clipboardOperationResultMimeCopy: (operation: ClipboardOperationHandle, output: Uint8Array) => NativeClipboardCopyStatus; clipboardOperationResultDataLength: (operation: ClipboardOperationHandle) => { status: NativeClipboardCopyStatus; length: number; }; clipboardOperationResultDataCopy: (operation: ClipboardOperationHandle, output: Uint8Array) => NativeClipboardCopyStatus; clipboardOperationResultErrorCode: (operation: ClipboardOperationHandle) => { status: NativeClipboardCopyStatus; errorCode: number; }; clipboardOperationResultDiagnosticLength: (operation: ClipboardOperationHandle) => { status: NativeClipboardCopyStatus; length: number; }; clipboardOperationResultDiagnosticCopy: (operation: ClipboardOperationHandle, output: Uint8Array) => NativeClipboardCopyStatus; clipboardOperationDestroy: (operation: ClipboardOperationHandle) => NativeClipboardDestroyStatus; triggerNotification: (renderer: RendererHandle, message: string, title?: string) => boolean; addToHitGrid: (renderer: RendererHandle, x: number, y: number, width: number, height: number, id: number) => void; clearCurrentHitGrid: (renderer: RendererHandle) => void; hitGridPushScissorRect: (renderer: RendererHandle, x: number, y: number, width: number, height: number) => void; hitGridPopScissorRect: (renderer: RendererHandle) => void; hitGridClearScissorRects: (renderer: RendererHandle) => void; addToCurrentHitGridClipped: (renderer: RendererHandle, x: number, y: number, width: number, height: number, id: number) => void; checkHit: (renderer: RendererHandle, x: number, y: number) => number; getHitGridDirty: (renderer: RendererHandle) => boolean; dumpHitGrid: (renderer: RendererHandle) => void; dumpBuffers: (renderer: RendererHandle, timestamp?: number) => void; dumpOutputBuffer: (renderer: RendererHandle, timestamp?: number) => void; restoreTerminalModes: (renderer: RendererHandle) => void; enableMouse: (renderer: RendererHandle, enableMovement: boolean) => void; disableMouse: (renderer: RendererHandle) => void; enableKittyKeyboard: (renderer: RendererHandle, flags: number) => void; disableKittyKeyboard: (renderer: RendererHandle) => void; setKittyKeyboardFlags: (renderer: RendererHandle, flags: number) => void; getKittyKeyboardFlags: (renderer: RendererHandle) => number; setupTerminal: (renderer: RendererHandle, useAlternateScreen: boolean) => void; suspendRenderer: (renderer: RendererHandle) => void; resumeRenderer: (renderer: RendererHandle) => void; queryPixelResolution: (renderer: RendererHandle) => void; queryThemeColors: (renderer: RendererHandle) => void; writeOut: (renderer: RendererHandle, data: string | Uint8Array) => void; yogaConfigCreate: () => Pointer; yogaConfigFree: (config: Pointer) => void; yogaConfigSetUseWebDefaults: (config: Pointer, enabled: boolean) => void; yogaConfigGetUseWebDefaults: (config: Pointer) => boolean; yogaConfigSetPointScaleFactor: (config: Pointer, pointScaleFactor: number) => void; yogaConfigGetPointScaleFactor: (config: Pointer) => number; yogaConfigSetErrata: (config: Pointer, errata: number) => void; yogaConfigGetErrata: (config: Pointer) => number; yogaConfigSetExperimentalFeatureEnabled: (config: Pointer, feature: number, enabled: boolean) => void; yogaConfigIsExperimentalFeatureEnabled: (config: Pointer, feature: number) => boolean; yogaNodeCreate: () => Pointer; yogaNodeCreateForOpenTUI: () => Pointer; yogaNodeCreateWithConfig: (config: Pointer) => Pointer; yogaNodeFree: (node: Pointer) => void; yogaNodeFreeRecursive: (node: Pointer) => void; yogaNodeReset: (node: Pointer) => void; yogaNodeCopyStyle: (dstNode: Pointer, srcNode: Pointer) => void; yogaNodeInsertChild: (node: Pointer, child: Pointer, index: number) => void; yogaNodeRemoveChild: (node: Pointer, child: Pointer) => void; yogaNodeRemoveAllChildren: (node: Pointer) => void; yogaNodeGetChild: (node: Pointer, index: number) => Pointer | null; yogaNodeGetChildCount: (node: Pointer) => number; yogaNodeGetParent: (node: Pointer) => Pointer | null; yogaNodeCalculateLayout: (node: Pointer, width: number, height: number, direction: number) => void; yogaNodeIsDirty: (node: Pointer) => boolean; yogaNodeMarkDirty: (node: Pointer) => void; yogaNodeGetHasNewLayout: (node: Pointer) => boolean; yogaNodeSetHasNewLayout: (node: Pointer, hasNewLayout: boolean) => void; yogaNodeSetIsReferenceBaseline: (node: Pointer, isReferenceBaseline: boolean) => void; yogaNodeIsReferenceBaseline: (node: Pointer) => boolean; yogaNodeSetAlwaysFormsContainingBlock: (node: Pointer, alwaysFormsContainingBlock: boolean) => void; yogaNodeGetAlwaysFormsContainingBlock: (node: Pointer) => boolean; yogaNodeGetComputedLayout: (node: Pointer) => NativeYogaLayout; yogaNodeLayoutGetEdge: (node: Pointer, kind: number, edge: number) => number; yogaNodeStyleSetEnum: (node: Pointer, kind: number, value: number) => void; yogaNodeStyleGetEnum: (node: Pointer, kind: number) => number; yogaNodeStyleSetFloat: (node: Pointer, kind: number, value: number) => void; yogaNodeStyleGetFloat: (node: Pointer, kind: number) => number; yogaNodeStyleSetBorder: (node: Pointer, edge: number, border: number) => void; yogaNodeStyleGetBorder: (node: Pointer, edge: number) => number; yogaNodeStyleSetValue: (node: Pointer, kind: number, edgeOrGutter: number, unit: number, value: number) => void; yogaNodeStyleGetValue: (node: Pointer, kind: number, edgeOrGutter: number) => number | bigint; yogaNodeSetMeasureFunc: (node: Pointer, enabled: boolean) => void; yogaNodeUnsetMeasureFunc: (node: Pointer) => void; yogaNodeHasMeasureFunc: (node: Pointer) => boolean; yogaNodeSetDirtiedFunc: (node: Pointer, enabled: boolean) => void; yogaNodeUnsetDirtiedFunc: (node: Pointer) => void; yogaStoreMeasureResult: (width: number, height: number) => void; yogaSetMeasureCallback: (callback: Pointer | null) => void; yogaSetDirtiedCallback: (callback: Pointer | null) => void; createYogaMeasureCallback: (callback: NativeYogaMeasureCallback) => FFICallbackInstance; createYogaDirtiedCallback: (callback: NativeYogaDirtiedCallback) => FFICallbackInstance; createTextBuffer: (widthMethod: WidthMethod) => TextBuffer; destroyTextBuffer: (buffer: TextBufferHandle) => void; textBufferGetLength: (buffer: TextBufferHandle) => number; textBufferGetByteSize: (buffer: TextBufferHandle) => number; textBufferReset: (buffer: TextBufferHandle) => void; textBufferClear: (buffer: TextBufferHandle) => void; textBufferRegisterMemBuffer: (buffer: TextBufferHandle, bytes: Uint8Array, owned?: boolean) => number; textBufferReplaceMemBuffer: (buffer: TextBufferHandle, memId: number, bytes: Uint8Array, owned?: boolean) => boolean; textBufferClearMemRegistry: (buffer: TextBufferHandle) => void; textBufferSetTextFromMem: (buffer: TextBufferHandle, memId: number) => void; textBufferAppend: (buffer: TextBufferHandle, bytes: Uint8Array) => void; textBufferAppendFromMemId: (buffer: TextBufferHandle, memId: number) => void; textBufferLoadFile: (buffer: TextBufferHandle, path: string) => boolean; textBufferSetStyledText: (buffer: TextBufferHandle, chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; link?: { url: string; }; }>) => void; textBufferSetDefaultFg: (buffer: TextBufferHandle, fg: RGBA | null) => void; textBufferSetDefaultBg: (buffer: TextBufferHandle, bg: RGBA | null) => void; textBufferSetDefaultAttributes: (buffer: TextBufferHandle, attributes: number | null) => void; textBufferResetDefaults: (buffer: TextBufferHandle) => void; textBufferGetTabWidth: (buffer: TextBufferHandle) => number; textBufferSetTabWidth: (buffer: TextBufferHandle, width: number) => void; textBufferGetLineCount: (buffer: TextBufferHandle) => number; getPlainTextBytes: (buffer: TextBufferHandle, maxLength: number) => Uint8Array | null; textBufferGetTextRange: (buffer: TextBufferHandle, startOffset: number, endOffset: number, maxLength: number) => Uint8Array | null; textBufferGetTextRangeByCoords: (buffer: TextBufferHandle, startRow: number, startCol: number, endRow: number, endCol: number, maxLength: number) => Uint8Array | null; createTextBufferView: (textBuffer: TextBufferHandle) => TextBufferViewHandle; destroyTextBufferView: (view: TextBufferViewHandle) => void; textBufferViewSetSelection: (view: TextBufferViewHandle, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void; textBufferViewResetSelection: (view: TextBufferViewHandle) => void; textBufferViewGetSelection: (view: TextBufferViewHandle) => { start: number; end: number; } | null; textBufferViewSetLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, behavior?: SelectionBehavior) => boolean; textBufferViewUpdateSelection: (view: TextBufferViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void; textBufferViewUpdateLocalSelection: (view: TextBufferViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, behavior?: SelectionBehavior) => boolean; textBufferViewResetLocalSelection: (view: TextBufferViewHandle) => void; textBufferViewSetSelectionOccupancy: (view: TextBufferViewHandle, occupancy: SelectionOccupancy) => void; textBufferViewGetSelectionOccupancy: (view: TextBufferViewHandle) => SelectionOccupancy; textBufferViewSetWrapWidth: (view: TextBufferViewHandle, width: number) => void; textBufferViewSetWrapMode: (view: TextBufferViewHandle, mode: "none" | "char" | "word") => void; textBufferViewSetFirstLineOffset: (view: TextBufferViewHandle, offset: number) => void; textBufferViewSetViewportSize: (view: TextBufferViewHandle, width: number, height: number) => void; textBufferViewSetViewport: (view: TextBufferViewHandle, x: number, y: number, width: number, height: number) => void; textBufferViewGetLineInfo: (view: TextBufferViewHandle) => LineInfo; textBufferViewGetLogicalLineInfo: (view: TextBufferViewHandle) => LineInfo; textBufferViewGetSelectedTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null; textBufferViewGetPlainTextBytes: (view: TextBufferViewHandle, maxLength: number) => Uint8Array | null; textBufferViewSetTabIndicator: (view: TextBufferViewHandle, indicator: number) => void; textBufferViewSetTabIndicatorColor: (view: TextBufferViewHandle, color: RGBA) => void; textBufferViewSetTruncate: (view: TextBufferViewHandle, truncate: boolean) => void; textBufferViewMeasureForDimensions: (view: TextBufferViewHandle, width: number, height: number) => MeasureResult | null; textBufferViewGetVirtualLineCount: (view: TextBufferViewHandle) => number; readonly encoder: TextEncoder; readonly decoder: TextDecoder; bufferDrawTextBufferView: (buffer: OptimizedBufferHandle, view: TextBufferViewHandle, x: number, y: number) => void; bufferDrawEditorView: (buffer: OptimizedBufferHandle, view: EditorViewHandle, x: number, y: number) => void; createEditBuffer: (widthMethod: WidthMethod) => EditBufferHandle; destroyEditBuffer: (buffer: EditBufferHandle) => void; editBufferSetText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void; editBufferSetTextFromMem: (buffer: EditBufferHandle, memId: number) => void; editBufferReplaceText: (buffer: EditBufferHandle, textBytes: Uint8Array) => void; editBufferReplaceTextFromMem: (buffer: EditBufferHandle, memId: number) => void; editBufferGetText: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null; editBufferInsertChar: (buffer: EditBufferHandle, char: string) => void; editBufferInsertText: (buffer: EditBufferHandle, text: string) => void; editBufferDeleteChar: (buffer: EditBufferHandle) => void; editBufferDeleteCharBackward: (buffer: EditBufferHandle) => void; editBufferDeleteRange: (buffer: EditBufferHandle, startLine: number, startCol: number, endLine: number, endCol: number) => void; editBufferNewLine: (buffer: EditBufferHandle) => void; editBufferDeleteLine: (buffer: EditBufferHandle) => void; editBufferMoveCursorLeft: (buffer: EditBufferHandle) => void; editBufferMoveCursorRight: (buffer: EditBufferHandle) => void; editBufferMoveCursorUp: (buffer: EditBufferHandle) => void; editBufferMoveCursorDown: (buffer: EditBufferHandle) => void; editBufferGotoLine: (buffer: EditBufferHandle, line: number) => void; editBufferSetCursor: (buffer: EditBufferHandle, line: number, col: number) => void; editBufferSetCursorToLineCol: (buffer: EditBufferHandle, line: number, col: number) => void; editBufferSetCursorByOffset: (buffer: EditBufferHandle, offset: number) => void; editBufferGetCursorPosition: (buffer: EditBufferHandle) => LogicalCursor; editBufferGetId: (buffer: EditBufferHandle) => number; editBufferGetTextBuffer: (buffer: EditBufferHandle) => TextBufferHandle; editBufferSetTabWidth: (buffer: EditBufferHandle, width: number) => void; editBufferDebugLogRope: (buffer: EditBufferHandle) => void; editBufferUndo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null; editBufferRedo: (buffer: EditBufferHandle, maxLength: number) => Uint8Array | null; editBufferCanUndo: (buffer: EditBufferHandle) => boolean; editBufferCanRedo: (buffer: EditBufferHandle) => boolean; editBufferClearHistory: (buffer: EditBufferHandle) => void; editBufferClear: (buffer: EditBufferHandle) => void; editBufferGetNextWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number; }; editBufferGetPrevWordBoundary: (buffer: EditBufferHandle) => { row: number; col: number; offset: number; }; editBufferGetEOL: (buffer: EditBufferHandle) => { row: number; col: number; offset: number; }; editBufferOffsetToPosition: (buffer: EditBufferHandle, offset: number) => { row: number; col: number; offset: number; } | null; editBufferPositionToOffset: (buffer: EditBufferHandle, row: number, col: number) => number; editBufferGetLineStartOffset: (buffer: EditBufferHandle, row: number) => number; editBufferGetTextRange: (buffer: EditBufferHandle, startOffset: number, endOffset: number, maxLength: number) => Uint8Array | null; editBufferGetTextRangeByCoords: (buffer: EditBufferHandle, startRow: number, startCol: number, endRow: number, endCol: number, maxLength: number) => Uint8Array | null; createEditorView: (editBufferPtr: EditBufferHandle, viewportWidth: number, viewportHeight: number) => EditorViewHandle; destroyEditorView: (view: EditorViewHandle) => void; editorViewSetViewportSize: (view: EditorViewHandle, width: number, height: number) => void; editorViewSetViewport: (view: EditorViewHandle, x: number, y: number, width: number, height: number, moveCursor: boolean) => void; editorViewGetViewport: (view: EditorViewHandle) => { offsetY: number; offsetX: number; height: number; width: number; }; editorViewSetScrollMargin: (view: EditorViewHandle, margin: number) => void; editorViewSetWrapMode: (view: EditorViewHandle, mode: "none" | "char" | "word") => void; editorViewGetVirtualLineCount: (view: EditorViewHandle) => number; editorViewGetTotalVirtualLineCount: (view: EditorViewHandle) => number; editorViewGetTextBufferView: (view: EditorViewHandle) => TextBufferViewHandle; editorViewSetSelection: (view: EditorViewHandle, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void; editorViewResetSelection: (view: EditorViewHandle) => void; editorViewGetSelection: (view: EditorViewHandle) => { start: number; end: number; } | null; editorViewSetLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean, behavior?: SelectionBehavior) => boolean; editorViewUpdateSelection: (view: EditorViewHandle, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void; editorViewUpdateLocalSelection: (view: EditorViewHandle, anchorX: number, anchorY: number, focusX: number, focusY: number, bgColor: RGBA | null, fgColor: RGBA | null, updateCursor: boolean, followCursor: boolean, behavior?: SelectionBehavior) => boolean; editorViewResetLocalSelection: (view: EditorViewHandle) => void; editorViewConvertSelectionToCell: (view: EditorViewHandle) => boolean; editorViewSetSelectionOccupancy: (view: EditorViewHandle, occupancy: SelectionOccupancy) => void; editorViewSetSelectionInclusive: (view: EditorViewHandle, start: number, end: number, bgColor: RGBA | null, fgColor: RGBA | null) => void; editorViewSetSelectionColors: (view: EditorViewHandle, bgColor: RGBA | null, fgColor: RGBA | null) => void; editorViewGetSelectedTextBytes: (view: EditorViewHandle, maxLength: number) => Uint8Array | null; editorViewGetCursor: (view: EditorViewHandle) => { row: number; col: number; }; editorViewGetText: (view: EditorViewHandle, maxLength: number) => Uint8Array | null; editorViewGetVisualCursor: (view: EditorViewHandle) => VisualCursor; editorViewMoveUpVisual: (view: EditorViewHandle) => void; editorViewMoveDownVisual: (view: EditorViewHandle) => void; editorViewDeleteSelectedText: (view: EditorViewHandle) => void; editorViewSetCursorByOffset: (view: EditorViewHandle, offset: number) => void; editorViewGetNextWordBoundary: (view: EditorViewHandle) => VisualCursor; editorViewGetPrevWordBoundary: (view: EditorViewHandle) => VisualCursor; editorViewGetEOL: (view: EditorViewHandle) => VisualCursor; editorViewGetVisualSOL: (view: EditorViewHandle) => VisualCursor; editorViewGetVisualEOL: (view: EditorViewHandle) => VisualCursor; editorViewGotoVisualLineEnd: (view: EditorViewHandle) => void; editorViewGetLineInfo: (view: EditorViewHandle) => LineInfo; editorViewGetLogicalLineInfo: (view: EditorViewHandle) => LineInfo; editorViewSetPlaceholderStyledText: (view: EditorViewHandle, chunks: Array<{ text: string; fg?: RGBA | null; bg?: RGBA | null; attributes?: number; }>) => void; editorViewSetTabIndicator: (view: EditorViewHandle, indicator: number) => void; editorViewSetTabIndicatorColor: (view: EditorViewHandle, color: RGBA) => void; bufferPushScissorRect: (buffer: OptimizedBufferHandle, x: number, y: number, width: number, height: number) => void; bufferPopScissorRect: (buffer: OptimizedBufferHandle) => void; bufferClearScissorRects: (buffer: OptimizedBufferHandle) => void; bufferPushOpacity: (buffer: OptimizedBufferHandle, opacity: number) => void; bufferPopOpacity: (buffer: OptimizedBufferHandle) => void; bufferGetCurrentOpacity: (buffer: OptimizedBufferHandle) => number; bufferClearOpacity: (buffer: OptimizedBufferHandle) => void; textBufferAddHighlightByCharRange: (buffer: TextBufferHandle, highlight: Highlight) => void; textBufferAddHighlight: (buffer: TextBufferHandle, lineIdx: number, highlight: Highlight) => void; textBufferRemoveHighlightsByRef: (buffer: TextBufferHandle, hlRef: number) => void; textBufferClearLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => void; textBufferClearAllHighlights: (buffer: TextBufferHandle) => void; textBufferSetSyntaxStyle: (buffer: TextBufferHandle, style: SyntaxStyleHandle | null) => boolean; textBufferGetLineHighlights: (buffer: TextBufferHandle, lineIdx: number) => Array<Highlight>; textBufferGetHighlightCount: (buffer: TextBufferHandle) => number; getArenaAllocatedBytes: () => number; getBuildOptions: () => BuildOptions; getAllocatorStats: () => AllocatorStats; createSyntaxStyle: () => SyntaxStyleHandle; destroySyntaxStyle: (style: SyntaxStyleHandle) => void; syntaxStyleRegister: (style: SyntaxStyleHandle, name: string, fg: RGBA | null, bg: RGBA | null, attributes: number) => number; syntaxStyleResolveByName: (style: SyntaxStyleHandle, name: string) => number | null; syntaxStyleGetStyleCount: (style: SyntaxStyleHandle) => number; imageInfo: (data: Uint8Array) => { status: number; info: NativeImageInfo; }; imageRetainIccCache: () => void; imageReleaseIccCache: () => void; imageTestFailIccProfileCopyAllocationOnce: () => void; imageDecode: (data: Uint8Array) => { status: number; handle: ImageHandle | null; }; imageCreateFromRgba: (pixels: Uint8Array, width: number, height: number, stride: number) => { status: number; handle: ImageHandle | null; }; imageDestroy: (image: ImageHandle) => void; imageRetain: (image: ImageHandle) => { status: number; handle: ImageHandle | null; }; imageGetInfo: (image: ImageHandle) => { status: number; info: NativeImageInfo; }; imageMaterialize: (image: ImageHandle) => number; imageEnsureEncodedPng: (image: ImageHandle) => number; imageGetPixelsPtr: (image: ImageHandle) => Pointer | null; imageClone: (image: ImageHandle) => { status: number; handle: ImageHandle | null; }; imageCopyPixels: (image: ImageHandle, destination: Uint8Array, stride: number, bgra: boolean) => number; imageResize: (image: ImageHandle, width: number, height: number, filter: number) => { status: number; handle: ImageHandle | null; }; imageExtract: (image: ImageHandle, left: number, top: number, width: number, height: number) => { status: number; handle: ImageHandle | null; }; imageExtend: (image: ImageHandle, top: number, right: number, bottom: number, left: number, background: Uint8Array) => { status: number; handle: ImageHandle | null; }; imageTransform: (image: ImageHandle, operation: number) => { status: number; handle: ImageHandle | null; }; imageComposite: (base: ImageHandle, overlay: ImageHandle, left: number, top: number, blend: number, opacity: number) => { status: number; handle: ImageHandle | null; }; getTerminalCapabilities: (renderer: RendererHandle) => TerminalCapabilities; processCapabilityResponse: (renderer: RendererHandle, response: string) => void; encodeUnicode: (text: string, widthMethod: WidthMethod) => { ptr: Pointer; data: Array<{ width: number; char: number; }>; } | null; freeUnicode: (encoded: { ptr: Pointer; data: Array<{ width: number; char: number; }>; }) => void; bufferDrawChar: (buffer: OptimizedBufferHandle, char: number, x: number, y: number, fg: RGBA, bg: RGBA, attributes?: number) => void; registerNativeSpanFeedStream: (stream: Pointer, handler: NativeSpanFeedEventHandler) => void; unregisterNativeSpanFeedStream: (stream: Pointer) => void; createNativeSpanFeed: (options?: NativeSpanFeedOptions | null) => Pointer; attachNativeSpanFeed: (stream: Pointer) => number; destroyNativeSpanFeed: (stream: Pointer) => void; streamWrite: (stream: Pointer, data: Uint8Array | string) => number; streamCommit: (stream: Pointer) => number; streamDrainSpans: (stream: Pointer, outBuffer: Uint8Array, maxSpans: number) => number; streamClose: (stream: Pointer) => number; streamSetOptions: (stream: Pointer, options: NativeSpanFeedOptions) => number; streamGetStats: (stream: Pointer) => NativeSpanFeedStats | null; streamReserve: (stream: Pointer, minLen: number) => { status: number; info: ReserveInfo | null; }; streamCommitReserved: (stream: Pointer, length: number) => number; createNativeRenderable: () => NativeRenderableHandle; destroyNativeRenderable: (handle: NativeRenderableHandle) => void; nativeRenderableAttachYogaNode: (handle: NativeRenderableHandle, node: Pointer) => boolean; nativeRenderableSetMeasureTarget: (handle: NativeRenderableHandle, kind: NativeMeasureTargetKind, target: NativeMeasureTargetHandle | 0) => boolean; createEmbeddedTerminal: (options: { cols: number; rows: number; maxScrollback?: number; }) => EmbeddedTerminalHandle; destroyEmbeddedTerminal: (handle: EmbeddedTerminalHandle) => void; embeddedTerminalWrite: (handle: EmbeddedTerminalHandle, data: string | Uint8Array) => void; embeddedTerminalResize: (handle: EmbeddedTerminalHandle, cols: number, rows: number) => void; embeddedTerminalInvalidate: (handle: EmbeddedTerminalHandle) => void; embeddedTerminalScroll: (handle: EmbeddedTerminalHandle, delta: number) => void; embeddedTerminalSetSelection: (handle: EmbeddedTerminalHandle, start: { x: number; y: number; }, end: { x: number; y: number; }) => void; embeddedTerminalClearSelection: (handle: EmbeddedTerminalHandle) => void; embeddedTerminalGetSelectedText: (handle: EmbeddedTerminalHandle) => Uint8Array; embeddedTerminalCompose: (handle: EmbeddedTerminalHandle, target: OptimizedBufferHandle, x: number, y: number) => void; embeddedTerminalCursor: (handle: EmbeddedTerminalHandle) => EmbeddedTerminalCursor; embeddedTerminalEncodeKey: (handle: EmbeddedTerminalHandle, key: EmbeddedTerminalKey) => Uint8Array; embeddedTerminalEncodeMouse: (handle: EmbeddedTerminalHandle, mouse: EmbeddedTerminalMouse) => Uint8Array; embeddedTerminalEncodePaste: (handle: EmbeddedTerminalHandle, input: Uint8Array) => Uint8Array; embeddedTerminalEncodeFocus: (handle: EmbeddedTerminalHandle, focused: boolean) => Uint8Array; embeddedTerminalDrainResponses: (handle: EmbeddedTerminalHandle) => Uint8Array; onNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void; onceNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void; offNativeEvent: (name: string, handler: (data: ArrayBuffer) => void) => void; onAnyNativeEvent: (handler: (name: string, data: ArrayBuffer) => void) => void; } export declare function setRenderLibPath(libPath: string): void; export declare function resolveRenderLib(): RenderLib;