export interface WASMModuleConfig { wasmUrl?: string; fallbackToJS: boolean; enableSIMD: boolean; } export interface Vec2 { x: number; y: number; } export interface AABB { minX: number; minY: number; maxX: number; maxY: number; } export interface CollisionResult { collides: boolean; overlapX: number; overlapY: number; depth: number; } export interface PathResult { path: Vec2[]; cost: number; nodesExplored: number; } export interface WASMExports { memory: WebAssembly.Memory; aabb_test: (ax: number, ay: number, aw: number, ah: number, bx: number, by: number, bw: number, bh: number) => number; aabb_overlap: (ax: number, ay: number, aw: number, ah: number, bx: number, by: number, bw: number, bh: number, outPtr: number) => void; circle_test: (ax: number, ay: number, ar: number, bx: number, by: number, br: number) => number; vec2_dot: (ax: number, ay: number, bx: number, by: number) => number; vec2_cross: (ax: number, ay: number, bx: number, by: number) => number; vec2_length: (x: number, y: number) => number; vec2_normalize: (x: number, y: number, outPtr: number) => void; astar_init: (width: number, height: number, gridPtr: number) => void; astar_find: (sx: number, sy: number, tx: number, ty: number, outPtr: number) => number; batch_aabb_test: (aabbsPtr: number, count: number, outPtr: number) => number; malloc: (size: number) => number; free: (ptr: number) => void; } export declare class WASMAccelerator { private config; private wasmExports; private initialized; constructor(config?: Partial); init(wasmBytes?: ArrayBuffer): Promise; get isWASM(): boolean; get ready(): boolean; aabbTest(ax: number, ay: number, aw: number, ah: number, bx: number, by: number, bw: number, bh: number): boolean; aabbOverlap(a: AABB, b: AABB): CollisionResult; circleTest(ax: number, ay: number, ar: number, bx: number, by: number, br: number): boolean; batchAABBTest(aabbs: AABB[]): [number, number][]; vec2Dot(ax: number, ay: number, bx: number, by: number): number; vec2Cross(ax: number, ay: number, bx: number, by: number): number; vec2Length(x: number, y: number): number; vec2Normalize(x: number, y: number): Vec2; findPath(grid: number[][], startX: number, startY: number, targetX: number, targetY: number): PathResult; destroy(): void; } export declare function benchmarkWASMvsJS(accelerator: WASMAccelerator, iterations?: number): Record;