import { type ReadonlyVec, type Vec } from "@thi.ng/vectors/api";
import type { Attribs } from "./api.js";
import { AABB } from "./api/aabb.js";
import type { Sphere } from "./api/sphere.js";
/**
 * 3D shape factory. Creates a new axis-aligned bounding box, where `pos` is the
 * min. position and `size` the extent in each dimension..
 *
 * @param pos
 * @param size
 * @param attribs
 */
export declare function aabb(pos: Vec, size: number | Vec, attribs?: Attribs): AABB;
export declare function aabb(size: number | Vec, attribs?: Attribs): AABB;
export declare function aabb(attribs?: Attribs): AABB;
/**
 * 3D shape factory. Creates a new axis-aligned bounding box between given
 * `min`/`max` points.
 *
 * @param min
 * @param max
 * @param attribs
 */
export declare const aabbFromMinMax: (min: Vec, max: Vec, attribs?: Attribs) => AABB;
/**
 * Same as {@link aabbFromMinMax}, but enlarges box in all directions by
 * `margin`.
 *
 * @param min
 * @param max
 * @param margin
 * @param attribs
 */
export declare const aabbFromMinMaxWithMargin: (min: Vec, max: Vec, margin: number, attribs?: Attribs) => AABB;
export declare const aabbFromCentroid: (centroid: Vec, size: Vec, attribs?: Attribs) => AABB;
export declare const aabbWithCentroidAndMargin: (centroid: Vec, size: Vec, margin: number, attribs?: Attribs) => AABB;
/**
 * Returns the intersection AABB of given inputs or `undefined` if they
 * are non-overlapping.
 *
 * @param a -
 * @param b -
 */
export declare const intersectionAABB: (a: AABB, b: AABB) => AABB | undefined;
/**
 * Returns square inscribed in given circle instance. The circle can also be
 * given as centroid & radius.
 *
 * @param sphere - target sphere
 */
export declare function inscribedAABB(sphere: Sphere): AABB;
export declare function inscribedAABB(pos: ReadonlyVec, r: number): AABB;
//# sourceMappingURL=aabb.d.ts.map