import { Vec2 } from "three";
import { GangDrillType } from "../../DatabaseServices/3DSolid/CylinderHole";
import { Board } from "../../DatabaseServices/Entity/Board";
import { LinesType } from "../../DatabaseServices/Entity/BoardInterface";
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { ObjectId } from "../../DatabaseServices/ObjectId";
import { IContourData } from "../../Production/Convert2PtsBul";
import { I2DModeling, I3DContourData, I3DModeling, IDrillingOption, IHardwareType, IModelingData, IOriginSideModelingData, ISpliteOrderData } from '../../Production/Product';
import { IHighReservedEdgeItem, ISealingData } from "../../UI/Store/OptionInterface/IHighSealedItem";
import { FaceDirection } from "../DrawDrilling/DrillType";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { ICountType } from "../LookOverBoardInfos/LookOverBoardInfosTool";
import { OrderDataBlock, WaveType } from "./Models/CadBlock";
import { CadBlockHoles, CadBlockInfo, CadBlockModel, CadBlockModelPoint, CadBlockPoint, CadSealInfoPoint, FaceType, HoleType, ModelOffSetData } from "./Models/CadBlockInfo";
import { CADDbBoard } from "./Models/CadModel";
import { AlignLineGroupObject, OrderDataObject, ProcessGroupObject } from "./Models/CadObject";
declare enum FrontOrSide {
    正面反面 = 0,
    侧面 = 1
}
export type MesParsedDataType = {
    blockList: OrderDataBlock[];
    objectList: OrderDataObject[];
    processGroupObjectList: ProcessGroupObject[];
    alignLineGroupList: AlignLineGroupObject[];
    cadViewPath?: string;
};
export declare class ErpParseData {
    GetCadData(boardList: Board[], metalsList: IHardwareType[]): Promise<MesParsedDataType>;
    DecomposeObject(metalsList: IHardwareType[]): OrderDataObject[];
    GetNumberBit(value: number, bit: number): number;
    GetWave(wave: LinesType): WaveType;
    GetPointDetail(points: IContourData, seals: ISealingData[], reservedEdge: IHighReservedEdgeItem[]): CadBlockPoint[];
    GetModelDetail(DataArray: IModelingData[], frontOrSide: FrontOrSide, isRect?: Boolean, add?: number): CadBlockModel[];
    GetSideModelDetail(DataArray: IOriginSideModelingData[], isRect: boolean, add: number, isInverse: boolean, sideLength: number): CadBlockModel[];
    GetModelPointDetail(feeding: IContourData, lineID: number, deep: number): CadBlockModelPoint[];
    GetOffSetModelDetail(modeling: I2DModeling[], modelID: number): CadBlockModel[];
    GetModelOffSetData(md: I2DModeling): ModelOffSetData[];
    Get3DModelDetail(modeling: I3DModeling[], modelID: number): CadBlockModel[];
    Get3DModelPointDetail(paths: I3DContourData, lineID: number): CadBlockModelPoint[];
    GetHolesDetail(holes: IDrillingOption[], frontOrSide: FrontOrSide, isRect?: Boolean, add?: number): CadBlockHoles[];
    GetHoleType(hole: GangDrillType): HoleType;
    GetHoleFaceType(frontOrSide: FrontOrSide, hole: IDrillingOption): FaceType | number;
    GetModelFaceType(frontOrSide: FrontOrSide, dir: FaceDirection | number): FaceType | number;
    GetBlockPointInfo(data: ISpliteOrderData): CadBlockInfo;
    /**
     * 板件的模型信息,用于CADViewer显示板件
     */
    GetModelData(br: ExtrudeSolid): CADDbBoard;
    GetFaceAdd(point: Vec2): number;
    GetDrillObjects(drills: ICountType[], RoomName: string, BoxName: string, specFun: (name: string) => {
        spec: string;
        count: number;
    }[]): OrderDataObject[];
    GetOrderTopLines(hardWares: IHardwareType[], maxID: number, entityIDMap?: Map<number, number>, update?: (entity: Entity) => void): OrderDataObject[];
    GetSealingAndDrills(boardList: Board[]): OrderDataObject[];
    GetSealObjects(seals: ICountType[], roomName: string, boxName: string, sealMap: Map<string, object>): OrderDataObject[];
    UpdateBoardDrillRemark(spliteData: ISpliteOrderData): void;
    UpdateBoardInfo(spliteData: ISpliteOrderData, board: Board, splitSize: {
        spliteHeight: number;
        spliteWidth: number;
        spliteThickness: number;
    }): void;
    ProcessGroupFilter(objId: ObjectId): boolean;
    GetRectSealDetail(points: IContourData, seals: ISealingData[], reservedEdge: IHighReservedEdgeItem[]): CadSealInfoPoint[];
    groupBy(data: any[], fileds: string[]): any[];
}
export {};
//# sourceMappingURL=ParseData.d.ts.map