/** * WASM module loader + minimal WASI reactor shim. * * Our .wasm modules are built as `wasm32-wasi -mexec-model=reactor`. This * means they (a) export their full ABI under default names, (b) expect a * `_initialize` call after instantiation, and (c) import a handful of WASI * preview1 functions even though our code paths don't actually use them * (libc startup pulls in a few stubs). * * The shim below implements just enough WASI to keep the imports resolved. * Real WASI operations (fd_write, random_get) are stubbed with safe * defaults — the codec paths don't hit them in practice, but if a future * upstream lib starts logging to stderr we'll see "fd_write: not * implemented" instead of a cryptic trap. * * If we ever need actual WASI (e.g. for `wasi:filesystem`), swap this for * @bjorn3/browser_wasi_shim or @cloudflare/workers-types. */ import { type AlgorithmName } from "./types.js"; export interface WasmExports { readonly memory: WebAssembly.Memory; readonly _initialize: () => void; readonly cu_alloc: (bytes: number) => number; readonly cu_free: (ptr: number) => void; readonly cu_version: () => number; readonly cu_algorithm_available: (algo: number) => number; readonly cu_last_error: () => number; readonly cu_strerror: (code: number) => number; readonly cu_compress_bound: (in_len: number, algo: number) => number; readonly cu_compress: (algo: number, in_ptr: number, in_len: number, out_ptr: number, out_len_ptr: number, level: number) => number; readonly cu_decompress: (algo: number, in_ptr: number, in_len: number, out_ptr: number, out_len_ptr: number) => number; readonly cu_decompress_size_hint: (algo: number, in_ptr: number, in_len: number, out_size_ptr: number) => number; readonly cu_compress_stream_create: (algo: number, level: number, out_stream_pp: number) => number; readonly cu_compress_stream_write: (stream: number, in_ptr: number, in_len: number, out_ptr: number, out_len_ptr: number) => number; readonly cu_compress_stream_finish: (stream: number, out_ptr: number, out_len_ptr: number) => number; readonly cu_compress_stream_destroy: (stream: number) => void; readonly cu_decompress_stream_create: (algo: number, out_stream_pp: number) => number; readonly cu_decompress_stream_write: (stream: number, in_ptr: number, in_len: number, out_ptr: number, out_len_ptr: number) => number; readonly cu_decompress_stream_finish: (stream: number, out_ptr: number, out_len_ptr: number) => number; readonly cu_decompress_stream_destroy: (stream: number) => void; readonly cu_set_max_decompressed_size?: (bytes: number) => void; } export declare function loadModule(source: BufferSource | Response | PromiseLike): Promise; export declare function decodeCString(memory: WebAssembly.Memory, ptr: number, maxLen?: number): string; /** Convert a non-Ok status into a thrown CompressError using the C side's message. */ export declare function checkStatus(exports: WasmExports, status: number, algorithm: AlgorithmName): void; //# sourceMappingURL=loader.d.ts.map