import type { PhysicsBackend } from "./physicsBackend.js"; /** The slice of a test runner the conformance suite needs; `bun:test` satisfies it directly. */ export interface ConformanceHarness { test(name: string, run: () => void): void; expect(value: unknown): { toBe(expected: unknown): void; toBeNull(): void; not: { toBeNull(): void; toBe(expected: unknown): void; }; toBeGreaterThan(expected: number): void; toBeLessThan(expected: number): void; toBeCloseTo(expected: number, digits?: number): void; toEqual(expected: unknown): void; toContain(expected: unknown): void; }; } /** * Behavioral contract every {@link PhysicsBackend} must pass: bodies rest on floors, casts and rays report the * first surface with an outward normal, kinematic targets produce velocity, masks filter, and snapshot/restore * round-trips with stable handles. Backends declare what they cannot do through `capabilities`; the suite reads it. * Expects `create()` to return a fresh backend whose world spans at least ±50 on every axis with a floor at y=0. * * @capability physics-backend-conformance the shared test contract a physics adapter runs to prove it matches the seam */ export declare function runPhysicsBackendConformance(create: () => PhysicsBackend, harness: ConformanceHarness): void;