interface ClashItem { id: number; ifcClass: string; name: string; box: number[]; } /** Rows to clash candidates, dropping ignored classes and anything with no real box. */ export declare function clashCandidates(rows: Record[]): ClashItem[]; /** * Axis-aligned overlap, with a tolerance that SHRINKS both boxes. * * The strict comparison matters: two slabs meeting exactly face to face share a * plane, and reporting that would mean every floor clashes with every wall * standing on it. `tolerance` then demands a real interpenetration of that * depth before a pair counts, which is how modelling noise gets tuned out. */ export declare function boxesOverlap(a: number[], b: number[], tolerance: number): boolean; export {};