import { vec3 } from "./Vector";
/**
 * Representation of bounding boxes.
 */
export declare type Bounds = {
    min: vec3;
    max: vec3;
};
/**
 * 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
 */
export declare function doBoundsIntersect(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
 */
export declare function isPointInBounds(bounds: Bounds, point: vec3, deviation?: number): boolean;
/** check if min and max values are assorted and save it in place */
export declare function ensureBoundsAreAssorted(bounds: Bounds): Bounds;
/** Convenience function to check if Bounds object is correctly set */
export declare function areBoundsValid(bounds: Bounds): boolean;
/**
 * Convenience function for creating a Bounds object, cloning the parameters.
 * @param min defaults to  inf / inf / inf
 * @param max defaults to -inf /-inf /-inf
 * */
export declare function createBounds(min?: vec3, max?: vec3): Bounds;
/** Convenience function for cloning a Bounds object */
export declare function cloneBounds(bounds: Bounds): Bounds;
/** Function to extend a Bounds object correctly */
export declare function extendBounds(bounds: Bounds, point: vec3): Bounds;
/** Function to extend a Bounds object with another Bounds object, returning new Bounds */
export declare function mergeBounds(first: Bounds, second: Bounds): Bounds;
/** Convenience function to stringify Bounds */
export declare function stringifyBounds(bounds: Bounds, precision?: number): string;
/** convenience function to yield the size of Bounds object */
export declare function getBoundsSize(bounds: Bounds): vec3;
/** convenience function to yield the center of Bounds object */
export declare function getBoundsCenter(bounds: Bounds): vec3;
/** returns corner points points defined by bounds */
export declare function getBoundsCorners(bounds: Bounds): vec3[];
