import { LogFunctions } from 'electron-log';
import { b as AppPathEnum, D as DownloadOptions, R as RegisterShortcut, c as AutoCheckData, U as UpdaterOptions, d as ShortcutOptions, I as InitOptions } from '../types-GVSlQham.js';
import { EventEmitter } from 'node:events';
import { BrowserWindow, IpcMainInvokeEvent } from 'electron';

declare class AppManager extends EventEmitter {
    private static instance;
    maxListeners: number;
    private static logger;
    private constructor();
    static getInstance(): AppManager;
    isDevMode(): boolean;
    isReady(): boolean;
    relaunch(): void;
    quit(): void;
    exit(code?: number): void;
    getName(): string;
    setName(name: string): void;
    getPath(): string;
    getPathByName(name: AppPathEnum): string;
    setLogsPath(path: string): void;
    setPath(name: AppPathEnum, path: string): void;
    getVersion(): string;
    setUserModelId(id: string): void;
    setAutoLaunch(auto: boolean): boolean;
    getLocale(): string;
    getLocaleCountryCode(): string;
    getSystemLocale(): string;
    getPreferredSystemLanguages(): string[];
}

declare class AutoLaunchManager {
    private static instance;
    private static logger;
    private constructor();
    static getInstance(): AutoLaunchManager;
    enable(): Promise<void>;
    disable(): Promise<void>;
    isEnabled(): Promise<boolean>;
}

declare class DevtoolManager {
    private static instance;
    private static logger;
    private constructor();
    static getInstance(): DevtoolManager;
    /**
     * 安装开发者工具
     * @returns {Promise<void>}
     */
    setupDevTools(): Promise<void>;
}

declare class DownloadManager extends EventEmitter {
    private static instance;
    private downloadItems;
    maxListeners: number;
    private static logger;
    private constructor();
    /**
     * 获取单例
     */
    static getInstance(): DownloadManager;
    private setupDownloadManager;
    /**
     * 获取文件名
     * @param {string} name 文件名
     * @param {string} mime 文件类型
     * @returns {string} 文件名
     */
    private getFilenameFromMime;
    /**
     * 注册监听
     * @param {Electron.Session} session 会话
     * @param {DownloadOptions} options 选项
     */
    private registerListener;
    /**
     * 下载
     * @param {Electron.BrowserWindow} window_ 窗口
     * @param {string} url 下载地址
     * @param {DownloadOptions} options 选项
     * @returns {Promise<any>} 返回值
     */
    start(window_: BrowserWindow, url: string, options: DownloadOptions): Promise<any>;
    /**
     * 暂停
     * @param {string} fileUrl 下载地址
     */
    pause(fileUrl: string): void;
    /**
     * 恢复
     * @param {string} fileUrl 下载地址
     */
    resume(fileUrl: string): void;
    /**
     * 取消
     * @param {string} fileUrl 下载地址
     */
    cancel(fileUrl: string): void;
}

declare class EnergyManager {
    private static instance;
    private static logger;
    private constructor();
    static getInstance(): EnergyManager;
    startPowerSaveBlocker(): void;
    stopPowerSaveBlocker(): void;
}

declare class FileManager {
    private static instance;
    private static ipc;
    private static logger;
    private constructor();
    static getInstance(): FileManager;
    /**
     * 启动文件监听
     */
    private static setupFileManager;
    /**
     * 清理目录
     * @param {string} dir 目录
     * @returns {Promise<boolean>} 是否清理成功
     */
    private static cleanupDirectory;
    /**
     * 删除用户数据
     * @param {string} name 用户数据名称
     * @returns {Promise<boolean>} 是否删除成功
     */
    private static deleteUserData;
    /**
     * 保存文件
     * @param {string} filePath 文件路径
     * @param {string} content 文件内容
     * @returns {Promise<void>} 保存结果
     */
    private static saveFile;
    /**
     * 删除文件
     * @param {string} filePath 文件路径
     * @returns {Promise<void>} 删除结果
     */
    private static removeFile;
}

declare enum IpcEvents {
    DESTROY = "DESTROY",// 销毁下载器
    INVOKE = "invoke",// 调用
    START_DOWNLOAD = "START_DOWNLOAD",// 开始下载
    PROGRESS_DOWNLOAD = "PROGRESS_DOWNLOAD",// 下载进度
    PAUSE_DOWNLOAD = "PAUSE_DOWNLOAD",// 暂停下载
    RESUME_DOWNLOAD = "RESUME_DOWNLOAD",// 恢复下载
    CANCEL_DOWNLOAD = "CANCEL_DOWNLOAD",// 取消下载
    COMPLETED_DOWNLOAD = "COMPLETED_DOWNLOAD",// 下载完成
    REGISTER_SHORTCUT = "REGISTER_SHORTCUT",// 注册快捷键
    CLEAN_CACHE = "CLEAN_CACHE",// 清理缓存
    CLEAN_STORAGE = "CLEAN_STORAGE",// 清理存储
    SET_WINDOW_SIZE = "SET_WINDOW_SIZE",// 设置窗口大小
    SET_WINDOW_ABLE = "SET_WINDOW_ABLE",// 设置窗口可操作
    GET_SYSTEM_INFO = "GET_SYSTEM_INFO",// 获取系统信息
    GET_SYSTEM_THEME = "GET_SYSTEM_THEME",// 获取系统主题
    GET_MEDIA_ACCESS_STATUS = "GET_MEDIA_ACCESS_STATUS",// 获取媒体访问权限状态
    ASK_FOR_MEDIA_ACCESS = "ASK_FOR_MEDIA_ACCESS",// 请求媒体访问权限
    OPEN_PATH_SYNC = "OPEN_PATH_SYNC",// 打开文件系统
    OPEN_PATH_ASYNC = "OPEN_PATH_ASYNC",// 打开文件
    OPEN_URL = "OPEN_URL",// 打开URL
    PATH_EXISTS = "PATH_EXISTS",// 路径是否存在
    CLEANUP_DIRECTORY = "CLEANUP_DIRECTORY",// 清理目录
    DELETE_USER_DATA = "DELETE_USER_DATA",// 删除用户数据
    SAVE_FILE = "SAVE_FILE",// 保存文件
    REMOVE_FILE = "REMOVE_FILE",// 删除文件
    CHECK_FOR_UPDATES = "CHECK_FOR_UPDATES",// 检查更新
    AUTO_CHECK_FOR_UPDATES = "AUTO_CHECK_FOR_UPDATES",// 自动检查更新
    DOWNLOAD_UPDATE = "DOWNLOAD_UPDATE",// 下载更新
    INSTALL_UPDATE = "INSTALL_UPDATE",// 安装更新
    CHECKING_FOR_UPDATE = "checking-for-update",
    UPDATE_AVAILABLE = "update-available",
    UPDATE_NOT_AVAILABLE = "update-not-available",
    UPDATE_DOWNLOADED = "update-downloaded",
    UPDATE_CANCELLED = "update-cancelled",
    DOWNLOAD_PROGRESS = "download-progress",
    UPDATE_ERROR = "error",
    UPDATE_LOGIN = "login",
    TITLE_BAR_CHANNEL = "TITLE_BAR_CHANNEL",// 标题栏通道
    TITLE_BAR_MAXIMIZE_REPLY_CHANNEL = "TITLE_BAR_MAXIMIZE_REPLY_CHANNEL",// 最大化回复通道
    TITLE_BAR_FULLSCREEN_REPLY_CHANNEL = "TITLE_BAR_FULLSCREEN_REPLY_CHANNEL"
}

declare class IpcManager extends EventEmitter {
    readyWebContents: WeakSet<Electron.WebContents>;
    private messageQueue;
    private static instance;
    maxListeners: number;
    private logger;
    private constructor();
    static getInstance(): IpcManager;
    /**
     * 发送消息
     * @param {IpcEvents} channel 事件名
     * @param {Array<any>} args 参数
     * @param {WebContents} target 目标
     */
    send(channel: IpcEvents | string, args?: Array<any>, target?: Electron.WebContents): void;
    /**
     * 监听消息
     * @param {IpcEvents} channel 事件名
     * @param {Function} listener 监听器
     */
    handle(channel: IpcEvents, listener: (_event: Electron.IpcMainInvokeEvent, ...args: any[]) => any): void;
    /**
     * 监听消息一次
     * @param {IpcEvents} channel 事件名
     * @param {Function} listener 监听器
     */
    handleOnce(channel: IpcEvents, listener: (_event: IpcMainInvokeEvent, ...args: any[]) => any): void;
    /**
     * 发送消息
     * @param {IpcEvents} channel 事件名
     * @param {any} message 消息
     * @param {MessagePortMain[]} transfer 传输
     * @param {Electron.WebContents} target 目标
     */
    postMessage(channel: IpcEvents, message: any, transfer?: Electron.MessagePortMain[], target?: Electron.WebContents): void;
}

declare class MediaManager {
    private static instance;
    private static logger;
    private static ipc;
    private constructor();
    static getInstance(): MediaManager;
    /**
     * 初始化事件处理
     */
    private static setupMediaManager;
    /**
     * 获取媒体访问权限状态
     * @param {MediaType} mediaType - 媒体类型
     * @returns {MediaAccessStatus} - 媒体访问权限状态
     */
    private static getMediaAccessStatus;
    /**
     * 请求媒体访问权限（摄像头、麦克风）
     * macOS 需要请求权限
     * @param {RequestMediaAccessType} mediaType - 媒体类型
     * @returns {Promise<boolean>} - 是否请求成功
     */
    private static askForMediaAccess;
}

declare class StorageManager {
    private static instance;
    private static logger;
    private constructor();
    static getInstance(): StorageManager;
    /**
     * 初始化事件处理
     */
    private static setupStorageManager;
}

declare class SystemManager {
    private static instance;
    private static appName;
    private static env;
    private static ipc;
    private static logger;
    private constructor();
    static getInstance(): SystemManager;
    /**
     * 初始化事件处理
     */
    private static setupSystemManager;
    /**
     * 设置UserAgent
     */
    private static setUserAgent;
    /**
     * 注册快捷键
     * @param {RegisterShortcut} shortcuts - 快捷键对象
     */
    registerShortcut(shortcuts: RegisterShortcut): void;
    /**
     * 注销快捷键
     */
    unRegisterAllShortcut(): void;
    /**
     * 是否系统资源
     */
    systemRelease(): void;
    /**
     * 忽略SSL证书错误
     */
    private static ignoreCertificateErrors;
    /**
     * 获取系统信息
     */
    private static getSystemInfo;
    /**
     * 获取系统主题
     * macOS 获取系统主题
     * @returns {Appearance} - 系统主题
     */
    private static getSystemTheme;
}

declare class UpdaterManager {
    private static instance;
    private static logger;
    private static ipcManager;
    private static updater;
    autoCheckData: AutoCheckData;
    private constructor();
    /**
     * 获取实例
     * @returns {UpdaterManager} 更新器管理器实例
     */
    static getInstance(): UpdaterManager;
    /**
     * 设置更新器
     * @param {UpdaterOptions} options 更新器选项
     */
    setupUpdaterManager(options: UpdaterOptions): void;
    /**
     * 设置渲染进程监听
     */
    private static onRendererListener;
    /**
     * 设置更新源
     * @param {string} url 更新源
     */
    private static setFeedURL;
    /**
     * 自动更新
     * @param {string} url 更新源
     */
    private static autoCheckForUpdates;
    /**
     * 检查更新
     * @param {string} url 更新源
     */
    private static checkForUpdates;
    /**
     * 下载更新
     */
    private static downloadUpdate;
}

declare class WindowManager {
    private static instance;
    private static ipc;
    private static logger;
    browserWindow: BrowserWindow | null;
    private constructor();
    /**
     * 获取单例
     */
    static getInstance(): WindowManager;
    /**
     * 监听渲染进程事件
     */
    private static onRendererEvent;
    /**
     * 监听窗口快捷键
     * @param {BrowserWindow | null} window 窗口
     * @param {ShortcutOptions} shortcutOptions 快捷键选项
     */
    private static onWindowShortcuts;
    private static registerFramelessWindowIpc;
    /**
     * 设置浏览器窗口
     * @param {BrowserWindow | null} window 窗口
     */
    setBrowserWindow(window: BrowserWindow | null): void;
    /**
     * 初始化
     * @param {BrowserWindow | null} window 窗口
     * @param {ShortcutOptions} shortcutOptions 快捷键选项
     */
    setupWindowManager(window: BrowserWindow | null, shortcutOptions?: ShortcutOptions): void;
}

declare class MainManager {
    version: string;
    private static instance;
    app: AppManager;
    downloader: DownloadManager;
    ipc: IpcManager;
    system: SystemManager;
    logger: LogFunctions;
    autoLaunch: AutoLaunchManager;
    energy: EnergyManager;
    window: WindowManager;
    storage: StorageManager;
    media: MediaManager;
    file: FileManager;
    updater: UpdaterManager;
    devtool: DevtoolManager;
    private constructor();
    static getInstance(): MainManager;
    init(options?: InitOptions): void;
}
declare const mainManager: MainManager;

export { mainManager as default };
