import { RendererFactory2 } from '@angular/core';
import * as i0 from "@angular/core";
interface prettyConsole {
    /**
    * log打印
    * @param textOrTitle 标题或内容
    * @param content 内容
    */
    log: Function;
    /**
    * info打印
    * @param textOrTitle 标题或内容
    * @param content 内容
    */
    info: Function;
    /**
    * error打印
    * @param textOrTitle 标题或内容
    * @param content 内容
    */
    error: Function;
    /**
    * warning打印
    * @param textOrTitle 标题或内容
    * @param content 内容
    */
    warning: Function;
    /**
    * success打印
    * @param textOrTitle 标题或内容
    * @param content 内容
    */
    success: Function;
}
export declare class NcCommonService {
    private platformId;
    private rendererFactory;
    private renderer;
    constructor(platformId: Object, rendererFactory: RendererFactory2);
    /**
     * 精确加法
     * @param value1 第一个加数
     * @param value2 第二个加数
     * @returns 两数之和
     */
    mathAdd(value1: number, value2: number): number;
    /**
     * 精确减法
     * @param value1 被减数
     * @param value2 减数
     * @returns 两数之差
     */
    mathSubtract(value1: number, value2: number): number;
    /**
     * 精确乘法
     * @param value1 第一个乘数
     * @param value2 第二个乘数
     * @returns 两数之积
     */
    mathMultiply(value1: number, value2: number): number;
    /**
     * 精确除法
     * @param value1 被除数
     * @param value2 除数
     * @returns 两数之商
     */
    mathDivide(value1: number, value2: number): number;
    /**
     * 保留指定小数位数
     * @param num 需要处理的数值
     * @param len 要保留的小数位数
     * @returns 处理后的数值，保留指定小数位数
     */
    retainDecimal(num: number, len: number): number;
    /**
     * 保留指定小数位数的百分比
     * @param num 需要处理的数值
     * @param len 要保留的小数位数
     * @returns 处理后的百分比值，保留指定小数位数
     */
    retainPercentDecimal(num: number, len: number): number;
    /**
     * 设置Cookie
     * @param key Cookie的键
     * @param value Cookie的值
     * @param ttl Cookie的生存时间（毫秒）
     */
    setCookie(key: string, value: string, ttl: number): void;
    /**
     * 获取Cookie
     * @param key Cookie的键
     * @returns Cookie的值，如果不存在则返回null
     */
    getCookie(key: string): string | null;
    /**
     * 删除指定的Cookie
     * @param key 要删除的Cookie的键
     */
    removeCookie(key: string): void;
    /**
     * 清除所有Cookie
     */
    clearCookie(): void;
    /**
     * 设置LocalStorage项
     * @param key LocalStorage的键
     * @param value LocalStorage的值
     * @param ttl 可选的生存时间（毫秒）
     */
    setLocalStorage(key: string, value: any, ttl?: number): void;
    /**
     * 获取LocalStorage项
     * @param key LocalStorage的键
     * @returns LocalStorage的值，如果不存在或已过期则返回null
     */
    getLocalStorage(key: string): any;
    /**
     * 删除指定的LocalStorage项
     * @param key 要删除的LocalStorage项的键
     */
    removeLocalStorage(key: string): void;
    /**
     * 清除所有LocalStorage项
     */
    clearLocalStorage(): void;
    /**
     * 设置SessionStorage项
     * @param key SessionStorage的键
     * @param value SessionStorage的值
     */
    setSessionStorage(key: string, value: any): void;
    /**
     * 获取SessionStorage项
     * @param key SessionStorage的键
     * @returns SessionStorage的值，如果不存在则返回null
     */
    getSessionStorage(key: string): any;
    /**
     * 删除指定的SessionStorage项
     * @param key 要删除的SessionStorage项的键
     */
    removeSessionStorage(key: string): void;
    /**
     * 清除所有SessionStorage项
     */
    clearSessionStorage(): void;
    /**
     * 格式化时间
     * @param type 格式化类型yyyy-MM-dd HH:mm:ss，注意MM为月份、mm为分钟
     * @param time 可选。默认当前时间
     * @returns yyyy-MM-dd HH:mm:ss
     */
    formatDate(type: string, time?: any): string;
    /**
     * 获取两日期间的所有日期
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @returns 日期数组
     */
    getRangeDate(startDate: Date, endDate: Date): Date[];
    /**
    * 获取两日期间的天数
    * @param startDate 开始日期
    * @param endDate 结束日期
    * @returns 天数
    */
    getDaysBetween(startDate: Date, endDate: Date): number;
    /**
     * 数组去重
     * @param array 要去重的数组
     * @param keyFn 可选的函数，用于从每个数组项中提取用于比较的键，例如：item => item.id
     * @returns T[]
     */
    uniqueArray<T>(array: T[], keyFn?: (item: T) => any): T[];
    /**
     * 数组排序
     * @param array 要排序的数组
     * @param order 指定排序顺序，'asc' 为升序，'desc' 为降序
     * @param keyFn 可选。可以是对象的键名或一个函数，用于从数组项中提取排序值，例如：'age'或 item => item.name.length
     * @returns T[]
     */
    sortArray<T>(array: T[], order: 'asc' | 'desc', key?: keyof T | ((item: T) => any)): T[];
    /**
     * 判断对象是否为空
     * @param obj
     * @returns boolean
     */
    isObjectEmpty(obj: object): boolean;
    private x_PI;
    private PI;
    private a;
    private ee;
    /**
     * 百度坐标系 (BD-09) 与火星坐标系 (GCJ-02) 的转换
     * 即百度 转 谷歌、高德
     * @param lng 经度
     * @param lat 纬度
     * @returns [lng, lat]
     */
    bd09togcj02(lng: number, lat: number): number[];
    /**
     * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
     * 即谷歌、高德 转 百度
     * @param lng 经度
     * @param lat 纬度
     * @returns [lng, lat]
     */
    gcj02tobd09(lng: number, lat: number): number[];
    /**
     * WGS84转火星坐标系 (GCJ-02)
     * 即WGS84 转 谷歌、高德
     * @param lng 经度
     * @param lat 纬度
     * @returns [lng, lat]
     */
    wgs84togcj02(lng: number, lat: number): number[];
    /**
     * 火星坐标系 (GCJ-02)转WGS84
     * 即谷歌、高德 转 WGS84
     * @param lng 经度
     * @param lat 纬度
     * @returns [lng, lat]
     */
    gcj02towgs84(lng: number, lat: number): number[];
    private transformlat;
    private transformlng;
    /**
     * 判断是否在国内，不在国内则不做偏移
     */
    private out_of_china;
    /**
    * 小数形式经纬度转度分秒形式(秒保留3位小数)
    * @param digital  109.86330555555556
    * @returns degrees '109°51′47.9″'
    */
    digitalToDegrees(digital: number): string;
    /**
     * 度分秒形式经纬度转小数形式
     * @param degrees  '109°51′47.900000000016″'
     * @returns digital 109.86330555555556
     */
    degreesToDigital(degrees: string): number;
    private debounceTasks;
    private throttleTasks;
    /**
     * 防抖（Debounce）：适用于避免短时间内多次触发的场景，只有在事件停止触发后的一段时间才会执行。例如：搜索框输入，避免频繁的API请求。
     * @param key 用于标识Subject的键
     * @param delay 防抖延迟时间（毫秒）
     * @param fn 要防抖的函数
     */
    debounce(key: string, delay: number, fn: Function): void;
    /**
    * 节流（Throttle）：适用于限制事件在固定时间间隔内执行的场景，确保事件不会过于频繁地触发。例如：滚动页面时的事件处理，避免频繁的计算和渲染。
    * @param key 用于标识Subject的键
    * @param delay 节流延迟时间（毫秒）
    * @param fn 要节流的函数
    */
    throttle(key: string, delay: number, fn: Function): void;
    private fullLoadingElement;
    private fullLoadingKeyframesStyle;
    /**
     * 显示全屏加载中（全屏蒙版）
     *  @param content 可选。提示内容，默认：'加载中，请稍后...'
     */
    showFullLoading(content?: string): void;
    /**
    * 移除全屏加载中（全屏蒙版）
    */
    removeFullLoading(): void;
    /**
    * 美化控制台打印（log info error warning success）
    */
    console: prettyConsole;
    private prettyPrint;
    private timers;
    /**
     * 开始性能计时器
     * @param timerName 计时器名称
     */
    startTimer(timerName: string): void;
    /**
     * 结束性能计时器并返回持续时间
     * @param timerName 计时器名称
     * @returns 计时器持续时间（毫秒）
     */
    endTimer(timerName: string): number;
    /**
    * 深克隆
    * @param obj 被克隆对象
    * @returns 克隆对象
    */
    deepClone<T>(obj: T, seen?: Map<any, any>): T;
    /**
     * 获取文件后缀
     * @param filename string 文件名
     * @returns extension
     */
    getFileExtension(filename: string): string;
    /**
     * jsonp封装
     * @param obj \{url: '', success: ()=> {}}
     */
    jsonpFunction(obj: any): void;
    /**
     * 是否客户端
     */
    isBrowser: boolean;
    /**
     * 生成随机颜色
     * @returns HEX
     */
    generateRandomColor(): string;
    /**
    * 生成UUID
    * @returns UUID
    */
    generateUUID(): string;
    /**
     * 验证密码强度（必须包含大、小写字母、数字、特殊字符至少三类，长度8-16位）
     * @param password 待验证的密码
     * @returns 密码是否符合要求
     */
    passwordValidate(password: string): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<NcCommonService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<NcCommonService>;
}
export {};
