import { Vector3 } from "./Vector3";
import { PlaneSegment } from "./Plane";
/**
 * Representation of bounding boxes.
 */
export declare class Bounds {
    min: Vector3;
    max: Vector3;
    constructor(min: Vector3, max: Vector3);
    /**
     * Convenience function for creating a Bounds object, cloning the parameters.
     * @param min defaults to  inf / inf / inf
     * @param max defaults to -inf /-inf /-inf
     */
    static create(min?: Vector3, max?: Vector3): Bounds;
    /** Convenience function for cloning a Bounds object */
    static clone(bounds: Bounds): Bounds;
    /** Convenience function to check if Bounds object is correctly set */
    static areValid(bounds: Bounds): boolean;
    /**
     * Check intersection of two bounding boxes.
     * @param bb1 First bounding box
     * @param bb2 Second bounding box
     * @return true if the two bounding boxes intersect each other
     */
    static doIntersect(bb1: Bounds, bb2: Bounds): boolean;
    /**
     * Check if point is inside a bounding box
     * @param bounds
     * @param point
     * @param deviation positive values extend bounds, negative shrink it
     */
    static isPointInBounds(bounds: Bounds, point: Vector3, deviation?: number): boolean;
    /** check if min and max values are assorted and save it in place */
    static ensureBoundsAreAssorted(bounds: Bounds): void;
    /** Function to extend a Bounds object correctly in place */
    static extendInPlace(bounds: Bounds, point: Vector3): void;
    /** Function to extend a Bounds object with another Bounds object, returning new Bounds */
    static merge(first: Bounds, second: Bounds): Bounds;
    /**
     * Create a planar (in the xz-plane) plane segment that is given by the lower part of the cube given by the bounds.
     * @param bounds
     * @returns {PlaneSegment}
     */
    static convertToXZPlaneSegment(bounds: Bounds): PlaneSegment;
    /** Convenience function to stringify Bounds */
    static stringify(bounds: Bounds, precision?: number): string;
    /** convenience function to yield the size of Bounds object */
    static getSize(bounds: Bounds): Vector3;
    /** convenience function to yield the center of Bounds object */
    static getCenter(bounds: Bounds): Vector3;
}
