import * as THREE from "three";
/** Reference point on mesh bounds used by origin helpers. */
export type OriginPivot = "center" | "bottomCenter";
/**
 * Set-origin helpers for mesh geometry and object transforms (similar to gltfeditor.com
 * "Geometry to Origin" / "Origin to Geometry").
 *
 * For subtrees, each mesh with geometry is updated individually so world placement is preserved.
 */
export declare class OriginUtils {
    /**
     * Moves each mesh origin to its own geometry bounds center while keeping world placement.
     */
    static originToGeometryCenter(object: THREE.Object3D): boolean;
    /**
     * Moves each mesh origin to the bottom-center of its own geometry bounds while keeping world placement.
     */
    static originToGeometryBottomCenter(object: THREE.Object3D): boolean;
    /**
     * Centers each mesh's geometry at its local origin (0, 0, 0). Object transforms are unchanged.
     */
    static geometryCenterToOrigin(object: THREE.Object3D): boolean;
    /**
     * Moves each mesh's geometry so its bottom-center lies at local (0, 0, 0). Transforms are unchanged.
     */
    static geometryBottomCenterToOrigin(object: THREE.Object3D): boolean;
    /**
     * Per mesh: translate geometry so that mesh's pivot maps to local (0, 0, 0). Transform unchanged.
     */
    static geometryToPivot(object: THREE.Object3D, pivot: OriginPivot): boolean;
    /**
     * Per mesh: move origin to that mesh's pivot while keeping world placement.
     */
    static originToPivot(object: THREE.Object3D, pivot: OriginPivot): boolean;
    private static originToPivotMesh;
    /** Pivot of a single mesh in world space (from its geometry bounds). */
    private static getMeshPivotWorld;
    private static getPivotFromBox;
    private static setObjectWorldPosition;
    private static translateMeshGeometryToWorldPoint;
    private static isGeometryMesh;
}
