export type Vec3 = readonly [number, number, number];
export type BoxShape = {
    readonly kind: "box";
    readonly halfExtents: Vec3;
};
export type SphereShape = {
    readonly kind: "sphere";
    readonly radius: number;
};
export type CapsuleShape = {
    readonly kind: "capsule";
    readonly radius: number;
    readonly halfHeight: number;
};
export type PlaneShape = {
    readonly kind: "plane";
    readonly normal: Vec3;
    readonly constant: number;
};
export type MeshShape = {
    readonly kind: "mesh";
    readonly vertices: readonly Vec3[];
    readonly indices: readonly number[];
};
export type PhysicsShape = BoxShape | SphereShape | CapsuleShape | PlaneShape | MeshShape;
export type Bounds = {
    readonly min: Vec3;
    readonly max: Vec3;
};
export declare const EPSILON = 1e-9;
export declare function vec3(x?: number, y?: number, z?: number): [number, number, number];
export declare function cloneVec3(value: Vec3): [number, number, number];
export declare function addVec3(a: Vec3, b: Vec3): [number, number, number];
export declare function subVec3(a: Vec3, b: Vec3): [number, number, number];
export declare function scaleVec3(value: Vec3, scalar: number): [number, number, number];
export declare function dotVec3(a: Vec3, b: Vec3): number;
export declare function lengthVec3(value: Vec3): number;
export declare function normalizeVec3(value: Vec3): [number, number, number];
export declare function minVec3(a: Vec3, b: Vec3): [number, number, number];
export declare function maxVec3(a: Vec3, b: Vec3): [number, number, number];
export declare function validateFiniteVec3(value: Vec3, name: string): void;
export declare class Shape {
    static box(x: number, y: number, z: number): BoxShape;
    static sphere(radius: number): SphereShape;
    static capsule(radius: number, halfHeight: number): CapsuleShape;
    static plane(normal?: Vec3, constant?: number): PlaneShape;
    static mesh(vertices: readonly Vec3[], indices: readonly number[]): MeshShape;
    static bounds(shape: PhysicsShape, position: Vec3): Bounds;
}
//# sourceMappingURL=Shape.d.ts.map