import { Box3, Material, Mesh } from "three";
import { CSG } from "../csg/core/CSG";
import { ExtrudeHole } from "../DatabaseServices/3DSolid/ExtrudeHole";
import { SweepSolid } from "../DatabaseServices/3DSolid/SweepSolid";
import { Entity } from "../DatabaseServices/Entity/Entity";
import { ExtrudeSolid } from "../DatabaseServices/Entity/Extrude";
import { HardwareCompositeEntity } from "../DatabaseServices/Hardware/HardwareCompositeEntity";
import { OBB } from "../Geometry/OBB/obb";
export declare type Solid3D = ExtrudeSolid | SweepSolid | ExtrudeHole;
export declare class CheckInterfereTool {
    _MeshMaterial: Material;
    constructor(_MeshMaterial?: Material);
    static _SingleInstance: CheckInterfereTool;
    static GetInstance(): CheckInterfereTool;
    entitySet: Set<Solid3D>;
    objMap: Map<Mesh, [Solid3D, Solid3D]>;
    GetEntitys(selectEnts: (HardwareCompositeEntity | ExtrudeSolid | SweepSolid)[]): Solid3D[];
    IsSkipEntity(en: Entity): boolean;
    Check(selectEnts: (HardwareCompositeEntity | ExtrudeSolid | SweepSolid)[], progressCallBack?: (index: number, all: number) => void): Promise<Map<Mesh<import("three").Geometry | import("three").BufferGeometry, Material | Material[]>, [Solid3D, Solid3D]>>;
    Clear(): void;
    csgCache: Map<Entity, CSG>;
    private GetCSG;
    obbCache: Map<Entity, OBB>;
    private GetOBB;
    boxCache: Map<Entity, Box3>;
    private GetBox;
}
//# sourceMappingURL=InterfereUtil.d.ts.map