export declare class Point3D {
    x: number;
    y: number;
    z: number;
    constructor(x: number, y: number, z: number);
}
export declare class MathUtil {
    static doesEdgeIncludePlane(edgeStart: Point3D, edgeEnd: Point3D, v1: Point3D, v2: Point3D, v3: Point3D, tolerance?: number): boolean;
    /**
     * Check if an edge intersects a triangle face (math-only solution)
     * @param edgeStart - Start point of the edge
     * @param edgeEnd - End point of the edge
     * @param v1 - First vertex of the triangle
     * @param v2 - Second vertex of the triangle
     * @param v3 - Third vertex of the triangle
     * @returns boolean - Whether the edge intersects the triangle
     */
    static doesEdgeIntersectTriangle(edgeStart: Point3D, edgeEnd: Point3D, v1: Point3D, v2: Point3D, v3: Point3D, tolerance?: number): boolean;
    /**
     * Check if a point lies inside a triangle using barycentric coordinates
     * @param point - The point to test
     * @param v1 - First vertex of the triangle
     * @param v2 - Second vertex of the triangle
     * @param v3 - Third vertex of the triangle
     * @returns boolean - Whether the point lies inside the triangle
     */
    static isPointInTriangle(point: Point3D, v1: Point3D, v2: Point3D, v3: Point3D, tolerance?: number): boolean;
    static subtract(p1: Point3D, p2: Point3D): Point3D;
    static add(p1: Point3D, p2: Point3D): Point3D;
    static scale(p: Point3D, scalar: number): Point3D;
    static dotProduct(v1: Point3D, v2: Point3D): number;
    static crossProduct(v1: Point3D, v2: Point3D): Point3D;
    static normalize(vector: Point3D): Point3D;
    static distance(p1: Point3D, p2: Point3D): number;
    static doTrianglesIntersect(v1: Point3D, v2: Point3D, v3: Point3D, p1: Point3D, p2: Point3D, p3: Point3D, tolerance?: number): boolean;
    static objectsIntersect(buffer1: number[], buffer2: number[], tolerance?: number): boolean;
    static doBoundingBoxesIntersect(boxA: {
        min: Point3D;
        max: Point3D;
    }, boxB: {
        min: Point3D;
        max: Point3D;
    }): boolean;
}
