import * as React from 'react';
import { IConfigStore } from '../../Store/BoardStore';
import { IDoorInfo, IDrawerInfo } from '../../Store/DoorInterface';
import { DrillConfigSortType } from '../../Store/DrillStore';
import { BoardProcessOption } from "../../Store/OptionInterface/BoardProcessOption";
import { AnyObject, IDrawBoardAutoCutOption, IGrooveOption, LayerNailOption, TBBoardOption } from "../../Store/OptionInterface/IOptionInterface";
import { DrillingOption } from '../../Store/drillInterface';
import { BoardModalType } from "./BoardModalType";
export interface IConfigOption<T = AnyObject> {
    option?: T;
    nailData?: LayerNailOption;
    topBoardData?: TBBoardOption;
    bottomBoardData?: TBBoardOption;
    processData?: BoardProcessOption;
    ruleMap?: Map<string, DrillingOption[]>;
    grooveData?: IGrooveOption;
    doorsInfo?: (IDrawerInfo | IDoorInfo)[];
    processGroupCategory?: string[];
    autoCutOption?: IDrawBoardAutoCutOption;
    drillConfigSortType?: DrillConfigSortType;
    customConfigSort?: string[];
    other?: any;
    CADFilerData?: any[];
}
export interface IExportConfigData {
    type: string;
    config: AnyObject;
    other?: any;
}
export declare enum Config_ModalType {
    UserConfigModal = 0,//用户配置样式
    ConfigListTagModal = 1,//用户列表加标签样式
    UserConfigTagModal = 2,//用户配置加标签样式(目前还没有使用)
    ConfigListModal = 3
}
interface IConfigProps {
    type: BoardModalType;
    store: IConfigStore;
    isNotUpdateStore?: boolean;
    isImpExp?: boolean;
    isShowOperButton?: boolean;
    otherConfig?: () => AnyObject;
    hasconfig?: boolean;
    configurationType?: string;
    configType?: Config_ModalType;
    style?: React.CSSProperties;
    className?: string;
}
/**
 *用户配置组件  这和usertconfig.ts不一样  这个是每个界面的配置
 */
export declare class UserConfigComponent extends React.Component<IConfigProps, {}> {
    static defaultProps: {
        isUpdate: boolean;
        isImpExp: boolean;
        hasconfig: boolean;
    };
    private exportData;
    constructor(props: any);
    private handleSaveConfig;
    private handleDeleteConfig;
    private updateStoreOption;
    LoadAndInitConfig(): void;
    render(): JSX.Element;
    private handleImport;
    private handleExport;
}
/**
 * 特例:自定义命令呼出配置(总是设置配置)
 *      模块设计(总是不设置配置)
 *      封边 造型(会覆盖 需要先载入和初始化 然后在修改配置) 手动载入+初始化
 *      模态窗体(总是读取配置 设置配置)
 *
 * 对于<封边><造型>界面来说,使用Store来控制是否刷新配置比较有效,可以保证在没有进行交互时载入配置并更新设置.在有交互时,载入配置更新设置,然后在呼出界面
 * 1.在呼出UI时,总是载入配置并设置界面
 * 2.在交互时,手动载入配置,设置界面 然后禁止设置(更新)界面
 */
export declare class DialogUserConfig {
    private _Store;
    private _UIType;
    constructor(_Store: IConfigStore, _UIType: BoardModalType);
    LoadStoreUserConfig(): Promise<boolean>;
    InitConfig(): Promise<void>;
    /**
     * 将(单个&当前)配置保存到云端
     * @param [isInit=false] 指定提示的字符串是 配置初始化成功
     */
    private SaveCurConfig;
    SetCurConfigOption(): Promise<void>;
    /**
     *手动加载并且初始化配置(在某些时候手动初始化配置)
     *
     * @param {boolean} [needUpdateOption=true] true需要更新option
     * @memberof DialogUserConfig
     */
    LoadAndInitConfig(needUpdateOption?: boolean): Promise<void>;
}
export {};
//# sourceMappingURL=UserConfigComponent.d.ts.map