import { Point3 } from './point3';
import { BoundingSphere } from './bounding-sphere';
export declare class BoundingBox {
    private _xmin;
    private _xmax;
    private _ymin;
    private _ymax;
    private _zmin;
    private _zmax;
    /**
     * Constructs an empty bounding box.
     */
    static AsEmpty(): BoundingBox;
    /**
     * Constructs a bounding box defined by two points.
     * The two points represent two of the eight corners of the box.
     * @param p a point.
     * @param q a point.
     */
    static FromCorners(p: Point3, q: Point3): BoundingBox;
    /**
     * Constructs a bounding box for a list of points.
     * @param p a list of points.
     */
    static FromPoints(p: Point3[]): BoundingBox;
    /**
     * Constructs a new bounding box.
     * @param xmin the minimum x-coordinate of this box.
     * @param xmax the maximum x-coordinate of this box.
     * @param ymin the minimum y-coordinate of this box.
     * @param ymax the maximum y-coordinate of this box.
     * @param zmin the minimum z-coordinate of this box.
     * @param zmax the maximum z-coordinate of this box.
     */
    constructor(xmin: number, xmax: number, ymin: number, ymax: number, zmin: number, zmax: number);
    get xmin(): number;
    get xmax(): number;
    get ymin(): number;
    get ymax(): number;
    get zmin(): number;
    get zmax(): number;
    get min(): Point3;
    get max(): Point3;
    /**
     * Determines if this bounding box is empty.
     * @returns true, if empty; false, otherwise.
     */
    get isEmpty(): boolean;
    /**
     * Determines if this bounding box is infinite.
     * @returns true, if infinite; false, otherwise.
     */
    get isInfinite(): boolean;
    /**
     * Gets the point at a specified corner of this box.
     * <p>
     * The corner is specified by index, an integer between 0 an 7. From
     * least to most significant, the three bits of this index correspond
     * to x, y, and z coordinates of a corner point. A zero bit selects a
     * minimum coordinate; a one bit selects a maximum coordinate.
     * @param index the corner index.
     * @return the corner point.
     */
    getCorner(index: number): Point3;
    /**
     * Expands this box to include the specified features.
     * @param p the features to include in this box.
     */
    expandBy(p: BoundingBox | BoundingSphere | Point3 | Point3[] | number[]): void;
    /**
     * Sets this box to an empty box.
     */
    setEmpty(): void;
    /**
     * Sets this box to be an infinite box.
     */
    setInfinite(): void;
    /**
     * Expands thix box to include the specified point.
     * @param p the point.
     */
    expandByPoint(p: Point3): void;
    /**
     * Expands this box by the specified bounding sphere.
     * @param bs the bounding sphere.
     */
    expandByBoundingSphere(bs: BoundingSphere): void;
    /**
     * Determines whether this box contains the specified feature.
     * @param v the feature.
     * @returns true, if this box contains the feature; false, otherwise.
     */
    contains(v: BoundingBox | Point3): boolean;
    /**
     * Determines whether this box contains the specified point.
     * @param p the point.
     * @returns true, if this box contains the point; false, otherwise.
     */
    containsPoint(p: Point3): boolean;
    /**
     * Determines whether this box contains the specified bounding box.
     * @param bbox the bounding box.
     * @returns true, if this box contains the bounding box; false, otherwise.
     */
    containsBoundingBox(bbox: BoundingBox): boolean;
    /**
     * Determines whether this box intersects the specified bounding box.
     * @param bbox the bounding box.
     * @returns true, if intersects; false, otherwise.
     */
    intersects(bbox: BoundingBox): boolean;
}
