/**
 * @file 工具集
 * @description 提供通用工具函数
 * @module utils
 */
/**
 * 创建延迟Promise
 * @param ms 延迟毫秒数
 */
export declare function delay(ms: number): Promise<void>;
/**
 * 节流函数
 * @param fn 要节流的函数
 * @param wait 等待时间(ms)
 */
export declare function throttle<T extends (...args: any[]) => any>(fn: T, wait: number): (...args: Parameters<T>) => ReturnType<T> | undefined;
/**
 * 防抖函数
 * @param fn 要防抖的函数
 * @param wait 等待时间(ms)
 * @param immediate 是否立即执行
 */
export declare function debounce<T extends (...args: any[]) => any>(fn: T, wait: number, immediate?: boolean): (...args: Parameters<T>) => void;
/**
 * 格式化字节大小
 * @param bytes 字节数
 * @param decimals 小数位数
 */
export declare function formatBytes(bytes: number, decimals?: number): string;
/**
 * 生成UUID
 */
export declare function generateUUID(): string;
/**
 * 检查浏览器支持的功能
 */
export declare const browserCapabilities: {
    /**
     * 检查是否支持摄像头
     */
    hasCamera(): boolean;
    /**
     * 检查是否支持WebAssembly
     */
    hasWasm(): boolean;
    /**
     * 检查是否支持WebWorker
     */
    hasWebWorker(): boolean;
    /**
     * 检查是否支持WebGL
     */
    hasWebGL(): boolean;
    /**
     * 检查是否支持SharedArrayBuffer
     */
    hasSharedArrayBuffer(): boolean;
    /**
     * 检查是否支持特定的功能
     * @param feature 功能名称
     */
    supports(feature: string): boolean;
};
/**
 * 数组分块
 * @param array 要分块的数组
 * @param chunkSize 每块大小
 */
export declare function chunk<T>(array: T[], chunkSize: number): T[][];
/**
 * 安全解析JSON
 * @param text JSON字符串
 * @param fallback 解析失败时的默认值
 */
export declare function safeParseJSON<T = any>(text: string, fallback: T): T;
/**
 * 限制值在指定范围内
 * @param value 要限制的值
 * @param min 最小值
 * @param max 最大值
 */
export declare function clamp(value: number, min: number, max: number): number;
/**
 * 等待加载图片
 * @param url 图片URL
 */
export declare function loadImage(url: string): Promise<HTMLImageElement>;
/**
 * 将Blob转换为Base64
 * @param blob Blob对象
 */
export declare function blobToBase64(blob: Blob): Promise<string>;
/**
 * 将Base64转换为Blob
 * @param base64 Base64字符串
 * @param contentType 内容类型
 */
export declare function base64ToBlob(base64: string, contentType?: string): Blob;
/**
 * 获取媒体约束
 * @param width 宽度
 * @param height 高度
 * @param facingMode 前后置摄像头
 * @param frameRate 帧率
 */
export declare function getMediaConstraints(width?: number, height?: number, facingMode?: 'user' | 'environment', frameRate?: number): MediaStreamConstraints;
/**
 * 检查URL是否有效
 * @param url 要检查的URL
 */
export declare function isValidUrl(url: string): boolean;
/**
 * DOM帮助函数
 */
export declare const dom: {
    /**
     * 创建元素
     * @param tag 标签名
     * @param attributes 属性
     * @param children 子元素
     */
    createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attributes?: Record<string, any>, children?: (string | Node)[]): HTMLElementTagNameMap[K];
    /**
     * 查找元素
     * @param selector 选择器
     * @param parent 父元素
     */
    find<E extends Element = Element>(selector: string, parent?: Document | Element): E | null;
    /**
     * 查找所有元素
     * @param selector 选择器
     * @param parent 父元素
     */
    findAll<E_1 extends Element = Element>(selector: string, parent?: Document | Element): E_1[];
    /**
     * 添加事件监听器
     * @param element 元素
     * @param event 事件名称
     * @param handler 处理函数
     * @param options 选项
     */
    on<K_1 extends keyof HTMLElementEventMap>(element: HTMLElement, event: K_1, handler: (event: HTMLElementEventMap[K_1]) => any, options?: AddEventListenerOptions): void;
    /**
     * 移除事件监听器
     * @param element 元素
     * @param event 事件名称
     * @param handler 处理函数
     * @param options 选项
     */
    off<K_2 extends keyof HTMLElementEventMap>(element: HTMLElement, event: K_2, handler: (event: HTMLElementEventMap[K_2]) => any, options?: EventListenerOptions): void;
    /**
     * 设置样式
     * @param element 元素
     * @param styles 样式对象
     */
    setStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
    /**
     * 添加类名
     * @param element 元素
     * @param classNames 类名
     */
    addClass(element: HTMLElement, ...classNames: string[]): void;
    /**
     * 移除类名
     * @param element 元素
     * @param classNames 类名
     */
    removeClass(element: HTMLElement, ...classNames: string[]): void;
    /**
     * 判断是否包含类名
     * @param element 元素
     * @param className 类名
     */
    hasClass(element: HTMLElement, className: string): boolean;
};
