/**
 * AbstractShape3D adapter that re-frames a shape's `support` (and bounding box)
 * into world space under a rigid pose (position + unit quaternion). The
 * underlying shape itself is never copied or transformed — we rotate the GJK
 * query direction into body space, ask the shape, then rotate the support
 * point back to world.
 *
 * Existing TransformedShape3D solves a more general case (arbitrary matrix
 * including scale) and crucially does *not* rotate the query direction into
 * body space before calling support — that path is correct for unscaled
 * identity rotations but wrong for rotated bodies, which is what narrowphase
 * needs.
 *
 * Reusable: physics narrowphase keeps two long-lived instances and calls
 * {@link setup} each pair. No per-pair allocation.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class PosedShape extends AbstractShape3D {
    /** @type {AbstractShape3D|null} */
    shape: AbstractShape3D | null;
    px: number;
    py: number;
    pz: number;
    qx: number;
    qy: number;
    qz: number;
    qw: number;
    /**
     * Bind a shape and a world pose. Subsequent calls to {@link support} and
     * {@link compute_bounding_box} return results in world space.
     *
     * @param {AbstractShape3D} shape
     * @param {Vector3|{x:number,y:number,z:number}} position
     * @param {Quaternion|{x:number,y:number,z:number,w:number}} rotation
     */
    setup(shape: AbstractShape3D, position: Vector3 | {
        x: number;
        y: number;
        z: number;
    }, rotation: Quaternion | {
        x: number;
        y: number;
        z: number;
        w: number;
    }): void;
    compute_bounding_box(result: any): void;
}
import { AbstractShape3D } from "../../../core/geom/3d/shape/AbstractShape3D.js";
//# sourceMappingURL=PosedShape.d.ts.map