// 导入模块的类型
import GlobalLoading from './src/GlobalLoading.js';
import WtfLoading from './src/WtfLoading.js';

/**
 * GlobalLoading 类
 *
 * 用于管理全局加载动画的类，提供显示、隐藏、清除等功能。
 */
export declare class GlobalLoading {
    /**
     * 构造函数
     * @param options 配置选项，包括挂载根节点
     */
    constructor(options?: { root?: HTMLElement | string });

    /**
     * 显示加载动画
     * @param msg 加载提示信息
     * @param id 可选的加载 ID
     * @param opts 配置选项，包括是否绝对定位和遮罩透明度
     * @returns 返回加载的唯一 ID
     */
    show(msg?: string, id?: string, opts?: { absolute?: boolean; mask?: number }): string;

    /**
     * 隐藏指定的加载动画
     * @param id 加载的唯一 ID
     */
    hide(id: string): void;

    /**
     * 清除所有加载动画
     */
    clear(): void;

    /**
     * 暂停加载动画（从 DOM 中移除）
     */
    pause(): void;

    /**
     * 恢复加载动画（重新添加到 DOM 中）
     */
    resume(): void;
}

/**
 * WtfLoading 类
 *
 * 自定义元素，用于显示加载动画的 Web Component。
 */
export declare class WtfLoading extends HTMLElement {
    /**
     * 构造函数
     */
    constructor();

    /**
     * 生命周期回调：connectedCallback
     * 当元素被插入到 DOM 中时调用。
     */
    connectedCallback(): void;

    /**
     * 生命周期回调：disconnectedCallback
     * 当元素从 DOM 中移除时调用。
     */
    disconnectedCallback(): void;

    /**
     * 设置属性时触发的回调
     * @param name 属性名称
     * @param oldValue 属性的旧值
     * @param newValue 属性的新值
     */
    attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;

    /**
     * 观察的属性列表
     */
    static get observedAttributes(): string[];
}

/**
 * 初始化全局加载管理器
 *
 * 该函数用于注册自定义元素 `wtf-loading`，并返回一个全局加载管理器的实例。
 * 如果自定义元素已经注册，则不会重复注册。
 *
 * @param tag 自定义元素的名称，默认为 `wtf-loading`。
 * @param userOpts 其它配置项
 * @returns 返回一个全局加载管理器的实例。
 */
declare function initGlobalLoading(tag?: string, userOpts?: object): GlobalLoading;

export default initGlobalLoading;