export declare const Cookie: {
    /**
     * 原生 JavaScript 获取 cookie 值
     * @param name
     */
    getCookie(name: string, cookiesStr?: string): string | null;
    getAllCookies(): {
        [x: string]: string;
    };
    deleteCookie(name: string, domain?: string | undefined, path?: string | undefined): void;
    deleteAllCookies(domain: string, path: string): void;
    setCookie(name: string, value: string | number | object | boolean, days?: number | undefined, domainStr?: string | undefined, path?: string): void;
};

/**
 * Copy工具类
 *
 * 使用方法：
 *  import CopyUtils from 'copy.js';
 *  const instance = new CopyUtils();
 *  instance.copy(value, callback);
 */
export declare class CopyUtils {
    fakeHandlerCallback: any;
    fakeHandler: any;
    fakeElem: any;
    copy(value: any, callback?: Function): void;
    removeFake(): void;
    copyText(callback?: Function): void;
}

/**
 * 时间处理
 */
export declare const DateTime: {
    /**
     * 返回 YYYY-MM-DD HH:mm:ss 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatDateTime(timeData: string | number | Date): string;
    /**
     * 返回 YYYY-MM-DD 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatDate(timeData: string | number | Date): string;
    /**
     * 返回 YYYY-MM-DD HH:mm 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatDateHours(timeData: string | number | Date): string;
    /**
     * 返回 MM-DD HH:mm 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatDayHours(timeData: string | number | Date): string;
    /**
     * 返回 HH:mm 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatHours(timeData: string | number | Date): string;
    /**
     * 返回 HH:mm:ss 格式化的字符串
     * @param {string | number | Date} timeData
     * @return {string}
     */
    formatMinute(timeData: string | number | Date): string;
    /**
     * 把秒转换成 HH[h]mm[m]ss[s] 的格式
     * @param {number} secondTime 秒
     * @return {string}
     */
    formatSecond(secondTime?: number): string;
};

declare interface DownloadParams {
    url: string;
    fileName?: string;
    payload?: object;
    finallyCallback?: () => void;
    successCallback?: (res: Response) => void;
    errorCallback: (res: Response) => void;
}

/**
 * 树形布局计算
 */
export declare const Layout: {
    /**
     * 获取页面宽度
     * @return {[type]} [description]
     */
    pageWidth(): number;
    /**
     * 获取页面高度
     * @return {[type]} [description]
     */
    pageHeight(): number;
};

/**
 * 封装 localStorage
 * 增加对 JSON 对象的转换
 * @return {[type]} [description]
 */
export declare const LocalDB: {
    /**
     * 按 key 存贮数据 value 到 localStorage
     * @param {String} key   存贮数据的唯一标识
     * @param {String, Object} value 所要存贮的数据
         */
     set(key: string | number, value: any): void;
     /**
      * 通过 key 从 localStorage 获取数据
      * @param  {String} key  获取数据的唯一标识
      * @return {String, Object}  返回空、字符串或者对象
          */
      get(key: string | number): any;
      /**
       * 通过 key 从 localStorage 删除数据
       * @param  {String} key  删除数据的唯一标识
       */
      remove(key: string | number): void;
      /**
       * 清空 localStorage
       * @return 无返回 NULL
       */
      clear(): void;
     };

     /**
      * Usage: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB
      * Compatibility: https://caniuse.com/#feat=indexeddb
      */
     export declare class LocalIndexedDB {
         private _db;
         private _version;
         private _database;
         private _storeName;
         private _openLog;
         /**
          * Constructor a new indexedDB object
          * @param database database name
          * @param version database version
          * @param storeName store object name
          * @param openLog - 是否打印 indexedDB 变化
          */
         constructor(database: string, version: number, storeName: string, openLog?: boolean);
         /**
          * Open the database indicated in constructor function.
          * This method return a Promise object which success will resolve db instance.
          */
         open(): Promise<IDBDatabase>;
         private getObjectStore;
         add(value: any, key?: string): Promise<IDBRequest<any>>;
         /**
          * Set a value to store object by key
          * @param key the key of store object
          * @param value the value of store object
          */
         set(key: string, value: any): Promise<IDBRequest<any>>;
         /**
          * Get the value with the given key
          * @param key the key of store object
          */
         get(key: string): Promise<IDBRequest<any>>;
         /**
          * Delete records in store with the given key
          * @param key the key of store object
          */
         delete(key: string): Promise<IDBRequest<any>>;
         /**
          * Delete all data in store object
          */
         clear(): Promise<IDBRequest<any>>;
         /**
          * Get the store object
          */
         getStore(): IDBObjectStore | null;
         /**
          * Wrap the database request result as promise object
          * @param operate A function which operate store
          */
         wrapStoreOperationPromise<T = IDBRequest>(operate: (store: IDBObjectStore) => IDBRequest): Promise<T>;
         private log;
     }

     export declare const Utils: {
         /**
          * @description 浏览器类型和版本检测
          * @returns {Boolean} `true`表示通过兼容性检测,`false`表示不通过兼容性检测
          */
         browserCheck(): boolean;
         checkExist(prop: any): boolean;
         /**
          * 转换 Byte 转换为小于1024值最大单位
          * @param value 'B' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' 转换原始值
          */
         convertBytes(value: number): string;
         isMacOs(): boolean;
         isWindows(): boolean;
         isMobileDevice(): boolean;
         /**
          * 根据参数名获取URL数据
          * @param  {[type]} name [description]
          * @param  {[type]} url  [description]
          */
         getParameterByName(name: string, url?: string | undefined): string | null | undefined;
         /**
          *
          * @param pathname 地址
          * @param queryParams url参数
          * @returns 两者生成的完整url地址
          */
         generateFullUrlPath(pathname: string, queryParams?: {}): string;
         /**
          *
          * @param search location.search
          * @returns query 参数
          */
         getQueryParameters(search: string): {
             [k: string]: string;
         };
         /**
          * 获取图片的Base64格式
          * @param  {[type]}   img      [description]
          * @param  {Function} callback [description]
          */
         getBase64(img: any, callback: (img: any) => void): void;
         /**
          * 百分比转换
          * @param  {[type]} num       [description]
          * @param  {[type]} precision [description]
          */
         percent(num: number, precision?: number | undefined): string;
         /**
          *
          *
          * @param {Record<string, any>} [object={}]
          * @returns
          */
         getCssText(object?: Record<string, any>): string;
         /**
          * @description: 去除字符串前后空格
          * @param: str 带有空格的字符串
          * @returns: 返回去除前后空格的字符串
          */
         trim(str: string): string;
         /**
          * @description: 去除字符串的所有空格
          * @param: str 带有空格的字符串
          * @returns: 返回去除所有空格的字符串
          */
         trimAll(str: string): string;
         getThousandth(num: string | number): string;
         textOverflowExchange(text: string, length: number): string;
         /**
          * json格式化
          * @param {格式化内容} text
          * @param {格式化占位符} space
          */
         jsonFormat(text: string, space?: number | undefined): string | null;
         /**
          * 多函数排序，匹配到0为止
          */
         sortByCompareFunctions(arr: any[], ...compareFunctions: any[]): void;
         /**
          * 转换排序字段
          */
         exchangeOrder(order: string): "asc" | "desc" | undefined;
         /**
          * 生成一个key
          */
         generateAKey(): string;
         /**
          * 判断是否是JSON string
          * @param  {String}  str 所要验证的字符串
          * @return {Boolean}   是否是JSON字符串
          */
         isJSONStr(str: string): boolean;
         /**
          *
          *  校验手机
          * @param {*} tel
          * @returns
          */
         isPhoneNumber(tel: string): boolean;
         /**
          *  判断是否是函数
          *
          * @param {*} arg
          * @returns
          */
         isFunction(arg: any): boolean;
         /**
          * 随机生成一串6位同时包含数字、大小写字母的字符串
          * @param len number
          */
         getRandomStr(len: number): string;
         /**
          * simply judge whether the array is equal
          * @param arr1
          * @param arr2
          * @returns arr1 === arr2
          */
         isEqualArr(arr1: string[], arr2: string[]): boolean;
         /**
          *
          *
          * @param {*} a
          * @param {*} b
          * @returns boolean
          */
         isEqual(a: any, b: any): boolean;
         /**
          *
          *
          * @param {*} targetComponent
          */
         shouldRender(targetComponent: any): void;
         /**
          *
          * 计算字符串长度(英文占1个字符，中文汉字占2个字符)
          * @param {*} str
          * @returns number
          */
         getStrlen(str: string): number;
         transformArray<T>(arr: T[], num: number): T[][];
         isEmpty(data?: any): boolean;
         isObj(obj?: any): boolean;
         removeEmpty(obj?: any): any;
         mergeDeep(object1: Record<string, any>, object2: Record<string, any>): Record<string, any>;
         /**
          * 下载文件
          * @param {string}   url              请求地址
          * @param {string}   fileName         输出名字，如果不传就是后端写入文件名
          * @param {object}   payload          请求数据
          * @param {function} successCallback  导出正确的回调函数，处理一些message展示
          * @param {function} errorCallback    导出失败的回调函数
          * @param {function} finallyCallback  成功/失败都会执行回调函数，例如控制一些visible显示隐藏
          * */
         downLoadData(params: DownloadParams): void;
         isUtf8(s: string): boolean;
         utf16to8(str: string): string;
         base64Encode(value: string): string;
     };

     export { }
