import { FaceDirection } from "../../../Add-on/DrawDrilling/DrillType";
import { ArrowType } from "../../../Common/SystemEnum";
import { ArcBoardFeedProcess } from "../../../DatabaseServices/Entity/ArcBoardType";
import { BoardOpenDir, BoardType, BrRelativePos } from "../../../DatabaseServices/Entity/BoardInterface";
import { EOrderType } from "../../../Editor/OrderType";
import { RenderType } from "../../../GraphicsSystem/RenderType";
import { ECompareType } from "../BoardFindInterface";
import { DoorPosType, HandleHorPos, HandleVePos } from "../DoorInterface";
import { BehindHeightPositon, RadioType, ViewDirection } from "./OptionEnum";
export interface IBaseOption {
    version?: number;
}
/**
 *板件参数
 */
export interface BoardConfigOption extends IBaseOption {
    type: BoardType;
    name: string;
    thickness?: number;
    height?: number;
    width?: number;
    openDir?: BoardOpenDir;
    cuttingProtrudingPart?: boolean;
    sweepAngle?: number;
    exprThickness?: string;
    exprCount?: string;
}
export interface RightPlaneLightOption {
    version: number;
    ShowHemiLight: boolean;
    SkyLightColor: string;
    SkyLightIntensity: number;
    SkyLightIndirectLightingIntensity: number;
    ShowSunLight: boolean;
    SunLightIntensity: number;
    SunLightIndirectLightingIntensity: number;
    SunLightColor: string;
    SunLightTemperature: number;
    SunLightElevationDeg: number;
    SunLightRotateDeg: number;
    SunLightSourceAngle: number;
    ShowExposure: boolean;
    AutoExposure: boolean;
    ExposureCompensation: number;
    SunTime: string;
}
export interface ModifyTextsConfigOption extends IBaseOption {
    changeTexts: [string, string, ReplaceScope[], boolean, boolean][];
}
export declare enum ReplaceScope {
    RoomName = "roomName",// 房名
    CabinetName = "cabinetName",// 柜名
    BoardName = "boardName",// 板材名
    Material = "material",// 材料
    Color = "color",// 颜色
    BrName = "brName",// 板名称
    /**复合实体 */
    Unit = "unit",// 单位
    Name = "name",// 实体名
    Comments = "comments",// 备注
    Model = "model",// 型号
    Factory = "factory",// 厂家
    Brand = "brand",// 品牌
    Spec = "spec",// 规格
    /**文字 */
    Text = "text"
}
export interface MaterialMapOption {
    id: string;
    kjlName: string;
}
export interface SideBoardOption extends BoardConfigOption {
    spaceSize?: number;
    leftShrink: number;
    rightShrink: number;
}
/**
 *背板参数
 *
 * @export
 * @interface BehindBoardOption
 * @extends {BoardConfigOption}
 */
export interface BehindBoardOption extends BoardConfigOption {
    leftExt: number;
    rightExt: number;
    topExt: number;
    bottomExt: number;
    boardPosition: BehindHeightPositon;
    moveDist: number;
    spaceSize?: number;
    count?: number;
    boardRelative?: BrRelativePos;
    calcHeight: string;
    calcSpaceSize: string;
    calcMoveDist: string;
    exprCount: string;
    exprThickness: string;
}
/**
 *层板参数
 *
 * @export
 * @interface LayerBoardOption
 * @extends {BoardConfigOption}
 */
export interface LayerBoardOption extends BoardConfigOption {
    calcHeight: string;
    frontShrink: number;
    leftShrink: number;
    rightShrink: number;
    isTotalLength: boolean;
    isActive: boolean;
    spaceSize?: number;
    count?: number;
    boardRelative?: BrRelativePos;
    calcSpaceSize: string;
    calcFrontShrink: string;
    calcLeftShrink: string;
    calcRightShrink: string;
    exprCount: string;
    exprThickness: string;
}
/**
 *层板钉参数
 *
 * @export
 * @interface LayerNailOption
 */
export interface LayerNailOption extends IBaseOption {
    isDraw: boolean;
    addCount: number;
    dist: number;
    isGroup: boolean;
    isInBack: boolean;
    IsAddNailCount: boolean;
    front: number;
    behind: number;
    count: number;
    rad: number;
    length: number;
    depth: number;
}
/**
 *立板参数
 */
export interface VerticalBoardOption extends BoardConfigOption {
    frontShrink: number;
    bottomShrink: number;
    isTotalLength: boolean;
    isTotalWidth: boolean;
    count?: number;
    spaceSize?: number;
    boardRelative?: BrRelativePos;
    calcWidth: string;
    calcHeight: string;
    calcSpaceSize: string;
    calcFrontShrink: string;
    calcBottomShrink: string;
    exprCount: string;
    exprThickness: string;
}
export interface TBBoardOption extends BoardConfigOption {
    isDraw: boolean;
    frontDist: number;
    behindDistance: number;
    isWrapSide: boolean;
    useLFData: boolean;
    leftExt: number;
    rightExt: number;
    offset: number;
    isDrawFooter?: boolean;
    footThickness?: number;
    footBehindShrink?: number;
    isDrawBackFooter?: boolean;
    footerOffset?: number;
    isDrawStrengthenStrip?: boolean;
    divCount?: number;
    bigHoleDir?: FaceDirection;
}
export interface SingleBoardOption extends BoardConfigOption {
    rotateX: number;
    rotateY: number;
    rotateZ: number;
    drawNumber?: number;
}
export interface IGrooveOption extends IBaseOption {
    grooveAddLength?: string;
    grooveAddWidth?: string;
    grooveAddDepth?: string;
    knifeRadius?: string;
    exprGrooveAddLength?: string;
    exprGrooveAddWidth?: string;
    exprGrooveAddDepth?: string;
    exprKnifeRadius?: string;
}
export interface IShinkOption extends IBaseOption {
    name: string;
    left: number;
    right: number;
    front: number;
    back: number;
    isLREqual: boolean;
    isFBEqual: boolean;
    isDrill: boolean;
}
export type IUiOption<T> = {
    [P in (keyof T)]: T[P] extends number ? string : T[P];
};
export interface INailRule extends IBaseOption {
    startDist: number;
    endDist: number;
    count: number;
}
export declare enum HightDrillOption {
    up = "up",
    down = "down",
    left = "left",
    right = "right"
}
export interface IHightDrillOption {
    [HightDrillOption.up]: string;
    [HightDrillOption.down]: string;
    [HightDrillOption.left]: string;
    [HightDrillOption.right]: string;
}
export interface IBatchModifyPanelOption extends IBaseOption {
    length: string;
    width: string;
    thick: string;
    position: RadioType;
}
export type AnyObject = {
    [key: string]: any;
};
export interface ISmoothEdgeOption extends IBaseOption {
    smoothEdge: number;
    edge: number;
    scale: number;
    filterArrs: string[][];
    filterArr?: string[];
}
export interface IDrawBoardAutoCutOption {
    isAutoCut: boolean;
    isRelevance: boolean;
}
export interface IKnifeProps {
    radius: number;
    angle: number;
}
export interface CommonPanelConfigOption extends IBaseOption {
    orderMap: {
        [key: string]: EOrderType;
    };
    orderType: EOrderType;
}
export interface DatalistColumnWidthOption {
    name: number;
    date: number;
    size: number;
    operate: number;
}
export interface DatalistConfigOption extends IBaseOption {
    resizeUI: {
        [key: string]: DatalistColumnWidthOption;
    };
}
export interface WindowPanelConfigOption {
    Length: number;
    Height: number;
    Thick: number;
    WindowOffGround: number;
    IsBayWindow: boolean;
    BayLeftIsWall?: boolean;
    BayRightIsWall?: boolean;
    BayDist?: number;
    BayLeftDist?: number;
    BayMiddleDist?: number;
    BayRightDist?: number;
    HasWindowStone: boolean;
    StoneThick?: number;
    StoneBulge?: number;
    StoneLeftRightBulge?: number;
}
export interface IDimStyleOption extends IBaseOption {
    dimFXLON: boolean;
    dimFXL: number;
    dimASZ: number;
    dimGAP: number;
    dimEXE: number;
    dimTXT: number;
    dimTAD: number;
    dimALTD: number;
    dimADEC: number;
    dimARROW: ArrowType;
}
export interface ChangeColorByBoardMaterialOption extends IBaseOption {
    accordThickness: boolean;
    accordMaterial: boolean;
    accordMaterialName: boolean;
    accordMaterialColor: boolean;
    includeNoChaiDanBoard: boolean;
}
export interface ShareBoardInfConfigurationOption extends IBaseOption {
    Physical2EdgeColor: number;
    VisualStyle: RenderType;
    Viewport: ViewDirection;
    IsExportBoard: boolean;
    IsExportHardware: boolean;
    IsExportCurve: boolean;
    IsExportDimension: boolean;
    IsExportText: boolean;
    showBom: boolean;
    showBomTotal: boolean;
    showDrill: boolean;
    expireDays: string;
}
export interface ProcessingGroupOption {
    processGroupCategory: string[];
    addAlone: boolean;
}
export interface ConfigListMapOption extends IBaseOption {
    configList: {
        [k: string]: string[];
    };
}
export interface ChangeColorByRoomOrCabinetOption {
    accordRoomName: boolean;
    accordCabinetName: boolean;
}
export interface DoorRelatesInfoOption extends IBaseOption {
    hingeOption: [string, boolean][];
    hingeDecimal: number;
    filterNoDoor: boolean;
}
export interface IAutoHoleFaceOption extends IBaseOption {
    hight: number;
    filterDrill: string;
    filterBoards: string;
    groupByCabinetName: boolean;
}
export interface OneClickInspectionOption extends IBaseOption {
    InspectionOption: {
        isInterfere: boolean;
        isMaxSizeBoard: boolean;
        isMinSizeBoard: boolean;
        isModel: boolean;
        isDrill: boolean;
        isSpecialBoardContour: boolean;
        isSplitBoard: boolean;
        isDrawHole: boolean;
        isInvailDrill: boolean;
    };
    excludeDrawHoleOption: {
        boardName: boolean;
        boardNameValue: string;
        processingGroupName: boolean;
        processingGroupNameValue: string;
        boardThickness: boolean;
        boardThicknessValue: number;
        IsSplitBoard: boolean;
        boardNameCompareType: ECompareType;
        processingGroupNameCompareType: ECompareType;
        boardThicknessCompareType: ECompareType;
    };
    excludeInterfereOption: {
        boardName: boolean;
        boardNameValue: string;
        processingGroupName: boolean;
        processingGroupNameValue: string;
        hwComposityName: boolean;
        hwComposityNameValue: string;
        noChaiDanBoard: boolean;
        boardNameCompareType: ECompareType;
        processingGroupNameCompareType: ECompareType;
        hwComposityNameCompareType: ECompareType;
    };
}
export interface IArcBoardGrooveOption extends IBaseOption {
    isDrawArcGroove: boolean;
    retainedThickness: string;
    grooveAddLength: string;
    grooveAddWidth: string;
    grooveAddDepth: string;
    knifeRadius: string;
    grooveSpacing2: string;
    grooveWidth2: string;
    arcExtension2: string;
    retainedThickness2: string;
    knifeRadius2: string;
    grooveAddLength2: string;
    grooveAddWidth2: string;
    grooveAddDepth2: string;
    arcBoardFeedProcess: ArcBoardFeedProcess;
}
export interface IResourceStoreIcon extends IBaseOption {
    iconType: string;
}
export interface IBBSModelOption extends IBaseOption {
    height: number;
    width: number;
    top: number;
    left: number;
    isMax: boolean;
}
export interface PartsAnalysisOption extends IBaseOption {
    PartsOption: [string, boolean][];
}
export interface IHoleGrooveDimOption extends IBaseOption {
    isDrawSHInfo: boolean;
    sHoleInfo: string;
    sHoleMark: string;
    isDrawFBHInfo: boolean;
    fBHoleInfo: string;
    fBHoleMark: string;
    isDrawBrInfo: boolean;
    brInfo: string;
    isDrawEdgeRemark: boolean;
    edgeRemarkMark: string;
    isDrawSealing: boolean;
    isDrawFBGDim: boolean;
    isDrawSGDim: boolean;
    isRot: boolean;
}
export interface ExtrudePl2BoardOption extends IBaseOption {
    offsetInside: boolean;
    isWrapSide: boolean;
    pl2BrThinkness: number;
    pl2BrDepth: number;
    isDrawTop: boolean;
    isDrawBottom: boolean;
}
export interface OneClickRemarkOption extends IBaseOption {
    isDrawHingeRemark: boolean;
    isDrawHandleRemark: boolean;
    isDrawOtherRemark: boolean;
    clearHingeRemark: boolean;
    clearHandleRemark: boolean;
    clearOtherRemark: boolean;
    hingeRemarkOption: IRemarkOptionInfo;
    handleRemarkOption: IRemarkOptionInfo;
    otherRemarkOption: IRemarkOptionInfo;
}
export interface IRemarkOptionInfo {
    roomName: boolean;
    cabinetName: boolean;
    name: boolean;
    unit: boolean;
    ProcessingGroupList: boolean;
    actualExpr: boolean;
    model: boolean;
    factory: boolean;
    brand: boolean;
    spec: boolean;
    count: boolean;
    material: boolean;
    color: boolean;
    goodsSn: boolean;
    comments: boolean;
    position: boolean;
    filterNoDoor: boolean;
    decimal: number;
}
export interface ExportSTEPOption extends IBaseOption {
    drillHole: boolean;
    drilling: boolean;
    topLine: boolean;
    handle: boolean;
    hinge: boolean;
    compositeEntity: boolean;
}
export interface BoardOfNewDoorConfigOption extends IBaseOption {
    /** 盖板上延伸 */
    topExtend: string;
    /** 盖板下延伸 */
    bottomExtend: string;
    /** 盖板左延伸 */
    leftExtend: string;
    /** 盖板右延伸 */
    rightExtend: string;
    /** 拉手旋转角 */
    doorHandleAngle: number;
    /** 拉手水平位置距离 */
    doorHandleHorPos: HandleHorPos;
    doorHorSpacing: number;
    /** 拉手垂直位置距离 */
    doorHandleVePos: HandleVePos;
    doorVeSpacing: number;
}
export interface NewDoorConfigOption extends BoardOfNewDoorConfigOption {
    /** 上留空 */
    offsetTop: number;
    /** 下留空 */
    offsetBottom: number;
    /** 内嵌还是外盖 */
    doorPosType: DoorPosType;
    /** 内偏移 */
    offset: string;
    /** 中预留间隙 */
    space: number;
    /** 上预留间隙 */
    topSpace: number;
    /** 下预留间隙 */
    bottomSpace: number;
    /** 左预留间隙 */
    leftSpace: number;
    /** 右预留间隙 */
    rightSpace: number;
    /** 门板厚 */
    doorThickness: string;
    /** 补板厚 */
    addBoardThickness: string;
    /** 立板名称 */
    verticalBoardName: string;
    /** 层板名称 */
    layerBoardName: string;
    /** 拉手旋转角 */
    drawerHandleAngle: number;
    /** 拉手水平位置距离 */
    drawerHandleHorPos: HandleHorPos;
    drawerHorSpacing: number;
    /** 拉手垂直位置距离 */
    drawerHandleVePos: HandleVePos;
    drawerVeSpacing: number;
    /** 铰链上距 */
    hindeTopDist: number;
    /** 铰链下距 */
    hindeBottomDist: number;
    /** 铰链数 */
    hingeCount: number;
    /** 铰链碰撞单次偏移量 */
    deviation: number;
    /** 是否使用铰链规则 */
    useRule: boolean;
    /** 使用周围房名柜名 */
    useRoundCabinetName: boolean;
    /** 使用周围板材数据 */
    useBoardProcessOption: boolean;
    /** 使用周围板件数据时五金是否应用 */
    isModifyHardwareMaterial: boolean;
    /** 板材名 */
    boardMatName: string;
    /** 材料 */
    material: string;
    /** 颜色 */
    color: string;
    /** 房名 */
    roomName: string;
    /** 柜名 */
    cabinetName: string;
    goodMaterialId: string;
    /** 补板使用周围板材数据 */
    useBoardProcessOptionAddBr: boolean;
    /** 补板的板材名 */
    boardMatNameAddBr: string;
    /** 补板的材料 */
    materialAddBr: string;
    goodMaterialIdAddBr: string;
    /** 补板的颜色 */
    colorAddBr: string;
    /** 立板高级排钻 */
    lbHightDrillOption: IHightDrillOption;
    /** 立板封边上 */
    lbSealedUp: number;
    /** 立板封边下 */
    lbSealedDown: number;
    /** 立板封边左 */
    lbSealedLeft: number;
    /** 立板封边右 */
    lbSealedRight: number;
    /** 立板板边备注上 */
    verticalEdgeRemarkUp: string;
    /** 立板板边备注下 */
    verticalEdgeRemarkDown: string;
    /** 立板板边备注左 */
    verticalEdgeRemarkLeft: string;
    /** 立板板边备注右 */
    verticalEdgeRemarkRight: string;
    /** 层板高级排钻 */
    cbHightDrillOption: IHightDrillOption;
    /** 层板封边上 */
    topBrSeal: number;
    /** 层板封边下 */
    bottomBrSeal: number;
    /** 层板封边左 */
    leftBrSeal: number;
    /** 层板封边右 */
    rightBrSeal: number;
    /** 层板板边备注上 */
    layerEdgeRemarkUp: string;
    /** 层板板边备注下 */
    layerEdgeRemarkDown: string;
    /** 层板板边备注左 */
    layerEdgeRemarkLeft: string;
    /** 层板板边备注右 */
    layerEdgeRemarkRight: string;
}
//# sourceMappingURL=IOptionInterface.d.ts.map