import { Object3D, Ray, Vector3 } from '../../../src/Three'; declare class Face { constructor(); normal: Vector3; midpoint: Vector3; area: number; constant: number; outside: VertexNode; mark: number; edge: HalfEdge; static create(a: VertexNode, b: VertexNode, c: VertexNode): Face; compute(): this; getEdge(i: number): HalfEdge; } declare class HalfEdge { constructor(vertex: VertexNode, face: Face); vertex: VertexNode; prev: HalfEdge; next: HalfEdge; twin: HalfEdge; face: Face; head(): VertexNode; length(): number; lengthSquared(): number; setTwin(edge: HalfEdge): this; tail(): VertexNode; } declare class VertexNode { constructor(point: Vector3); point: Vector3; prev: VertexNode; next: VertexNode; face: Face; } declare class VertexList { constructor(); head: VertexNode; tail: VertexNode; append(vertex: VertexNode): this; appendChain(vertex: VertexNode): this; clear(): this; first(): VertexNode; insertAfter(target: VertexNode, vertex: VertexNode): this; insertBefore(target: VertexNode, vertex: VertexNode): this; isEmpty(): boolean; last(): VertexNode; remove(vertex: VertexNode): this; removeSubList(a: VertexNode, b: VertexNode): this; } export class ConvexHull { constructor(); tolerance: number; faces: Face[]; newFaces: Face[]; assigned: VertexList; unassigned: VertexList; vertices: VertexNode[]; addAdjoiningFace(eyeVertex: VertexNode, horizonEdge: HalfEdge): HalfEdge; addNewFaces(eyeVertex: VertexNode, horizon: HalfEdge[]): this; addVertexToFace(vertex: VertexNode, face: Face): this; addVertexToHull(eyeVertex: VertexNode): this; cleanup(): this; compute(): this; computeExtremes(): object; computeHorizon(eyePoint: Vector3, crossEdge: HalfEdge, face: Face, horizon: HalfEdge[]): this; computeInitialHull(): this; containsPoint(point: Vector3): boolean; deleteFaceVertices(face: Face, absorbingFace: Face): this; intersectRay(ray: Ray, target: Vector3): Vector3 | null; intersectsRay(ray: Ray): boolean; makeEmpty(): this; nextVertexToAdd(): VertexNode | undefined; reindexFaces(): this; removeAllVerticesFromFace(face: Face): VertexNode | undefined; removeVertexFromFace(vertex: VertexNode, face: Face): this; resolveUnassignedPoints(newFaces: Face[]): this; setFromPoints(points: Vector3[]): this; setFromObject(object: Object3D): this; }