import { IEmscriptenWrapper } from "./i-emscripten-wrapper.js";
import { Emscripten, IWebAssemblyMemoryMemory } from "../../external/emscripten.js";
import type { ILifecycleStrategy } from "./i-lifecycle-strategy.js";
import type { IJsUtilBindings } from "../i-js-util-bindings.js";
/**
 * @public
 * Factory for creating wrapped emscripten module.
 */
export declare function getEmscriptenWrapper<TExt extends object, TMod extends IJsUtilBindings, TLifeStrategy extends ILifecycleStrategy>(memory: IWebAssemblyMemoryMemory, emscriptenModuleFactory: Emscripten.EmscriptenModuleFactory<TMod>, lifecycleStrategy: TLifeStrategy, options: EmscriptenWrapperOptions<TExt>, extension?: Partial<TExt>): Promise<IEmscriptenWrapper<TExt & TMod, TLifeStrategy>>;
/**
 * @public
 */
export declare class EmscriptenWrapperOptions<TModule extends object> {
    readonly initializeCallbacks: readonly ((wrapper: IEmscriptenWrapper<TModule, ILifecycleStrategy>) => void)[];
    constructor(initializeCallbacks: readonly ((wrapper: IEmscriptenWrapper<TModule, ILifecycleStrategy>) => void)[]);
    extend<TExtModule extends object>(options: EmscriptenWrapperOptions<TExtModule>): EmscriptenWrapperOptions<TModule & TExtModule>;
}
//# sourceMappingURL=get-emscripten-wrapper.d.ts.map