import { QuickJSAsyncContext } from "./context-asyncify"; import { QuickJSAsyncEmscriptenModule } from "./emscripten-types"; import { QuickJSAsyncFFI } from "./variants"; import { ModuleEvalOptions, QuickJSWASMModule } from "./module"; import { QuickJSAsyncRuntime } from "./runtime-asyncify"; import { AsyncRuntimeOptions, ContextOptions } from "./types"; /** * Asyncified version of [[QuickJSWASMModule]]. * * Due to limitations of Emscripten's ASYNCIFY process, only a single async * function call can happen at a time across the entire WebAssembly module. * * That means that all runtimes, contexts, functions, etc created inside this * WebAssembly are limited to a single concurrent async action. * **Multiple concurrent async actions is an error.** * * To allow for multiple concurrent async actions, you must create multiple WebAssembly * modules. */ export declare class QuickJSAsyncWASMModule extends QuickJSWASMModule { /** @private */ protected ffi: QuickJSAsyncFFI; /** @private */ protected module: QuickJSAsyncEmscriptenModule; /** @private */ constructor(module: QuickJSAsyncEmscriptenModule, ffi: QuickJSAsyncFFI); /** * Create a new async runtime inside this WebAssembly module. All runtimes inside a * module are limited to a single async call at a time. For multiple * concurrent async actions, create multiple WebAssembly modules. */ newRuntime(options?: AsyncRuntimeOptions): QuickJSAsyncRuntime; /** * A simplified API to create a new [[QuickJSRuntime]] and a * [[QuickJSContext]] inside that runtime at the same time. The runtime will * be disposed when the context is disposed. */ newContext(options?: ContextOptions): QuickJSAsyncContext; /** Synchronous evalCode is not supported. */ evalCode(): never; /** * One-off evaluate code without needing to create a [[QuickJSRuntimeAsync]] or * [[QuickJSContextSync]] explicitly. * * This version allows for asynchronous Ecmascript module loading. * * Note that only a single async action can occur at a time inside the entire WebAssembly module. * **Multiple concurrent async actions is an error.** * * See the documentation for [[QuickJSWASMModule.evalCode]] for more details. */ evalCodeAsync(code: string, options: ModuleEvalOptions): Promise<unknown>; }