import { Mesh } from "../form/Mesh";
import { NDArray, type NDArrayInt32, type NDArrayBool } from "../ndarray/NDArray";
import { IndexMap } from "../core/IndexMap";
/** Result of reindexing a mesh with returnIndexMap: true. */
export interface ReindexedMeshResult {
    /** The reindexed mesh. */
    mesh: Mesh;
    /** Face index map (old → new). */
    faceMap: IndexMap;
    /** Point index map (old → new). */
    pointMap: IndexMap;
}
/** Result of splitting a mesh into components. */
export interface SplitResult {
    /** One mesh per component. */
    components: Mesh[];
    /** Per-component label values. */
    labels: number[];
}
/** Apply an index map to an NDArray (gather by keptIds). */
export declare function reindexed(data: NDArray, map: IndexMap): NDArray;
/** Apply face and point index maps to a Mesh. */
export declare function reindexed(data: Mesh, faceMap: IndexMap, pointMap: IndexMap): Mesh;
/** Filter a mesh by a boolean face mask. */
export declare function reindexedByMask(m: Mesh, mask: NDArrayBool): Mesh;
/** Filter a mesh by a boolean face mask, returning index maps. */
export declare function reindexedByMask(m: Mesh, mask: NDArrayBool, opts: {
    returnIndexMap: true;
}): ReindexedMeshResult;
/** Extract specific faces from a mesh by their IDs. */
export declare function reindexedByIds(m: Mesh, ids: NDArrayInt32): Mesh;
/** Extract specific faces with index maps. */
export declare function reindexedByIds(m: Mesh, ids: NDArrayInt32, opts: {
    returnIndexMap: true;
}): ReindexedMeshResult;
/** Filter a mesh keeping only faces whose ALL vertices pass the point mask. */
export declare function reindexedByMaskOnPoints(m: Mesh, mask: NDArrayBool): Mesh;
/** Filter by point mask with index maps. */
export declare function reindexedByMaskOnPoints(m: Mesh, mask: NDArrayBool, opts: {
    returnIndexMap: true;
}): ReindexedMeshResult;
/** Filter a mesh keeping only faces whose ALL vertices are in the point ID list. */
export declare function reindexedByIdsOnPoints(m: Mesh, ids: NDArrayInt32): Mesh;
/** Filter by point IDs with index maps. */
export declare function reindexedByIdsOnPoints(m: Mesh, ids: NDArrayInt32, opts: {
    returnIndexMap: true;
}): ReindexedMeshResult;
/** Merge multiple meshes into one, adjusting face indices. Applies transformations if present. */
export declare function concatenateMeshes(meshes: Mesh[]): Mesh;
export declare function concatenateMeshes(...meshes: Mesh[]): Mesh;
/** Split a mesh into separate meshes by per-face labels. */
export declare function splitIntoComponents(m: Mesh, labels: NDArrayInt32): SplitResult;
//# sourceMappingURL=sync.d.ts.map