/// import { Alignment, Memory, MemoryRange, ReadonlyMemoryRange, type Code, type JType, type MainConnection, type Options, type WasmType, type WorkerConnection, type WorldType } from './componentModel'; import RAL from './ral'; declare class ConnectionMemory implements Memory { static readonly Header: { sync: { offset: number; size: number; }; errorCode: { offset: number; size: number; }; resultType: { offset: number; size: number; }; result: { offset: number; size: number; }; next: { offset: number; size: number; }; end: { offset: number; size: number; }; }; buffer: SharedArrayBuffer; readonly id: string; private next; constructor(); constructor(size: number); constructor(buffer: SharedArrayBuffer, id: string); reset(): void; alloc(align: Alignment, size: number): MemoryRange; realloc(): MemoryRange; preAllocated(ptr: number, size: number): MemoryRange; readonly(ptr: number, size: number): ReadonlyMemoryRange; } export declare abstract class Connection { static createWorker(world: WorldType, port?: RAL.ConnectionPort, timeout?: number): Promise; protected readonly memory: ConnectionMemory; constructor(memory: ConnectionMemory); protected static serializeParams(params: readonly WasmType[]): (number | string)[]; protected static deserializeParams(params: readonly (string | number)[]): WasmType[]; protected static serializeResult(result: WasmType | undefined | void): number | string | undefined; protected static deserializeResult(result: string | number | undefined): WasmType | void; protected static loadResult(buffer: SharedArrayBuffer): WasmType | void | undefined; protected static storeResult(buffer: SharedArrayBuffer, result: WasmType | void | undefined): void; } export declare namespace Connection { enum ErrorCodes { noHandler = 1, promiseRejected = 2 } enum WasmTypeKind { undefined = 0, float = 1, signed = 2, unsigned = 3 } type MainCallMessage = { readonly method: 'callMain'; readonly name: string; readonly params: (number | string)[]; readonly memory: { buffer: SharedArrayBuffer; id: string; }; }; type ReportResultMessage = { readonly method: 'reportResult'; readonly name: string; readonly result?: number | string; readonly error?: string; }; type MainMessages = MainCallMessage | ReportResultMessage; type InitializeWorker = { method: 'initializeWorker'; readonly module: WebAssembly_.Module; readonly memory?: WebAssembly_.Memory; readonly options: Options; }; type WorkerCallMessage = { readonly method: 'callWorker'; readonly name: string; readonly params: (number | string)[]; readonly memory: { buffer: SharedArrayBuffer; id: string; }; }; type WorkerMessages = InitializeWorker | WorkerCallMessage; } export declare abstract class BaseWorkerConnection extends Connection implements WorkerConnection { private readonly world; private readonly timeout; private readonly handlers; constructor(world: WorldType, timeout?: number); dispose(): void; on(name: string, handler: (memory: Memory, params: WasmType[]) => WasmType | void): void; getMemory(): Memory; prepareCall(): void; callMain(name: string, params: WasmType[]): WasmType | void; protected abstract postMessage(message: Connection.MainMessages): void; protected handleMessage(message: Connection.WorkerMessages): void; abstract listen(): void; } export declare abstract class BaseMainConnection extends Connection implements MainConnection { private initializeCall; private readonly handlers; private readonly callQueue; private currentCall; constructor(); dispose(): void; lock(thunk: () => Promise): Promise; prepareCall(): void; getMemory(): Memory; initialize(code: Code, options: Options): Promise; callWorker(name: string, params: WasmType[]): Promise; on(id: string, handler: (memory: Memory, params: WasmType[]) => WasmType | void | Promise): void; protected abstract postMessage(message: Connection.WorkerMessages): void; protected handleMessage(message: Connection.MainMessages): void; abstract listen(): void; } export {};