/// <reference types="node" />
import { ArrayDesc, CookieOptions } from "./types";
/**
 * @description 深度克隆
 * @param o
 */
export declare function deepCopy(o: any): any;
/**
 * @description 是否为空
 * @param val
 */
export declare function isEmpty(val: any): boolean;
/**
 * @description 节流
 * @param fn
 * @param wait
 */
export declare function throttle(fn: Function, wait: number): () => void;
/**
 * @description 防抖
 * @param fn
 * @param wait
 */
export declare function debounce(fn: Function, wait: number): () => void;
/**
 * @description 将文件转换成base64
 * @param {*} file
 * @returns Promise<unknown>
 */
export declare function getBase64(file: any): Promise<unknown>;
/**
 * @description 设置cookie
 * @param {String} name  关键字
 * @param {String} value 要存储的指
 * @param { CookieOptions } config { type: "天", expires: 1 }
 */
export declare function setCookie(name: string, value: string, config?: CookieOptions): void;
/**
 * @description 获取cookie
 * @param {String} key 关键字
 */
export declare function getCookie(key: string): string | false;
/**
 * @description 删除cookie
 * @param { String } key
 */
export declare function delCookie(key: string): void;
/**
 * @description 返回一个在范围内的随机数
 * @param { Number } n1 起始
 * @param { Number } n2 结束
 * @returns { Number }
 */
export declare function randomNumber(n1: number, n2: number): number;
/**
 * @description 字母大小写切换
 * @param { String } str
 * @param { Number } type 数字 1:首字母大写、2：首母小写、3：大小写转换、4：全部大写、5：全部小写
 * @returns { String }
 */
export declare function changeCase(str: string, type: number): string;
/**
 * @description 数组排序
 * @param arr 数组
 * @param desc 排序方式 'asc'升序，'desc'降序
 */
export declare function arraySort(arr: number[], desc?: ArrayDesc): number[];
/**
 * @description 对象数组快速排序
 * @param arr
 * @param key 排序依据关键字
 * @param desc 排序方式 'asc'升序，'desc'降序
 * @returns any
 */
export declare function arrayObjSort(arr: any[], key: string, desc?: ArrayDesc): any;
/**
 * @description 数组去重
 * @param arr
 * @returns any[]
 */
export declare function arrayUnique(arr: any[]): any[];
/**
 * @description 数组的交集
 * @param arr1
 * @param arr2
 * @returns any[]
 */
export declare function arrayIntersection(arr1: any[], arr2: any[]): any[];
/**
 * @description 数组的差集 arr1-arr2
 * @param arr1
 * @param arr2
 * @returns any[]
 */
export declare function arrayMinus(arr1: any[], arr2: any[]): any[];
/**
 * @description 数组的并集，参数可以使多个
 * @returns any[]
 */
export declare function arrayUnion(...args: any[]): any[];
/**
 * @description 是否是一个类
 * @param obj
 * @param { Boolean } strict 是否严格模式
 * @returns boolean
 */
export declare function isClass(obj: any, strict?: boolean): boolean;
/**
 * @description 判断是否是正则表达式
 * @param value
 * @returns boolean
 */
export declare function isRegExp(value: any): boolean;
/**
 * @description 判断是否是日期对象
 * @param value
 * @returns boolean
 */
export declare function isDate(value: any): boolean;
/**
 * @description 判断value是否是浏览器内置对象
 * @param value
 * @returns boolean
 */
export declare function isNative(value: any): boolean;
/**
 * @description cached：记忆函数：缓存函数的运算结果
 * @param fn (str: any) => any
 * @returns (str: any) => any
 */
export declare function cached(fn: (str: any) => any): (str: any) => any;
/**
 * @description 横线转驼峰命名
 * @param str
 * @returns string
 */
export declare function camelize(str: string): string;
/**
 * @description 下划线转驼峰命名
 * @param str
 * @returns string
 */
export declare function _2camelize(str: string): string;
/**
 * @description 驼峰命名转横线命名：拆分字符串，使用 - 相连，并且转换为小写
 * @param str
 * @returns string
 */
export declare function hyphenate(str: string): string;
/**
 * @description 获取浏览器信息
 * @returns { type: string; version: number; }
 */
export declare function getExplorerInfo(): {
    type: string;
    version: number;
};
/**
 * @description 检测是否为PC端浏览器模式
 * @returns boolean
 */
export declare function isPCBroswer(): boolean;
/**
 * @description base64数据导出文件，文件下载
 * @param { String } filename 下载后的文件名称
 * @param { String } data 要下载的base64数据
 */
export declare function downloadFile(filename: string, data: string): void;
/**
 * @description 浏览器放大全屏
 */
export declare function toFullScreen(): void;
/**
 * @description 浏览器退出全屏
 */
export declare function exitFullscreen(): void;
export declare const requestAnimationFrame: (callback: FrameRequestCallback) => void;
export declare const cancelAnimationFrame: ((handle: number) => void) & typeof webkitCancelAnimationFrame;
/**
 * @description 实现将项目的图片路径转化成base64
 * @param { String } img 图片路径
 * @returns Promise<unknown>
 */
export declare function getBase64ByUrl(img: string): Promise<unknown>;
/**
 * @description 将DOM元素img转换为base4的主要方法
 * @param { HTMLImageElement } img DOM元素img
 * @param { Number } width
 * @param { Number } height
 * @returns { String }  base64
 */
export declare function getBase64Image(img: HTMLImageElement, width?: number, height?: number): string;
/**
 * @description base64转Blob
 * @param { String } base64
 * @returns { Blob }
 */
export declare function convertBase64ToBlob(base64: string): Blob;
/**
 * @description 将图片路径转换成file文件类型
 * @param { String } url 图片路径
 * @param { String } name 转换后的图片名称
 * @returns { Promise<unknown> }
 */
export declare function toFileByUrl(url: string, name?: string): Promise<unknown>;
/**
 * @description 判断是否是json数据
 * @param { any } obj
 * @returns { Boolean }
 */
export declare function isJson(obj: any): boolean;
/**
 * @description 隐藏制定的所有元素
 * @param el
 * @returns void
 */
export declare function hideElements(...el: HTMLElementTagNameMap[keyof HTMLElementTagNameMap][]): void;
/**
 * @description 元素是否具有指定的类
 * @param el
 * @param className
 * @returns { boolean }
 */
export declare function hasClassName(el: HTMLElementTagNameMap[keyof HTMLElementTagNameMap], className: string): boolean;
/**
 * @description 获取当前页面的滚动位置
 * @param { HTMLElement } el dom元素
 * @returns { x: any, y: any }
 */
export declare function getScrollPosition(el?: any | Window): {
    x: any;
    y: any;
};
/**
 * @description 滚动到顶部
 * @returns { void }
 */
export declare function scrollToTop(): void;
/**
 * @description 父元素是否包含子元素
 * @param { HTMLElementTagNameMap[keyof HTMLElementTagNameMap] } parent 父级元素
 * @param { HTMLElementTagNameMap[keyof HTMLElementTagNameMap] } child 子元素
 * @returns { boolean }
 */
export declare function elementContains(parent: HTMLElementTagNameMap[keyof HTMLElementTagNameMap], child: HTMLElementTagNameMap[keyof HTMLElementTagNameMap]): boolean;
/**
 * @description 指定元素是否在视口可见
 * @param { HTMLElementTagNameMap[keyof HTMLElementTagNameMap] } el
 * @param { boolean } partiallyVisible
 * @returns { boolean }
 */
export declare function elementIsVisibleInViewport(el: HTMLElementTagNameMap[keyof HTMLElementTagNameMap], partiallyVisible?: boolean): boolean;
/**
 * @description 分辨设备是移动设备还是桌面设备
 * @returns { "Mobile" | "Desktop" }
 */
export declare function detectDeviceType(): "Mobile" | "Desktop";
/**
 * @description 获取当前 URL参数的对象
 * @param { String } url 地址
 * @returns { {} }
 */
export declare function getURLParameters(url: string): {};
/**
 * @description 获取两个日期之间的天数间隔
 * @param { number } dateInitial
 * @param { number } dateFinal
 * @returns { number }
 */
export declare function getDaysDiffBetweenDates(dateInitial: number, dateFinal: number): number;
/**
 * @description 为指定选择器创建具有指定范围、步长和持续时间的计时器
 * @param { number } selector 选择器
 * @param { number } start 开始数字
 * @param { number } end 结束数字
 * @param { number } step 步长
 * @param { number } duration 持续时间，毫秒
 * @returns { NodeJS.Timeout }
 */
export declare function counter(selector: string, start: number, end: number, step?: number, duration?: number): NodeJS.Timeout;
/**
 * @description 将一个字符串复制到剪贴板
 * @param { string } str
 * @returns { Promise<unkown> }
 */
export declare function copyToClipboard(str: string): Promise<void>;
//# sourceMappingURL=index.d.ts.map