import "../_dnt.polyfills.js";
import * as t from "../types.js";
import type { Effect } from "../gen/typegraph_core";
import { type Materializer, Runtime } from "./mod.js";
export declare class WasmRuntime extends Runtime {
    /** create reflected wasm runtime */
    static reflected(modulePath: string): WasmRuntimeReflected;
    /** create a wasm runtime using the wire protocol */
    static wire(modulePath: string): WasmRuntimeWire;
}
interface ReflectedFuncWasmMat extends Materializer {
    funcName: string;
    effect: Effect;
}
interface WireHandlerWasmMat extends Materializer {
    funcName: string;
    effect: Effect;
}
declare class WasmRuntimeWire extends WasmRuntime {
    constructor(artifactPath: string);
    handler<I extends t.Typedef = t.Typedef, O extends t.Typedef = t.Typedef>(inp: I, out: O, { name, effect, }: {
        name: string;
        effect?: Effect;
    }): t.Func<I, O, WireHandlerWasmMat>;
}
declare class WasmRuntimeReflected extends WasmRuntime {
    constructor(artifactPath: string);
    export<I extends t.Typedef = t.Typedef, O extends t.Typedef = t.Typedef>(inp: I, out: O, { name, effect, }: {
        name: string;
        effect?: Effect;
    }): t.Func<I, O, ReflectedFuncWasmMat>;
}
export {};
