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, controlOutput?: 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;
    };
    imageCreateFromPixels: (pixels: Uint8Array, width: number, height: number, stride: number, format: number, alpha: number) => {
        status: number;
        handle: ImageHandle | null;
    };
    imageUpdatePixels: (image: ImageHandle, pixels: Uint8Array, stride: number, format: number, alpha: number) => number;
    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;
    setKittyImageTransport: (renderer: RendererHandle, mode: number) => boolean;
    getKittyImageTransport: (renderer: RendererHandle) => Uint32Array;
    pollKittyImageTransport: (renderer: RendererHandle) => boolean;
    cancelKittyImageTransport: (renderer: RendererHandle, failed: boolean) => void;
    processKittyImageReply: (renderer: RendererHandle, response: string) => number;
    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;
