import { IConfig, IPicBedType, IPicGo, IPicGoPlugin, IUploaderConfigItem, IUploaderConfigListItem } from 'universal-picgo';

/**
 * PicGo 自定义事件
 */
declare enum PicgoHelperEvents {
    REFRESH_PLUGIN_LIST = "refreshPluginList",
    DO_PICGO_CONFIG_PLUGIN = "doPicgoConfigPlugin",
    HANDLE_PLUGIN_ING = "handlePluginIng",
    HANDLE_PLUGIN_UNINSTALLED = "handlePluginUninstalled",
    HANDLE_PLUGIN_UPDATED = "handlePluginUpdated"
}
/**
 * picgo 工具类
 *
 * @version 1.6.0
 * @since 1.6.0
 * @author terwer
 */
declare class PicgoHelper {
    private readonly ctx;
    /**
     * !!! 这个 cfg 是响应式的，修改这个会自动完成持久化
     *
     * !!! 这个 cfg 是响应式的，修改这个会自动完成持久化
     *
     * !!! 这个 cfg 是响应式的，修改这个会自动完成持久化
     *
     * @private
     */
    private readonly reactiveCfg;
    private readonly readonlyCfg;
    /**
     * PicGo 帮助类
     *
     * @param ctx 上下文
     * @param reactiveCfg 响应式配置对象
     */
    constructor(ctx: IPicGo, reactiveCfg: IConfig);
    /**
     * 根据 key 获取配置项
     *
     * @param key
     * @param defaultValue
     */
    getPicgoConfig(key?: string, defaultValue?: any): any;
    /**
     * 保存配置
     *
     * @param cfg
     */
    savePicgoConfig(cfg: Partial<IConfig>): void;
    /**
     * 注册 PicGo 事件（仅触发一次）
     *
     * @param eventName
     * @param listener
     */
    bindOncePicgoEvent(eventName: string, listener: any): void;
    /**
     * 注册 PicGo 事件
     *
     * @param eventName
     * @param listener
     */
    bindPicgoEvent(eventName: string, listener: any): void;
    /**
     * 取消注册 PicGo 事件
     *
     * @param eventName
     * @param listener
     */
    unbindPicgoEvent(eventName: string, listener: any): void;
    /**
     * 触发事件
     *
     * @param eventName
     * @param args
     */
    triggerPicgoEvent(eventName: string, args?: any): void;
    /**
     * 获取所有的图床列表
     */
    getPicBeds(): IPicBedType[];
    /**
     * 获取启用的图床
     */
    getVisiablePicBeds(): IPicBedType[];
    /**
     * 获取可用的图床列表名称
     */
    getVisiablePicBedNames(): string[];
    /**
     * 根据图床数据获取可用的图床列表名称
     *
     * @param picBeds
     */
    static getVisiablePicBedNamesByPicBeds(picBeds: IPicBedType[]): string[];
    /**
     * 获取当前图床
     */
    getCurrentUploader(): any;
    getUploaderConfigList(type: string): IUploaderConfigItem;
    /**
     * 选择当前图床
     *
     * @param type 当前图床类型
     * @param id 当前图床配置ID
     * @author terwer
     * @since 0.7.0
     */
    selectUploaderConfig: (type: string, id: string) => any;
    /**
     * 设置默认图床
     *
     * @param type
     */
    setDefaultPicBed(type: string): void;
    /**
     * get picbed config by type，获取的是表单属性详细信息
     *
     * it will trigger the uploader config function & get the uploader config result
     * & not just read from
     *
     * @author terwer
     * @since 0.7.0
     */
    getPicBedConfig(type: string): {
        config: any[];
        name: any;
    };
    /**
     * 更新图床配置
     *
     * @param type 图床类型
     * @param id 图床配置ID
     * @param config 图床配置
     *
     * @author terwer
     * @since 0.7.0
     */
    updateUploaderConfig(type: string, id: string, config: IUploaderConfigListItem): void;
    /**
     * delete uploader config by type & id
     */
    deleteUploaderConfig(type: string, id: string): {
        configList: any;
        defaultId: any;
    } | undefined;
    /**
     * 切换当前上传图床
     *
     * @param type 图床类型
     * @param config 图床配置
     * @param id 配置id
     */
    private changeCurrentUploader;
    /**
     * upgrade old uploader config to new format
     *
     * @param type type
     * @author terwer
     * @since 0.7.0
     */
    private upgradeUploaderConfig;
    /**
     * 获取插件列表（PC only）
     */
    getPluginList(): IPicGoPlugin[];
    /**
     * 构建插件菜单
     *
     * @param plugin 插件对象
     *
     * @author terwer
     * @since 0.7.0
     */
    buildPluginMenu(plugin: IPicGoPlugin): void;
    /**
     * 安装插件
     *
     * @param fullName
     */
    installPlugin(fullName: string): Promise<{
        success: any;
        body: string;
        errMsg: any;
    }>;
    /**
     * 卸载插件
     *
     * @param fullName
     */
    uninstallPlugin(fullName: string): Promise<{
        success: any;
        body: string;
        errMsg: any;
    }>;
    /**
     * 更新插件
     *
     * @param fullName
     */
    updatelugin(fullName: string): Promise<{
        success: any;
        body: string;
        errMsg: any;
    }>;
    /**
     * restore Uploader & Transformer
     *
     * @param item 插件项
     * @param name 名称
     */
    handleRestoreState(item: string, name: string): void;
    importPlugin(): Promise<void>;
    /**
     * 增加配置元数据
     *
     * @param originData 原始数据
     */
    private completeUploaderMetaConfig;
    private getConfigByHelper;
}
export { PicgoHelper, PicgoHelperEvents };
