import { Matrix4 } from "three";
import { Singleton } from "../../Common/Singleton";
import { CylinderHole } from "../../DatabaseServices/3DSolid/CylinderHole";
import { CADObject } from "../../DatabaseServices/CADObject";
import { Board } from "../../DatabaseServices/Entity/Board";
import { ObjectId } from "../../DatabaseServices/ObjectId";
import { Box3Ext } from "../../Geometry/Box";
import { DrillingOption } from "../../UI/Store/drillInterface";
export declare class DrawDrillingTool extends Singleton {
    private m_MoveDistList;
    private m_Face;
    private m_Option;
    private woodPins;
    private drillEnts;
    private _configCache;
    private _drillEntsCache;
    private _woodPinsCache;
    private _collsionFaces;
    private _hasBackupOption;
    private _useBackup;
    private _isDrillTouch;
    private _HasAutoDeviation;
    private _AutoDeviation;
    private _MoveMinDist;
    constructor();
    HasConfig(type: string): boolean;
    /**获取用户正在使用的配置 */
    private GetDrillingConfig;
    private GetRuleByFace;
    private InitWoodPins;
    get CacheKey(): string;
    get IsPostive(): boolean;
    get EvalParam(): {
        H: number;
        L: number;
        W: number;
    };
    private InitDrill;
    private _InitDrill;
    InitDrillTemp(suitableOption: DrillingOption): boolean;
    private GetFaceSegment1D;
    private EqulalSpacing;
    private Multiple32;
    private GetMoveDist;
    private GetBoxes;
    private _InteractionLog;
    private BuildDrill;
    private CheckDrillInBoard;
    private CheckWoodInBoard;
    private CheckModelingCollision;
    private IsDrillCollisionModeling;
    private ParseDrillList;
    private SaveDrillToBoard;
    IsIntersectZX(moveAfterDrills: CylinderHole[]): boolean;
    CheckCollision(hole: ObjectId<CADObject>[], moveAfterDrills: CylinderHole[], needRemoveDrillList: WeakSet<WeakKey>, isWoodPinss: boolean, checkAllBr?: boolean): void;
    private ParseThroughHoles;
    private ParseHolesisThrough;
    private MoveDrillEnts;
    IsTk(ds: ObjectId[]): boolean;
    GetDrillsBox(ids: ObjectId[], OCSInv: Matrix4): Box3Ext[];
    CheckCollisionForOtherDrills(drills: ObjectId[][], refDrillList: ObjectId[][], woodPinss: ObjectId[][]): void;
    private InitTool;
    private ClassifyBoardList;
    /**
     * 注意:如果存在排钻锁,就会影响排钻删除
     */
    ClearExitDrilling(brs: Board[]): void;
    private StartGangDrill;
    private Exec;
    /**分类并排钻 */
    ClassifyAndDrilling(brList: Board[], useSelectOrder?: boolean): Promise<void>;
    private IsSplitBoard;
    private GetSpliteBoards;
    DrillIsCollsion(b1: Box3Ext, b2: Box3Ext): boolean;
    Check(brs: Board[]): Promise<string[]>;
    CheckDrillList(result: string[]): void;
    private AutoDeviation;
}
//# sourceMappingURL=DrawDrillingTool.d.ts.map