import RAL from './ral'; export declare class ComponentModelTrap extends Error { constructor(message: string); } export declare enum Alignment { byte = 1, halfWord = 2, word = 4, doubleWord = 8 } export declare namespace Alignment { function align(ptr: ptr, alignment: Alignment): size; function getAlignment(ptr: ptr): Alignment; } export interface Memory { readonly id: string; readonly buffer: ArrayBuffer; alloc(align: Alignment, size: size): MemoryRange; realloc(range: MemoryRange, align: Alignment, newSize: size): MemoryRange; preAllocated(ptr: ptr, size: size): MemoryRange; readonly(ptr: ptr, size: size): ReadonlyMemoryRange; free?(range: MemoryRange): void; } export declare class MemoryError extends ComponentModelTrap { constructor(message: string); } type ArrayClazz & { set(array: ArrayLike, offset?: number): void; }> = { new (buffer: ArrayBuffer, byteOffset: number, length: number): T; new (length: number): T; BYTES_PER_ELEMENT: number; }; type BigArrayClazz & { set(array: ArrayLike, offset?: number): void; }> = { new (buffer: ArrayBuffer, byteOffset: number, length: number): T; new (length: number): T; BYTES_PER_ELEMENT: number; }; export type offset<_T = undefined> = u32; export declare abstract class BaseMemoryRange { protected readonly _memory: Memory; private readonly _ptr; private readonly _size; private readonly _alignment; private _view; protected constructor(memory: Memory, ptr: ptr, size: size); get memory(): Memory; get ptr(): ptr; get size(): size; get alignment(): Alignment; protected get view(): DataView; getUint8(offset: offset): u8; getInt8(offset: offset): s8; getUint16(offset: offset): u16; getInt16(offset: offset): s16; getUint32(offset: offset): u32; getInt32(offset: offset): s32; getUint64(offset: offset): u64; getInt64(offset: offset): s64; getFloat32(offset: offset): f32; getFloat64(offset: offset): f64; getPtr(offset: offset): ptr; getUint8Array(offset: offset, length?: size | undefined): Uint8Array; getInt8Array(offset: offset, length?: size | undefined): Int8Array; getUint16Array(byteOffset: offset, length?: size | undefined): Uint16Array; getInt16Array(byteOffset: offset, length?: size | undefined): Int16Array; getUint32Array(byteOffset: offset, length?: size | undefined): Uint32Array; getInt32Array(byteOffset: offset, length?: size | undefined): Int32Array; getUint64Array(byteOffset: offset, length?: size | undefined): BigUint64Array; getInt64Array(byteOffset: offset, length?: size | undefined): BigInt64Array; getFloat32Array(byteOffset: offset, length?: size | undefined): Float32Array; getFloat64Array(byteOffset: offset, length?: size | undefined): Float64Array; copyBytes(offset: offset, length: size, into: MemoryRange, into_offset: size): void; assertAlignment(offset: offset, alignment: Alignment): void; getArray & { set(array: ArrayLike, offset?: number): void; }>(byteOffset: offset, length: size | undefined, clazz: ArrayClazz): T; getBigArray & { set(array: ArrayLike, offset?: number): void; }>(byteOffset: offset, length: size | undefined, clazz: BigArrayClazz): T; } export declare class ReadonlyMemoryRange extends BaseMemoryRange { constructor(memory: Memory, ptr: ptr, size: size); range(offset: offset, size: size): ReadonlyMemoryRange; } export declare class MemoryRange extends BaseMemoryRange { readonly isAllocated: boolean; constructor(memory: Memory, ptr: ptr, size: size, isPreallocated?: boolean); free(): void; range(offset: offset, size: size): MemoryRange; setUint8(offset: offset, value: u8): void; setInt8(offset: offset, value: s8): void; setUint16(offset: offset, value: u16): void; setInt16(offset: offset, value: s16): void; setUint32(offset: offset, value: u32): void; setInt32(offset: offset, value: s32): void; setUint64(offset: offset, value: u64): void; setInt64(offset: offset, value: s64): void; setFloat32(offset: offset, value: f32): void; setFloat64(offset: offset, value: f64): void; setPtr(offset: offset, value: ptr): void; getUint8View(offset: offset, length?: size | undefined): Uint8Array; getInt8View(offset: offset, length?: size | undefined): Int8Array; getUint16View(offset: offset, length?: size | undefined): Uint16Array; getInt16View(offset: offset, length?: size | undefined): Int16Array; getUint32View(offset: offset, length?: size | undefined): Uint32Array; getInt32View(offset: offset, length?: size | undefined): Int32Array; getUint64View(offset: offset, length?: size | undefined): BigUint64Array; getInt64View(offset: offset, length?: size | undefined): BigInt64Array; getFloat32View(offset: offset, length?: size | undefined): Float32Array; getFloat64View(offset: offset, length?: size | undefined): Float64Array; setUint8Array(offset: offset, bytes: Uint8Array): void; setInt8Array(offset: offset, bytes: Int8Array): void; setUint16Array(offset: offset, bytes: Uint16Array): void; setInt16Array(offset: offset, bytes: Int16Array): void; setUint32Array(offset: offset, bytes: Uint32Array): void; setInt32Array(offset: offset, bytes: Int32Array): void; setUint64Array(offset: offset, bytes: BigUint64Array): void; setInt64Array(offset: offset, bytes: BigInt64Array): void; setFloat32Array(offset: offset, bytes: Float32Array): void; setFloat64Array(offset: offset, bytes: Float64Array): void; private getArrayView; private getBigArrayView; private setArray; private setBigArray; } /** * A memory of size 0. Doesn't allow any kind of operation on it. */ declare class NullMemory implements Memory { readonly id: string; readonly buffer: ArrayBuffer; alloc(): MemoryRange; realloc(): MemoryRange; preAllocated(): MemoryRange; readonly(): ReadonlyMemoryRange; free(): void; } export type MemoryExports = { memory: { buffer: ArrayBuffer; }; cabi_realloc: (orig: ptr, orig_size: size, orig_align: size, new_size: size) => ptr; }; export declare namespace Memory { const Null: NullMemory; class Default implements Memory { readonly id: string; private readonly memory; private readonly cabi_realloc; constructor(exports: Record, id?: string); get buffer(): ArrayBuffer; alloc(align: Alignment, size: number): MemoryRange; realloc(range: MemoryRange, newSize: size): MemoryRange; preAllocated(ptr: ptr, size: size): MemoryRange; readonly(ptr: ptr, size: size): ReadonlyMemoryRange; } } export type Encodings = 'utf-8' | 'utf-16' | 'latin1+utf-16'; export interface Options { encoding: Encodings; keepOption?: boolean; } export declare namespace Options { function is(value: any): value is Options; } export declare enum FlatTypeKind { i32 = "i32", i64 = "i64", f32 = "f32", f64 = "f64" } export interface FlatType { readonly kind: FlatTypeKind; readonly size: size; readonly alignment: Alignment; load(memory: ReadonlyMemoryRange, offset: offset): F; store(memory: MemoryRange, offset: offset, value: F): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; } export type i32 = number; export declare const i32: FlatType; export type i64 = bigint; export declare const i64: FlatType; export type f32 = number; export declare const f32: FlatType; export type f64 = number; export declare const f64: FlatType; export type WasmType = i32 | i64 | f32 | f64; type GenericFlatType = FlatType; export declare class FlatTuple { private readonly types; readonly alignment: Alignment; readonly size: size; constructor(types: readonly GenericFlatType[]); load(memory: ReadonlyMemoryRange, offset: size): readonly WasmType[]; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: size, values: readonly WasmType[]): void; copy(dest: MemoryRange, dest_offset: size, src: ReadonlyMemoryRange, src_offset: size): void; private static alignment; private static size; } export type FlatValuesIter = Iterator; export declare enum ComponentModelTypeKind { bool = "bool", u8 = "u8", u16 = "u16", u32 = "u32", u64 = "u64", s8 = "s8", s16 = "s16", s32 = "s32", s64 = "s64", float32 = "float32", float64 = "float64", char = "char", string = "string", list = "list", record = "record", tuple = "tuple", variant = "variant", enum = "enum", flags = "flags", option = "option", result = "result", resource = "resource", resourceHandle = "resourceHandle", borrow = "borrow", own = "own" } export interface ComponentModelContext { readonly options: Options; readonly resources: ResourceManagers; } export declare namespace ComponentModelContext { function is(value: any): value is ComponentModelContext; } export interface ComponentModelType { readonly kind: ComponentModelTypeKind; readonly size: number; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): J; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): J; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: J, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, value: J, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; } export type AnyComponentModelType = ComponentModelType; export declare class ResultError extends Error { readonly cause: V; constructor(message: string, cause: V); } interface ResultErrorConstructor { new (value: V): ResultError; } export type bool = number; export declare namespace bool { const kind: ComponentModelTypeKind; const size: number; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset): boolean; function liftFlat(_memory: Memory, values: FlatValuesIter): boolean; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: boolean): void; function lowerFlat(result: WasmType[], _memory: Memory, value: boolean): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: boolean); } } export type u8 = number; export declare namespace u8 { const kind: ComponentModelTypeKind; const size = 1; const alignment: Alignment; const flatTypes: ReadonlyArray; const LOW_VALUE = 0; const HIGH_VALUE = 255; function load(memory: ReadonlyMemoryRange, offset: offset): u8; function liftFlat(_memory: Memory, values: FlatValuesIter): u8; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: u8): void; function lowerFlat(result: WasmType[], _memory: Memory, value: u8): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: u8); } } export type u16 = number; export declare namespace u16 { const kind: ComponentModelTypeKind; const size = 2; const alignment: Alignment; const flatTypes: ReadonlyArray; const LOW_VALUE = 0; const HIGH_VALUE = 65535; function load(memory: ReadonlyMemoryRange, offset: offset): u16; function liftFlat(_memory: Memory, values: FlatValuesIter): u16; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: u16): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: u16); } } export type u32 = number; export declare namespace u32 { const kind: ComponentModelTypeKind; const size = 4; const alignment: Alignment; const flatTypes: ReadonlyArray; const LOW_VALUE = 0; const HIGH_VALUE = 4294967295; function valid(value: u32): boolean; function load(memory: ReadonlyMemoryRange, offset: offset): u32; function liftFlat(_memory: Memory, values: FlatValuesIter): u32; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: u32): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: u32); } } export type u64 = bigint; export declare namespace u64 { const kind: ComponentModelTypeKind; const size = 8; const alignment: Alignment; const flatTypes: ReadonlyArray; const LOW_VALUE = 0n; const HIGH_VALUE = 18446744073709551615n; function load(memory: ReadonlyMemoryRange, offset: offset): u64; function liftFlat(_memory: Memory, values: FlatValuesIter): u64; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: u64): void; function lowerFlat(result: WasmType[], _memory: Memory, value: bigint): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: u64); } } export type s8 = number; export declare namespace s8 { const kind: ComponentModelTypeKind; const size = 1; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset): s8; function liftFlat(_memory: Memory, values: FlatValuesIter): s8; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: s8): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: s8); } } export type s16 = number; export declare namespace s16 { const kind: ComponentModelTypeKind; const size = 2; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset<16>): s16; function liftFlat(_memory: Memory, values: FlatValuesIter): s16; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: s16): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: s16); } } export type s32 = number; export declare namespace s32 { const kind: ComponentModelTypeKind; const size = 4; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset<32>): s32; function liftFlat(_memory: Memory, values: FlatValuesIter): s32; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset<32>, value: s32): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: s32); } } export type s64 = bigint; export declare namespace s64 { const kind: ComponentModelTypeKind; const size = 8; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset): s64; function liftFlat(_memory: Memory, values: FlatValuesIter): s64; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: s64): void; function lowerFlat(result: WasmType[], _memory: Memory, value: bigint): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: s64); } } export type float32 = number; export declare namespace float32 { const kind: ComponentModelTypeKind; const size = 4; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset): float32; function liftFlat(_memory: Memory, values: FlatValuesIter): float32; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: float32): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: float32); } } export type float64 = number; export declare namespace float64 { const kind: ComponentModelTypeKind; const size = 8; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset): float64; function liftFlat(_memory: Memory, values: FlatValuesIter): float64; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: float64): void; function lowerFlat(result: WasmType[], _memory: Memory, value: number): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(cause: float64); } } export type byte = u8; export declare const byte: ComponentModelType; export type size = u32; export declare const size: ComponentModelType; export type ptr<_type = ArrayBuffer> = u32; export declare const ptr: ComponentModelType; export declare namespace char { const kind: ComponentModelTypeKind; const size = 4; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memory: ReadonlyMemoryRange, offset: offset, _context: ComponentModelContext): string; function liftFlat(memory: Memory, values: FlatValuesIter, _context: ComponentModelContext): string; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset, value: string, _context: ComponentModelContext): void; function lowerFlat(result: WasmType[], memory: Memory, value: string, _context: ComponentModelContext): void; function copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; function copyFlat(result: WasmType[], _dest: Memory, values: FlatValuesIter, _src: Memory): void; class Error extends ResultError { constructor(value: string); } } export declare namespace wstring { const kind: ComponentModelTypeKind; const size = 8; const alignment: Alignment; const flatTypes: ReadonlyArray; function load(memRange: ReadonlyMemoryRange, offset: offset<[u32, u32]>, context: ComponentModelContext): string; function liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): string; function alloc(memory: Memory): MemoryRange; function store(memory: MemoryRange, offset: offset<[u32, u32]>, str: string, context: ComponentModelContext): void; function lowerFlat(result: WasmType[], memory: Memory, str: string, context: ComponentModelContext): void; function copy(dest: MemoryRange, dest_offset: offset<[u32, u32]>, src: ReadonlyMemoryRange, src_offset: offset<[u32, u32]>, context: ComponentModelContext): void; function copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; function getAlignmentAndByteLength(codeUnits: u32, options: Options): [Alignment, number]; class Error extends ResultError { constructor(value: string); } } export type JArray = JType[]; export declare class ListType implements ComponentModelType { private static readonly offsets; readonly elementType: ComponentModelType; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; constructor(elementType: ComponentModelType); load(memRange: ReadonlyMemoryRange, offset: offset<[u32, u32]>, context: ComponentModelContext): T[]; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T[]; alloc(memory: Memory): MemoryRange; store(memRange: MemoryRange, offset: offset<[u32, u32]>, values: T[], context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, values: T[], context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset<[u32, u32]>, src: ReadonlyMemoryRange, src_offset: offset<[u32, u32]>): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, _context: ComponentModelContext): void; private loadFromRange; private storeIntoRange; } export declare namespace list { class Error extends ResultError { constructor(cause: JType[]); } } declare abstract class TypeArrayType implements ComponentModelType { private static readonly offsets; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; protected readonly elementType: ComponentModelType; constructor(elementType: ComponentModelType); load(memRange: ReadonlyMemoryRange, offset: offset): T; liftFlat(memory: Memory, values: FlatValuesIter): T; alloc(memory: Memory): MemoryRange; store(memRange: MemoryRange, offset: offset, value: T): void; lowerFlat(result: WasmType[], memory: Memory, value: T): void; copy(dest: MemoryRange, dest_offset: ptr, src: ReadonlyMemoryRange, src_offset: ptr): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, _context: ComponentModelContext): void; protected abstract loadFromRange(memory: ReadonlyMemoryRange, length: number): T; protected abstract storeIntoRange(memory: MemoryRange, value: T): void; } export declare class Int8ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Int8Array; protected storeIntoRange(memory: MemoryRange, value: Int8Array): void; } export declare namespace Int8ArrayType { class Error extends ResultError { constructor(cause: Int8Array); } } export declare class Int16ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Int16Array; protected storeIntoRange(memory: MemoryRange, value: Int16Array): void; } export declare namespace Int16ArrayType { class Error extends ResultError { constructor(cause: Int16Array); } } export declare class Int32ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Int32Array; protected storeIntoRange(memory: MemoryRange, value: Int32Array): void; } export declare namespace Int32ArrayType { class Error extends ResultError { constructor(cause: Int32Array); } } export declare class BigInt64ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): BigInt64Array; protected storeIntoRange(memory: MemoryRange, value: BigInt64Array): void; } export declare namespace BigInt64ArrayType { class Error extends ResultError { constructor(cause: BigInt64Array); } } export declare class Uint8ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Uint8Array; protected storeIntoRange(memory: MemoryRange, value: Uint8Array): void; } export declare namespace Uint8ArrayType { class Error extends ResultError { constructor(cause: Uint8Array); } } export declare class Uint16ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Uint16Array; protected storeIntoRange(memory: MemoryRange, value: Uint16Array): void; } export declare namespace Uint16ArrayType { class Error extends ResultError { constructor(cause: Uint16Array); } } export declare class Uint32ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Uint32Array; protected storeIntoRange(memory: MemoryRange, value: Uint32Array): void; } export declare namespace Uint32ArrayType { class Error extends ResultError { constructor(cause: Uint32Array); } } export declare class BigUint64ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): BigUint64Array; protected storeIntoRange(memory: MemoryRange, value: BigUint64Array): void; } export declare namespace BigUint64ArrayType { class Error extends ResultError { constructor(cause: BigUint64Array); } } export declare class Float32ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Float32Array; protected storeIntoRange(memory: MemoryRange, value: Float32Array): void; } export declare namespace Float32ArrayType { class Error extends ResultError { constructor(cause: Float32Array); } } export declare class Float64ArrayType extends TypeArrayType { constructor(); protected loadFromRange(memory: ReadonlyMemoryRange, length: number): Float64Array; protected storeIntoRange(memory: MemoryRange, value: Float64Array): void; } export declare namespace Float64ArrayType { class Error extends ResultError { constructor(cause: Float64Array); } } interface TypedField { readonly type: AnyComponentModelType; } interface JRecord { [key: string]: JType | undefined; } type JTuple = JType[]; declare abstract class BaseRecordType implements ComponentModelType { fields: F[]; kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; constructor(fields: F[], kind: ComponentModelTypeKind.record | ComponentModelTypeKind.tuple); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, record: T, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, record: T, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; protected abstract create(fields: F[], values: JType[]): T; protected abstract elements(record: T, fields: F[]): JType[]; private static size; private static alignment; private static flatTypes; } interface RecordField extends TypedField { readonly name: string; } declare namespace RecordField { function create(name: string, type: AnyComponentModelType): RecordField; } export declare class RecordType extends BaseRecordType { constructor(fields: [string, AnyComponentModelType][]); protected create(fields: RecordField[], values: JType[]): T; protected elements(record: T, fields: RecordField[]): JType[]; } interface TupleField extends TypedField { } declare namespace TupleField { function create(type: AnyComponentModelType): TupleField; } export declare class TupleType extends BaseRecordType { constructor(fields: AnyComponentModelType[]); protected create(_fields: TupleField[], values: JType[]): T; protected elements(record: T, _fields: TupleField[]): JType[]; } export declare namespace tuple { class Error extends ResultError { constructor(cause: JType[]); } } export declare class FlagsType<_T> implements ComponentModelType { readonly type: AnyComponentModelType | undefined; private readonly arraySize; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; constructor(numberOfFlags: number); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): u32 | bigint; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): u32 | bigint; private loadFrom; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, flags: u32 | bigint, context: ComponentModelContext): void; lowerFlat(result: WasmType[], _memory: Memory, flags: u32 | bigint, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; private storeInto; private static size; private static alignment; private static getType; private static flatTypes; private static num32Flags; } interface VariantCase { readonly index: u32; readonly tag: string; readonly type: AnyComponentModelType | undefined; readonly wantFlatTypes: GenericFlatType[] | undefined; } declare namespace VariantCase { function create(index: number, tag: string, type: AnyComponentModelType | undefined): VariantCase; } interface JVariantCase { readonly tag: string; readonly value?: JType | undefined | void; } export declare class VariantType implements ComponentModelType { readonly cases: VariantCase[]; private readonly case2Index; private readonly ctor; private readonly discriminantType; private readonly maxCaseAlignment; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: ReadonlyArray; constructor(variants: [string, (AnyComponentModelType | undefined)][], ctor: (caseIndex: I, value: V) => T, kind?: ComponentModelTypeKind.variant | ComponentModelTypeKind.result); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, variantValue: T, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, variantValue: T, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; private static size; private static alignment; private static flatTypes; private static discriminantType; private static maxCaseAlignment; private static maxCaseSize; private static joinFlatType; } export type JEnum = string; export declare class EnumType implements ComponentModelType { private readonly discriminantType; private readonly cases; private readonly case2index; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: readonly GenericFlatType[]; constructor(cases: string[]); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: T, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, value: T, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; private assertRange; private static discriminantType; } export declare namespace option { export const none: "none"; export type None = { readonly tag: typeof none; } & _common; export function None(): None; export const some: "some"; export type Some = { readonly tag: typeof some; readonly value: T; } & _common; export function Some(value: T): Some; export type _tt = typeof none | typeof some; export type _vt = undefined | T; type _common = Omit, 'case' | 'value'>; export function _ctor(c: _tt, v: _vt): option; export function isOption(value: T | option): value is option; class OptionImpl { private readonly _tag; private readonly _value?; constructor(tag: typeof option.none | typeof option.some, value: undefined | T); get tag(): typeof option.none | typeof option.some; get value(): undefined | T; isNone(): this is None; isSome(): this is Some; } export class Error extends ResultError { constructor(cause: JType); } export {}; } export type option = option.None | option.Some; export declare class OptionType implements ComponentModelType | undefined> { readonly valueType: AnyComponentModelType; readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: readonly GenericFlatType[]; constructor(valueType: AnyComponentModelType); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T | option | undefined; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T | option | undefined; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: T | option | undefined, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, value: T | option | undefined, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; private asOptionValue; private computeSize; private computeAlignment; private computeFlatTypes; } export declare namespace result { export const ok: "ok"; export type Ok = { readonly tag: typeof ok; readonly value: O; } & _common; export function Ok(value: O): Ok; export const error: "error"; export type Error = { readonly tag: typeof error; readonly value: E; } & _common; export function Error(value: E): Error; export type _tt = typeof ok | typeof error; export type _vt = O | E; type _common = Omit, 'tag' | 'value'>; export function _ctor(c: _tt, v: _vt): result; export class ResultImpl implements JVariantCase { private readonly _tag; private readonly _value; constructor(tag: _tt, value: _vt); get tag(): _tt; get value(): _vt; isOk(): this is Ok; isError(): this is Error; } export {}; } export type result = result.Ok | result.Error; export declare class ResultType extends VariantType, 'ok' | 'error', O | E> { private readonly _errorClass; constructor(okType: AnyComponentModelType | undefined, errorType: AnyComponentModelType | undefined, errorClass?: ResultErrorConstructor); get errorClass(): ResultErrorConstructor | undefined; } export interface Resource { $handle(): ResourceHandle; } export declare namespace Resource { class Default implements Resource { private _handle; constructor(handle: ResourceHandle); constructor(manager: ResourceManager); $handle(): ResourceHandle; } function getRepresentation(resource: Resource & { $rep?(): ResourceRepresentation; }): ResourceRepresentation | undefined; } export type ResourceRepresentation = u32; export interface ResourceManager { /** [resource-new]${resource} */ newHandle(rep: ResourceRepresentation): ResourceHandle; /** [resource-rep]${resource} */ getRepresentation(handle: ResourceHandle): ResourceRepresentation; /** [resource-drop]${resource} */ dropHandle(handle: ResourceHandle): ResourceRepresentation; setProxyInfo(ctor: (new (handleTag: symbol, handle: ResourceHandle, rep: ResourceRepresentation) => T), dtor: (self: ResourceHandle) => void): void; hasResource(handle: ResourceHandle): boolean; getResource(handle: ResourceHandle): T; registerResource(resource: T, handle?: ResourceHandle): ResourceHandle; registerProxy(proxy: T): void; removeResource(value: ResourceHandle | T): void; registerLoop(handle: ResourceHandle): ResourceHandle; getLoop(rep: ResourceRepresentation): ResourceHandle; } export declare namespace ResourceManager { const handleTag: symbol; class Default implements ResourceManager { private handleCounter; private handleTable; private h2r; private finalizer; private ctor; private dtor; private representationCounter; private loopTable; constructor(); newHandle(rep: ResourceRepresentation): ResourceHandle; getRepresentation(handle: ResourceHandle): ResourceRepresentation; dropHandle(handle: ResourceHandle): ResourceRepresentation; setProxyInfo(ctor: (new (handleTag: symbol, handle: ResourceHandle, rep: ResourceRepresentation) => T), dtor: (self: ResourceHandle) => void): void; hasResource(handle: ResourceHandle): boolean; getResource(handle: ResourceHandle): T; registerResource(resource: T, handle?: ResourceHandle): ResourceHandle; registerProxy(proxy: T): void; removeResource(value: ResourceHandle | T): void; registerLoop(handle: ResourceHandle): ResourceHandle; getLoop(rep: ResourceRepresentation): ResourceHandle; private setProxy; } function from(obj: any | undefined): ResourceManager | undefined; } export interface ResourceManagers { has(id: string): boolean; set(id: string, manager: ResourceManager): void; ensure(id: string): ResourceManager; get(id: string): ResourceManager | undefined; } export declare namespace ResourceManagers { class Default implements ResourceManagers { private readonly managers; constructor(); has(id: string): boolean; set(id: string, manager: ResourceManager): void; ensure(id: string): ResourceManager; get(id: string): ResourceManager | undefined; } function is(value: any): value is ResourceManagers; } export type JType = number | bigint | string | boolean | JArray | JRecord | JVariantCase | JTuple | JEnum | Resource | option | undefined | void | result | Int8Array | Int16Array | Int32Array | BigInt64Array | Uint8Array | Uint16Array | Uint32Array | BigUint64Array | Float32Array | Float64Array; export type CallableParameter = [/* name */ string, /* type */ AnyComponentModelType]; export type JFunction = (...params: JType[]) => JType; export type JClass = { new (...params: JType[]): Resource; [key: string]: JFunction; }; export type JFunctionAsync = (...params: JType[]) => Promise | JType; export type JClassAsync = { $new(...params: JType[]): Promise; [key: string]: JFunctionAsync; }; export type WasmFunction = (...params: WasmType[]) => WasmType | void; export interface WorkerConnection { dispose(): void; getMemory(): Memory; on(id: string, callback: (memory: Memory, params: WasmType[]) => WasmType | void): void; prepareCall(): void; callMain(name: string, params: ReadonlyArray): WasmType | void; listen(): void; } export type Code = WebAssembly_.Module | { module: WebAssembly_.Module; memory?: WebAssembly_.Memory; }; export interface MainConnection { initialize(code: Code, options: Options): Promise; dispose(): void; getMemory(): Memory; on(id: string, callback: (memory: Memory, params: WasmType[]) => WasmType | void | Promise): void; prepareCall(): void; lock(thunk: () => Promise): Promise; callWorker(name: string, params: ReadonlyArray): Promise; listen(): void; } declare class Callable { private static readonly EMPTY_JTYPE; private static readonly EMPTY_WASM_TYPE; static readonly MAX_FLAT_PARAMS = 16; static readonly MAX_FLAT_RESULTS = 1; readonly witName: string; readonly params: CallableParameter[]; readonly returnType: AnyComponentModelType | undefined; readonly paramType: AnyComponentModelType | undefined; protected readonly isSingleParam: boolean; protected readonly mode: 'lift' | 'lower'; constructor(witName: string, params: CallableParameter[], returnType?: AnyComponentModelType); protected liftParamValues(wasmValues: WasmType[], memory: Memory, context: ComponentModelContext): ReadonlyArray; protected lowerParamValues(values: JType[], memory: Memory, context: ComponentModelContext): ReadonlyArray; protected copyParamValues(result: WasmType[], dest: Memory, wasmValues: WasmType[], src: Memory, context: ComponentModelContext): { originalResult: MemoryRange; transferResult: MemoryRange; } | undefined; protected lowerReturnValue(value: JType | void, memory: Memory, context: ComponentModelContext, out: ptr | undefined): WasmType | void; protected handleError(error: any, memory: Memory, context: ComponentModelContext, out: ptr | undefined): WasmType | void; protected copyReturnValue(resultStorage: { originalResult: MemoryRange; transferResult: MemoryRange; } | undefined, dest: Memory, src: Memory, value: WasmType | undefined | void, context: ComponentModelContext): WasmType | undefined; /** * Calls a function inside a wasm module. */ callWasm(params: JType[], wasmFunction: WasmFunction, context: WasmContext): JType; /** * Calls a resource method inside a wasm module. */ callWasmMethod(obj: Resource & { $rep(): ResourceRepresentation; }, params: JType[], wasmFunction: WasmFunction, context: WasmContext): JType; /** * Call a host function on the main thread from a wasm module. */ callMain(connection: WorkerConnection, qualifier: string, params: WasmType[], context: WasmContext): WasmType | void; /** * Call a wasm function from a worker thread. */ callWasmFromWorker(transferMemory: Memory, func: WasmFunction, params: WasmType[], context: WasmContext): WasmType | void; /** * Call a wasm method from a worker thread. */ callWasmMethodFromWorker(transferMemory: Memory, func: WasmFunction, params: WasmType[], context: WasmContext): WasmType | void; /** * Call the wasm function from the main thread. */ callWorker(connection: MainConnection, qualifier: string, params: JType[], context: ComponentModelContext): Promise; /** * Call a resource method inside a wasm module. */ callWorkerMethod(connection: MainConnection, qualifier: string, obj: Resource & { $rep(): ResourceRepresentation; }, params: JType[], context: ComponentModelContext): Promise; protected getParamValuesForHostCall(params: WasmType[], memory: Memory, context: ComponentModelContext): [ReadonlyArray, ptr | undefined]; protected liftReturnValue(value: WasmType | void, memory: Memory, context: ComponentModelContext): JType; } export declare class FunctionType<_T extends Function = Function> extends Callable { constructor(witName: string, params: CallableParameter[], returnType?: AnyComponentModelType); /** * Calls a service function from a wasm module. */ callService(func: JFunction, params: WasmType[], context: WasmContext): WasmType | void; callServiceAsync(memory: Memory, func: JFunctionAsync, params: WasmType[], context: ComponentModelContext): Promise; } export declare class ConstructorType<_T extends Function = Function> extends Callable { constructor(witName: string, params: CallableParameter[], returnType: AnyComponentModelType); callService(clazz: JClass, params: WasmType[], context: WasmContext): WasmType | void; callServiceAsync(memory: Memory, clazz: JClassAsync, params: WasmType[], context: ComponentModelContext): Promise; callWasmConstructor(params: JType[], wasmFunction: WasmFunction, context: WasmContext): number; callWasmConstructorAsync(connection: MainConnection, qualifier: string, params: JType[], context: ComponentModelContext): Promise; } export declare class DestructorType<_T extends Function = Function> extends Callable { constructor(witName: string, params: CallableParameter[]); callService(params: WasmType[], resourceManager: ResourceManager): void; callServiceAsync(_memory: Memory, params: WasmType[], resourceManager: ResourceManager): Promise; } export declare class StaticMethodType<_T extends Function = Function> extends Callable { constructor(witName: string, params: CallableParameter[], returnType?: AnyComponentModelType); callService(func: JFunction, params: WasmType[], context: WasmContext): WasmType | void; callServiceAsync(memory: Memory, func: JFunctionAsync, params: WasmType[], context: ComponentModelContext): Promise; } export declare class MethodType<_T extends Function = Function> extends Callable { constructor(witName: string, params: CallableParameter[], returnType?: AnyComponentModelType); callService(methodName: string, params: WasmType[], resourceManager: ResourceManager, context: WasmContext): WasmType | void; callServiceAsync(memory: Memory, methodName: string, params: WasmType[], resourceManager: ResourceManager, context: ComponentModelContext): Promise; } export type ResourceCallable = MethodType | StaticMethodType | ConstructorType | DestructorType; export type ResourceHandle<_T extends Resource = Resource> = u32; export declare class ResourceHandleType implements ComponentModelType { readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: readonly GenericFlatType[]; readonly witName: string; constructor(witName: string); load(memory: ReadonlyMemoryRange, offset: offset): ResourceHandle; liftFlat(memory: Memory, values: FlatValuesIter): ResourceHandle; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: ResourceHandle): void; lowerFlat(result: WasmType[], memory: Memory, value: ResourceHandle): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory): void; } export declare class ResourceType implements ComponentModelType { readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: readonly GenericFlatType[]; readonly witName: string; readonly id: string; readonly callables: Map; constructor(witName: string, id: string); addConstructor(jsName: string, func: ConstructorType): void; addDestructor(jsName: string, func: DestructorType): void; addStaticMethod(jsName: string, func: StaticMethodType): void; addMethod(jsName: string, func: MethodType): void; getCallable(jsName: string): ResourceCallable; load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: T): void; lowerFlat(result: WasmType[], memory: Memory, value: T): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory): void; } declare class AbstractWrapperType> implements ComponentModelType { readonly kind: ComponentModelTypeKind; readonly size: size; readonly alignment: Alignment; readonly flatTypes: readonly GenericFlatType[]; private readonly wrapped; constructor(kind: ComponentModelTypeKind, wrapped: ComponentModelType); load(memory: ReadonlyMemoryRange, offset: offset, context: ComponentModelContext): T; liftFlat(memory: Memory, values: FlatValuesIter, context: ComponentModelContext): T; alloc(memory: Memory): MemoryRange; store(memory: MemoryRange, offset: offset, value: T, context: ComponentModelContext): void; lowerFlat(result: WasmType[], memory: Memory, value: T, context: ComponentModelContext): void; copy(dest: MemoryRange, dest_offset: offset, src: ReadonlyMemoryRange, src_offset: offset, context: ComponentModelContext): void; copyFlat(result: WasmType[], dest: Memory, values: FlatValuesIter, src: Memory, context: ComponentModelContext): void; } export type borrow> = T; export declare class BorrowType> extends AbstractWrapperType { constructor(type: ComponentModelType); } export type own> = T; export declare class OwnType> extends AbstractWrapperType { constructor(type: ComponentModelType); } export type InterfaceType = { readonly id: string; readonly witName: string; readonly types?: Map; readonly functions?: Map>; readonly resources?: Map; }; export declare namespace InterfaceType { function is(value: any): value is InterfaceType; } export type WasmModuleImports = Record; export type WasmImports = Record; export type WasmExports = Record; export type ServiceInterface = Record; export type WorldServiceInterface = Record; export type ServiceInterfaceAsync = Record; export type WorldServiceInterfaceAsync = Record; type ServiceInterfaceImplementation = Record | { new (...params: any): Resource; }>; type WorldServiceInterfaceImplementation = Record; type ServiceInterfaceImplementationAsync = Record | { $new(...params: any): Resource | Promise; }>; type WorldServiceInterfaceImplementationAsync = Record; export type WorldType = { readonly id: string; readonly witName: string; readonly imports?: { readonly functions?: Map>; readonly interfaces?: Map; create?(service: any, context: WasmContext): any; loop?(service: any, context: WasmContext): any; }; readonly exports?: { readonly functions?: Map>; readonly interfaces?: Map; bind?(service: any, context: WasmContext): any; }; bind?(service: any, code: Code, context?: ComponentModelContext): Promise; bind?(service: any, code: Code, port: RAL.ConnectionPort, context?: ComponentModelContext): Promise; }; export type PackageType = { readonly id: string; readonly witName: string; readonly interfaces?: Map; readonly worlds?: Map; }; export declare namespace PackageType { function is(value: any): value is PackageType; } export interface WasmContext extends ComponentModelContext { getMemory(): Memory; } export declare namespace WasmContext { class Default implements WasmContext { private memory; readonly options: Options; readonly resources: ResourceManagers; constructor(options?: Options, resources?: ResourceManagers); initialize(memory: Memory): void; getMemory(): Memory; } function is(value: any): value is WasmContext; } export declare namespace $imports { type _Distribute = T extends any ? _Promisify : never; type _Required = { [K in keyof T]-?: T[K] extends (...args: any[]) => any ? T[K] : T[K] extends object ? _Required : T[K]; }; type _Promisify = { [K in keyof T]: T[K] extends (...args: infer A) => infer R ? K extends '$handle' ? T[K] : (...args: A) => Promise | R : T[K] extends object ? _Distribute : T[K]; }; export type Promisify = _Promisify<_Required>; export function create(world: WorldType, service: WorldServiceInterfaceImplementation, context: WasmContext): R; export function loop(world: WorldType, service: WorldServiceInterfaceImplementation, context: WasmContext): R; export namespace worker { function create(connection: WorkerConnection, world: WorldType, context: WasmContext): WasmImports; } export {}; } export declare namespace $exports { type _Distribute = T extends any ? _Promisify : never; type _Required = { [K in keyof T]-?: T[K] extends (...args: any[]) => any ? T[K] : T[K] extends object ? _Required : T[K]; }; type _Promisify = { [K in keyof T]: T[K] extends (...args: infer A) => infer R ? K extends '$new' ? (...arg: A) => Promise<_Promisify> : (...args: A) => Promise : T[K] extends object ? _Distribute : T[K]; }; export type Promisify = _Promisify<_Required>; export function bind(world: WorldType, exports: WasmExports, context: WasmContext): R; export namespace worker { function bind(connection: WorkerConnection, world: WorldType, exports: WasmExports, context: WasmContext): void; } export {}; } export declare namespace $main { function bind(world: WorldType, service: WorldServiceInterfaceImplementation | WorldServiceInterfaceImplementationAsync, code: Code, portOrContext?: ComponentModelContext | RAL.ConnectionPort, context?: ComponentModelContext): Promise; } export {};