/**
 * Triangulated mesh graph.
 * @see BinaryTopology
 */
export class TopoMesh {
    /**
     *
     * @type {TopoVertex[]}
     */
    vertices: TopoVertex[];
    /**
     *
     * @type {Set<TopoEdge>}
     * @private
     */
    private __edges;
    /**
     *
     * @type {Set<TopoTriangle>}
     * @private
     */
    private __faces;
    /**
     * Approximation of memory footprint of this object
     * NOTE: this is highly speculative and will differ from reality depending on VM running the code as well as many other factors
     * @return {number}
     */
    get byteSize(): number;
    /**
     *
     * @returns {Set<TopoEdge>}
     */
    getEdges(): Set<TopoEdge>;
    /**
     *
     * @returns {Set<TopoTriangle>}
     */
    getFaces(): Set<TopoTriangle>;
    /**
     *
     * @param {number} index
     * @return {undefined|TopoTriangle}
     */
    getFaceByIndex(index: number): undefined | TopoTriangle;
    /**
     *
     * @param {function(reason:string)} [error_consumer]
     * @returns {boolean}
     */
    validate(error_consumer?: typeof noop): boolean;
    clone(): TopoMesh;
    /**
     *
     * @returns {Map<number, TopoVertex>}
     */
    buildVertexMapping(): Map<number, TopoVertex>;
    /**
     *
     * @param {TopoMesh} other
     * @param {Map<number, TopoVertex>} vertex_map
     */
    _addWithVertexMap(other: TopoMesh, vertex_map: Map<number, TopoVertex>): void;
    /**
     * Will create a topologically matching copy of the given face in this Mesh
     * @param {TopoTriangle} face
     * @param {Map<number,TopoVertex>} vertex_map
     */
    addFaceCopy(face: TopoTriangle, vertex_map: Map<number, TopoVertex>): void;
    /**
     * Ensures that face has correct edges.
     * NOTE: this method is additive, it will not *NOT* remove any references
     * @param {TopoTriangle} face
     */
    patchFaceEdges(face: TopoTriangle): void;
    /**
     *
     * @param {TopoMesh} other
     */
    add(other: TopoMesh): void;
    /**
     *
     * @param {TopoVertex} v
     */
    addVertex(v: TopoVertex): void;
    /**
     *
     * @param {TopoVertex} v
     */
    addUniqueVertex(v: TopoVertex): void;
    /**
     * @deprecated use {@link tm_kill_only_vert}
     * @param {TopoVertex} v
     */
    removeVertex(v: TopoVertex): void;
    /**
     *
     * @param {TopoVertex} v
     * @returns {boolean}
     */
    containsVertex(v: TopoVertex): boolean;
    /**
     *
     * @param {TopoEdge} e
     */
    addEdge(e: TopoEdge): void;
    /**
     *
     * @param {TopoEdge} e
     */
    addUniqueEdge(e: TopoEdge): void;
    /**
     * @deprecated use {@link tm_kill_only_edge}
     * @param {TopoEdge} e
     */
    removeEdge(e: TopoEdge): void;
    /**
     *
     * @param {TopoEdge} e
     * @returns {boolean}
     */
    containsEdge(e: TopoEdge): boolean;
    /**
     *
     * @param {TopoTriangle} f
     */
    addFace(f: TopoTriangle): void;
    /**
     *
     * @param {Iterable<TopoTriangle>} faces
     */
    injectManyFaces(faces: Iterable<TopoTriangle>): void;
    /**
     * Add face as well as it's edges and vertices
     * @param {TopoTriangle} f
     */
    injectFace(f: TopoTriangle): void;
    /**
     * @deprecated use {@link tm_kill_only_face} instead
     * @param {TopoTriangle} f
     */
    removeFace(f: TopoTriangle): void;
    /**
     *
     * @param {TopoTriangle} f
     * @returns {boolean}
     */
    containsFace(f: TopoTriangle): boolean;
    /**
     * Creates an edge between two vertices, or if one already exists - returns that
     * @param {TopoVertex} a
     * @param {TopoVertex} b
     *
     * @returns {TopoEdge} Edge connecting vertices A and B
     */
    ensureEdge(a: TopoVertex, b: TopoVertex): TopoEdge;
    mergeEdges(): void;
    computeEdgeSquaredLengths(): void;
    /**
     *
     * @param {Float32Array} vertices
     */
    setVerticesFromArray(vertices: Float32Array): void;
    /**
     *
     * @param {Uint16Array|Uint32Array|number[]} faces
     */
    setFacesFromIndexArray(faces: Uint16Array | Uint32Array | number[]): void;
    setFacedUnindexed(): void;
    /**
     *
     * @param {Float64Array|Float32Array|number[]} vertices
     * @param {Uint32Array|Uint16Array|Uint8Array|number[]} [faces]
     */
    build(vertices: Float64Array | Float32Array | number[], faces?: Uint32Array | Uint16Array | Uint8Array | number[]): void;
    /**
     *
     * @param {number} index
     * @param {TopoVertex} v0
     * @param {TopoVertex} v1
     * @param {TopoVertex} v2
     * @returns {TopoTriangle}
     */
    createTriangle(index: number, v0: TopoVertex, v1: TopoVertex, v2: TopoVertex): TopoTriangle;
    toString(): string;
    /**
     * @readonly
     * @type {boolean}
     */
    readonly isTopoMesh: boolean;
}
import { TopoVertex } from "./TopoVertex.js";
import { TopoEdge } from "./TopoEdge.js";
import { TopoTriangle } from "./TopoTriangle.js";
import { noop } from "../../../../function/noop.js";
//# sourceMappingURL=TopoMesh.d.ts.map