import { Vec3 } from './Vec3';
import { Mat4 } from './Mat4';
/**
 * Used to handle bounding boxes in 3D space.
 * Basically made of two min and max {@link Vec3 | vectors} that represents the edges of the 3D bounding box.
 */
export declare class Box3 {
    /** Min {@link Vec3 | vector} of the {@link Box3} */
    min: Vec3;
    /** Max {@link Vec3 | vector} of the {@link Box3} */
    max: Vec3;
    /**
     * Box3 constructor
     * @param min - min {@link Vec3 | vector} of the {@link Box3}
     * @param max - max {@link Vec3 | vector} of the {@link Box3}
     */
    constructor(min?: Vec3, max?: Vec3);
    /**
     * Set a {@link Box3} from two min and max {@link Vec3 | vectors}
     * @param min - min {@link Vec3 | vector} of the {@link Box3}
     * @param max - max {@link Vec3 | vector} of the {@link Box3}
     */
    set(min?: Vec3, max?: Vec3): Box3;
    /**
     * Check whether the {@link Box3} min and max values have actually been set
     */
    isEmpty(): boolean;
    /**
     * Copy a {@link Box3} into this {@link Box3}.
     * @param box - {@link Box3} to copy
     */
    copy(box: Box3): Box3;
    /**
     * Clone this {@link Box3}
     * @returns - cloned {@link Box3}
     */
    clone(): Box3;
    /**
     * Get the {@link Box3} center
     * @readonly
     * @returns - {@link Vec3 | center vector} of the {@link Box3}
     */
    get center(): Vec3;
    /**
     * Get the {@link Box3} size
     * @readonly
     * @returns - {@link Vec3 | size vector} of the {@link Box3}
     */
    get size(): Vec3;
    /**
     * Get the {@link Box3} radius
     * @readonly
     * @returns - radius of the {@link Box3}
     */
    get radius(): number;
    /**
     * Apply a {@link Mat4 | matrix} to a {@link Box3}
     * Useful to apply a transformation {@link Mat4 | matrix} to a {@link Box3}
     * @param matrix - {@link Mat4 | matrix} to use
     * @param transformedBox - {@link Box3 | transformed Box3} to set
     * @returns - the {@link Box3 | transformed Box3} after {@link Mat4 | matrix} application
     */
    applyMat4(matrix?: Mat4, transformedBox?: Box3): Box3;
}
