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<WASMModuleConfig>);
    init(wasmBytes?: ArrayBuffer): Promise<boolean>;
    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<string, {
    wasm: number;
    js: number;
    speedup: number;
}>;
