import { type NDArrayInt32 } from "../ndarray/NDArray";
import { OffsetBlockedBuffer } from "../ndarray/OffsetBlockedBuffer";
import { Mesh } from "../form/Mesh";
/** True if the mesh has no boundary edges (every edge shared by exactly 2 faces). */
export declare function isClosed(m: Mesh): boolean;
/** True if the mesh has at least one boundary edge. */
export declare function isOpen(m: Mesh): boolean;
/** True if every edge is shared by at most 2 faces. */
export declare function isManifold(m: Mesh): boolean;
/** True if any edge is shared by more than 2 faces. */
export declare function isNonManifold(m: Mesh): boolean;
/** Euler characteristic: V - E + F. */
export declare function eulerCharacteristic(m: Mesh): number;
/** Boundary edges as an Int32 NDArray of shape [N, 2]. */
export declare function boundaryEdges(m: Mesh): NDArrayInt32;
/** Non-manifold edges (shared by >2 faces) as an Int32 NDArray of shape [N, 2]. */
export declare function nonManifoldEdges(m: Mesh): NDArrayInt32;
/** Boundary loops as paths of vertex indices. */
export declare function boundaryPaths(m: Mesh): OffsetBlockedBuffer;
/** K-ring neighborhoods for all vertices. */
export declare function kRings(m: Mesh, k: number, inclusive?: boolean): OffsetBlockedBuffer;
/** Radius-based neighborhoods for all vertices. */
export declare function neighborhoods(m: Mesh, radius: number, inclusive?: boolean): OffsetBlockedBuffer;
/** Connect edge pairs into continuous vertex paths. */
export declare function connectEdgesToPaths(edges: NDArrayInt32): OffsetBlockedBuffer;
/** Connected component labeling result. */
export interface ConnectedComponentsResult {
    labels: NDArrayInt32;
    nComponents: number;
}
/** Label connected components from variable-width connectivity (e.g. vertexLink, faceLink). */
export declare function labelConnectedComponents(connectivity: OffsetBlockedBuffer): ConnectedComponentsResult;
/** Label connected components from fixed-width [N, K] connectivity (-1 = no neighbor). */
export declare function labelConnectedComponents(connectivity: NDArrayInt32): ConnectedComponentsResult;
/** Type of connected component analysis. */
export type ComponentType = "edge" | "manifoldEdge" | "vertex";
/** Compute connected components of a mesh using the specified connectivity type. */
export declare function connectedComponents(m: Mesh, type: ComponentType): ConnectedComponentsResult;
/** Return a new mesh with consistently oriented faces (via manifold edge voting). */
export declare function consistentlyOriented(m: Mesh): Mesh;
//# sourceMappingURL=sync.d.ts.map