import type { PhysicsWorld } from "./physicsWorld.js"; export interface BallisticSweepHit { point: [number, number, number]; time: number; } export type BallisticSweep = (origin: readonly [number, number, number], velocity: readonly [number, number, number], gravity: number, maxTime: number) => BallisticSweepHit | null; export interface BallisticSweepOptions { /** Fixed march interval along the arc, in seconds. Default 1/60. */ step?: number; /** Projectile radius; each body AABB is inflated by this before the point test. Default 0. */ radius?: number; } /** * Sweeps each short chord of the closed-form arc through live body AABBs, including sleeping bodies. * Thin cover between samples blocks; `step` controls the approximation of the curved path. */ export declare function createBallisticSweep(world: PhysicsWorld, options?: BallisticSweepOptions): BallisticSweep; /** Contact fraction for a point segment against a translating axis-aligned box; inflate extents for a projectile radius. * @capability moving-box-sweep detect contact with boxes crossing a projectile segment between simulation poses */ export declare function sweepMovingBounds(from: readonly [number, number, number], to: readonly [number, number, number], targetFrom: readonly [number, number, number], targetTo: readonly [number, number, number], halfExtents: readonly [number, number, number]): number | null; /** Contact fraction for a point segment against a translating sphere; add the projectile radius to `radius`. * @capability moving-sphere-sweep detect contact with spheres crossing a projectile segment between simulation poses */ export declare function sweepMovingSphere(from: readonly [number, number, number], to: readonly [number, number, number], targetFrom: readonly [number, number, number], targetTo: readonly [number, number, number], radius: number): number | null;