export type Type = number; export type ExpressionRef = number; /** WASM i32 value type */ export declare const i32: Type; /** WASM i64 value type */ export declare const i64: Type; /** WASM f64 value type */ export declare const f64: Type; /** WASM void / empty block type */ export declare const none: Type; /** Pack multiple types into a single Type handle (for function params). */ export declare function createType(types: Type[]): Type; export interface MemorySegment { offset: ExpressionRef; data: Uint8Array; passive: boolean; } export declare class Module { private nodes; private functions; private imports; private exports; private globals; private table; private elemSegments; private memory; private memoryImport; private addNode; readonly i32: { const: (value: number) => ExpressionRef; add: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; sub: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; mul: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; div_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; rem_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; eq: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ne: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; lt_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; gt_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; le_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ge_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ge_u: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; and: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; or: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; eqz: (a: ExpressionRef) => ExpressionRef; load: (offset: number, align: number, ptr: ExpressionRef) => ExpressionRef; store: (offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef) => ExpressionRef; load8_u: (offset: number, align: number, ptr: ExpressionRef) => ExpressionRef; store8: (offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef) => ExpressionRef; }; readonly i64: { const: (low: number, high: number) => ExpressionRef; add: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; sub: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; mul: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; div_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; rem_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; eq: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ne: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; lt_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; gt_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; le_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ge_s: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; }; readonly f64: { const: (value: number) => ExpressionRef; add: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; sub: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; mul: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; div: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; eq: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ne: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; lt: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; gt: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; le: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; ge: (a: ExpressionRef, b: ExpressionRef) => ExpressionRef; neg: (a: ExpressionRef) => ExpressionRef; convert_s: { i32: (a: ExpressionRef) => ExpressionRef; }; load: (offset: number, align: number, ptr: ExpressionRef) => ExpressionRef; store: (offset: number, align: number, ptr: ExpressionRef, value: ExpressionRef) => ExpressionRef; }; readonly local: { get: (index: number, type: Type) => ExpressionRef; set: (index: number, value: ExpressionRef) => ExpressionRef; }; readonly global: { get: (name: string, type: Type) => ExpressionRef; set: (name: string, value: ExpressionRef) => ExpressionRef; }; block(label: string | null, children: ExpressionRef[], type: Type): ExpressionRef; if(condition: ExpressionRef, ifTrue: ExpressionRef, ifFalse?: ExpressionRef): ExpressionRef; /** Infer the result type of an expression (for if block type inference). */ private inferExprType; loop(label: string, body: ExpressionRef): ExpressionRef; br(label: string, condition?: ExpressionRef): ExpressionRef; call(name: string, args: ExpressionRef[], returnType: Type): ExpressionRef; call_indirect(table: string, target: ExpressionRef, args: ExpressionRef[], paramType: Type, resultType: Type): ExpressionRef; nop(): ExpressionRef; drop(expr: ExpressionRef): ExpressionRef; unreachable(): ExpressionRef; setMemory(initial: number, max: number, exportName: string, segments?: MemorySegment[]): void; addGlobal(name: string, type: Type, mutable: boolean, init: ExpressionRef): void; addFunction(name: string, paramType: Type, resultType: Type, vars: Type[], body: ExpressionRef): void; addFunctionImport(name: string, module: string, base: string, paramType: Type, resultType: Type): void; addFunctionExport(name: string, externalName: string): void; addMemoryImport(name: string, module: string, base: string): void; addMemoryExport(_name: string, externalName: string): void; addTable(name: string, initial: number, max: number): void; addActiveElementSegment(table: string, name: string, funcs: string[], offset: ExpressionRef): void; validate(): boolean; optimize(): void; dispose(): void; emitBinary(): Uint8Array; private emitConstExpr; private emitExpr; private resolveLabelDepth; emitText(): string; private collectTypeSigs; private watExpr; } //# sourceMappingURL=wasm-encoder.d.ts.map