import { EBoardKeyList } from "../../Common/BoardKeyList";
import { ObjectId } from "../../DatabaseServices/ObjectId";
export declare enum BoardType {
    Layer = 0,
    Vertical = 1,
    Behind = 2
}
/**
 *勿随意更改属性名,若更改,需更改对应UI模态框的属性和检验方法的key
 *
 */
export interface IBaseOption {
    version?: number;
}
export interface BoardData {
    boardConfig: BoardConfigOption;
    boardProcess: BoardProcessOption;
}
export declare enum DrillType {
    Yes = "\u6392",
    None = "\u4E0D\u6392",
    More = "**\u591A\u79CD**",
    Invail = "\u65E0\u6548\u914D\u7F6E"
}
export declare enum FaceDirection {
    Front = 0,
    Back = 1
}
export declare enum LinesType {
    /** 正纹 */
    Positive = 0,
    /** 反纹 */
    Reverse = 1,
    /** 可翻转 */
    CanReversal = 2
}
export declare enum ComposingType {
    Positive = 0,
    Reverse = 1,
    Arbitrary = 2
}
/**
 *背板靠上还是靠下
 *
 * @export
 * @enum {number}
 */
export declare enum BehindHeightPositon {
    ForTop = "top",
    ForBottom = "bottom",
    AllHeight = "all"
}
/**
 *板件相对位置
 *
 * @export
 * @enum {number}
 */
export declare enum BrRelativePos {
    Front = "front",
    Back = "back",
    Top = "top",
    Bottom = "bottom",
    Left = "left",
    Right = "right",
    Div = "div"
}
export interface IHighSealedItem {
    size: number;
}
export interface BoardProcessOption extends IBaseOption {
    [EBoardKeyList.RoomName]?: string;
    [EBoardKeyList.CabinetName]?: string;
    [EBoardKeyList.BrMat]?: string;
    [EBoardKeyList.Mat]?: string;
    [EBoardKeyList.Color]?: string;
    [EBoardKeyList.Lines]?: LinesType;
    [EBoardKeyList.ProcessGroup]?: ObjectId[];
    [EBoardKeyList.BigHole]?: FaceDirection;
    [EBoardKeyList.DrillType]?: string;
    [EBoardKeyList.ComposingFace]?: ComposingType;
    [EBoardKeyList.HighSealed]?: IHighSealedItem[];
    [EBoardKeyList.UpSealed]?: string;
    [EBoardKeyList.DownSealed]?: string;
    [EBoardKeyList.LeftSealed]?: string;
    [EBoardKeyList.RightSealed]?: string;
    [EBoardKeyList.SpliteHeight]?: string;
    [EBoardKeyList.SpliteWidth]?: string;
    [EBoardKeyList.SpliteThickness]?: string;
    highDrill?: string[];
    frontDrill: boolean;
    backDrill: boolean;
    remarks: [string, string][];
    useBoardProcessOption?: boolean;
}
/**
 *板件参数
 */
export interface BoardConfigOption extends IBaseOption {
    type: BoardType;
    name: string;
    thickness?: number;
    height?: number;
    width?: number;
}
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;
}
/**
 *层板参数
 *
 * @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;
}
/**
 *层板钉参数
 *
 * @export
 * @interface LayerNailOption
 */
export interface LayerNailOption extends IBaseOption {
    isDraw: boolean;
    addCount: number;
    dist: number;
    isGroup: boolean;
    isInBack: 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;
}
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;
}
export interface SingleBoardOption extends BoardConfigOption {
    rotateX: number;
    rotateY: number;
    rotateZ: number;
}
export declare enum StripType {
    H = "h",
    V = "v"
}
export interface ClosingStripOption extends BoardConfigOption {
    boardRelative: BrRelativePos;
    striptype: StripType;
    frontShrink: number;
    isDrawFuZhu: boolean;
    fzWidth: number;
    fzThickness: number;
}
export interface IGrooveOption extends IBaseOption {
    grooveAddLength: string;
    grooveAddWidth: string;
    grooveAddDepth: string;
    knifeRadius?: string;
}
export interface IShinkOption extends IBaseOption {
    left: number;
    right: number;
    front: number;
    back: number;
    isLREqual: boolean;
    isFBEqual: boolean;
}
export declare 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 interface IHightDrillOption {
    up: string;
    down: string;
    left: string;
    right: string;
}
export declare enum CurtailType {
    PerBr = "0",
    Total = "1"
}
export interface IBoardBatchCurtailOption extends IBaseOption {
    type: CurtailType;
    front: number;
    back: number;
    left: number;
    right: number;
    moveBrs: boolean;
}
export declare enum BoardOpenDir {
    Left = 1,
    Right = 2,
    Up = 3,
    Down = 4,
    None = 0
}
export declare type AnyObject = {
    [key: string]: any;
};
export interface ISmoothEdgeOption extends IBaseOption {
    smoothEdge: number;
    edge: number;
    scale: number;
    filterArr: string[];
}
export interface IDrawBoardAutoCutOption {
    isAutoCut: boolean;
    isRelevance: boolean;
}
export interface IKnifeProps {
    radius: number;
    angle: number;
}
//# sourceMappingURL=BoardInterface.d.ts.map