/**
 * Axis-aligned box of arbitrary half-extents, expressed in the body's local
 * frame. The shape spans `[-half_extents.x, +half_extents.x]` along X and
 * symmetrically on Y / Z.
 *
 * This is the generalisation of {@link UnitCubeShape3D} (which is fixed to
 * `0.5` per axis). The physics narrowphase recognises both via the shared
 * `isBoxShape3D` prototype marker and reads `half_extents.x / y / z` to feed
 * the closed-form sphere-box and box-box paths.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class BoxShape3D extends AbstractShape3D {
    /**
     * Convenience constructor.
     * @param {number} hx
     * @param {number} hy
     * @param {number} hz
     * @returns {BoxShape3D}
     */
    static from(hx: number, hy: number, hz: number): BoxShape3D;
    /**
     * Convenience constructor for boxes specified by full side lengths
     * rather than half-extents.
     * @param {number} width
     * @param {number} height
     * @param {number} depth
     * @returns {BoxShape3D}
     */
    static from_size(width: number, height: number, depth: number): BoxShape3D;
    /**
     * Half-width / half-height / half-depth in the body's local frame.
     * @readonly
     * @type {Vector3}
     */
    readonly half_extents: Vector3;
    compute_bounding_box(result: any): void;
    nearest_point_on_surface(result: any, reference: any): void;
    support(result: any, result_offset: any, direction_x: any, direction_y: any, direction_z: any): void;
    signed_distance_gradient_at_point(result: any, point: any): number;
    signed_distance_at_point(point: any): number;
    contains_point(point: any): boolean;
    sample_random_point_in_volume(result: any, result_offset: any, random: any): void;
    /**
     * @param {BoxShape3D} other
     * @returns {boolean}
     */
    equals(other: BoxShape3D): boolean;
    /**
     * Fast type-check marker. Lets the physics narrowphase dispatch sphere-box
     * and box-box pairs against arbitrary-half-extent boxes without an instanceof
     * import or chain check. Read together with `shape.half_extents.x/y/z`.
     * @readonly
     * @type {boolean}
     */
    readonly isBoxShape3D: boolean;
}
import { AbstractShape3D } from "./AbstractShape3D.js";
import Vector3 from "../../Vector3.js";
//# sourceMappingURL=BoxShape3D.d.ts.map