import { type NDArrayFloat32 } from "../ndarray/NDArray";
import { Mesh } from "../form/Mesh";
import { PointCloud } from "../form/PointCloud";
import { Polygon } from "../primitive";
export type { MeshLike } from "../form/MeshLike";
import type { MeshLike } from "../form/MeshLike";
/** Triangulate polygons into a triangle mesh. */
export declare function triangulate(input: Mesh | MeshLike | Polygon): Mesh;
/** Create a UV sphere mesh centered at origin. */
export declare function sphereMesh(radius: number, stacks: number, segments: number): Mesh;
/** Create a cylinder mesh centered at origin along the z-axis. */
export declare function cylinderMesh(radius: number, height: number, segments: number): Mesh;
/** Create an axis-aligned box mesh centered at origin. Optionally subdivided. */
export declare function boxMesh(width: number, height: number, depth: number, widthTicks?: number, heightTicks?: number, depthTicks?: number): Mesh;
/** Create a flat rectangular plane mesh in the XY plane, centered at origin. */
export declare function planeMesh(width: number, height: number, widthTicks?: number, heightTicks?: number): Mesh;
/** Total surface area of a mesh. Respects transformation. */
export declare function area(m: Mesh): number;
/** Signed volume of a closed 3D mesh. Positive for outward normals. Respects transformation. */
export declare function signedVolume(m: Mesh): number;
/** Absolute volume of a closed 3D mesh. Respects transformation. */
export declare function volume(m: Mesh): number;
/** Mean edge length across all faces. Respects transformation. */
export declare function meanEdgeLength(m: Mesh): number;
/** Minimum edge length across all faces. Respects transformation. */
export declare function minEdgeLength(m: Mesh): number;
/** Maximum edge length across all faces. Respects transformation. */
export declare function maxEdgeLength(m: Mesh): number;
/** Return a new mesh with consistently oriented, outward-pointing normals. */
export declare function positivelyOriented(m: Mesh, isConsistent?: boolean): Mesh;
/** Principal curvature result: k0 (max) and k1 (min) per vertex. */
export interface PrincipalCurvatures {
    k0: NDArrayFloat32;
    k1: NDArrayFloat32;
}
/** Principal curvature result with directions. */
export interface PrincipalDirections {
    k0: NDArrayFloat32;
    k1: NDArrayFloat32;
    d0: NDArrayFloat32;
    d1: NDArrayFloat32;
}
/** Compute principal curvatures (k0, k1) at each vertex. */
export declare function principalCurvatures(m: Mesh, k?: number): PrincipalCurvatures;
/** Compute principal curvatures and directions at each vertex. */
export declare function principalDirections(m: Mesh, k?: number): PrincipalDirections;
/** Compute shape index at each vertex. Values in [-1, 1]. */
export declare function shapeIndex(m: Mesh, k?: number): NDArrayFloat32;
/** Laplacian smoothing. Returns a new mesh with smoothed vertex positions. */
export declare function laplacianSmoothed(m: Mesh, iterations: number, lambda?: number): Mesh;
/** Taubin smoothing (volume-preserving). Returns a new mesh with smoothed vertex positions. */
export declare function taubinSmoothed(m: Mesh, iterations: number, lambda?: number, kpb?: number): Mesh;
/** Options for ICP alignment. */
export interface IcpOptions {
    maxIterations?: number;
    nSamples?: number;
    k?: number;
    sigma?: number;
    outlierProportion?: number;
    minRelativeImprovement?: number;
    emaAlpha?: number;
}
/** Options for OBB alignment. */
export interface ObbOptions {
    sampleSize?: number;
}
/** Options for Chamfer error. */
export interface ChamferOptions {
    outlierProportion?: number;
}
/** Kabsch/SVD rigid alignment. Requires 1:1 correspondence (|source| == |target|). Returns 4x4 delta matrix. */
export declare function fitRigidAlignment(source: PointCloud, target: PointCloud): NDArrayFloat32;
/** Iterative Closest Point alignment. Returns 4x4 delta matrix. */
export declare function fitIcpAlignment(source: PointCloud, target: PointCloud, opts?: IcpOptions): NDArrayFloat32;
/** Coarse alignment via oriented bounding boxes. Returns 4x4 delta matrix. */
export declare function fitObbAlignment(source: PointCloud, target: PointCloud, opts?: ObbOptions): NDArrayFloat32;
/** One-way Chamfer distance (mean nearest-neighbor distance from source to target). */
export declare function chamferError(source: PointCloud, target: PointCloud, opts?: ChamferOptions): number;
//# sourceMappingURL=sync.d.ts.map