import { WebContents } from 'electron';
import type { ElectronWindowsManagerOptions, BWItem, BVItem, PreloadWebContentsConfig } from '../common';
export declare const getCustomSession: () => Electron.Session;
export declare const enable: (win: WebContents) => void;
export declare class WindowsManager {
    loadingViewUrl: string | undefined;
    errorViewUrl: string | undefined;
    preload?: string;
    preloadWebContentsConfig?: PreloadWebContentsConfig;
    windows: Map<number, BWItem | BVItem>;
    preloadedBW: BWItem | null;
    preloadedBW_FramelessWithButtons: BWItem | null;
    preloadedBW_FramelessNoButtons: BWItem | null;
    preloadedBV: BVItem | null;
    preloading: boolean;
    webviewDomainWhiteList: string[];
    private createQueue;
    private isCreating;
    /**
     * webview 域名白名单
     * 传入格式示例：
     *   [
     *     'example.com',         // 精确匹配 example.com
     *     '.example.com',        // 匹配所有 example.com 的子域名，如 a.example.com、b.example.com
     *     'sub.domain.com',      // 精确匹配 sub.domain.com
     *     'localhost',           // 匹配 localhost 及本地回环地址
     *     '127.0.0.1',           // 匹配 127.0.0.1
     *     '::1'                  // 匹配 IPv6 本地回环
     *   ]
     * 注意：
     *   - 以点开头的（如 .example.com）会匹配所有子域名。
     *   - 不带点的（如 example.com）只匹配主域名。
     *   - 'localhost'、'127.0.0.1'、'::1' 以及局域网 IP（如 192.168.x.x、10.x.x.x、172.16.x.x~172.31.x.x）都视为本地白名单。
     */
    constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsConfig?: PreloadWebContentsConfig, webviewDomainWhiteList?: string[]);
    /**
     * 设置预加载的webContents配置
     * @param preloadWebContentsConfig 预加载的webContents配置
     */
    setPreloadWebContentsConfig(preloadWebContentsConfig: PreloadWebContentsConfig): void;
    /**
     * 预加载实例
     */
    private _preloadInstances;
    /**
     * 创建预加载的窗口
     * @param options 窗口选项
     * @returns 预加载的窗口
     */
    private _createPreloadBW;
    /**
     * 创建预加载的浏览器视图
     * @returns 预加载的浏览器视图
     */
    private _createPreloadBV;
    create(options: Omit<ElectronWindowsManagerOptions, 'type'> & {
        type?: 'BW';
    }): Promise<BWItem>;
    create(options: ElectronWindowsManagerOptions & {
        type: 'BV';
    }): Promise<BVItem>;
    create(options: ElectronWindowsManagerOptions): Promise<BVItem | BWItem>;
    /**
     * 处理创建队列
     */
    private processCreateQueue;
    /**
     * 实际的窗口创建逻辑
     */
    private _createWindow;
    _setLoadingView(window: BWItem, createOptions: ElectronWindowsManagerOptions): void;
    get(idOrName: string | number): BWItem | BVItem | undefined;
    getAll(type: 'BW'): Map<number, BWItem>;
    getAll(type: 'BV'): Map<number, BVItem>;
    getAll(): Map<number, BWItem | BVItem>;
    close(idOrName: string | number): boolean;
    closeAll(): void;
    rename(idOrName: string | number, newName: string): BWItem | BVItem | undefined;
    reInitUrl(idOrName: string | number, url: string): BWItem | BVItem | undefined;
    getPreload(): string | undefined;
    private _applyBrowserWindowOptions;
    private _applyBrowserViewOptions;
    createPreloadWebContents(url: string): Promise<unknown>;
}
export declare let isInitialized: boolean;
export declare const initialize: (preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsConfig?: PreloadWebContentsConfig, webviewDomainWhiteList?: string[]) => WindowsManager;
//# sourceMappingURL=index.d.ts.map