/**
 * @template {any} T
 * @description 优雅解析json字符串
 * @param {string} jsonString
 * @return {T}
 */
export const parseJsonGraceful: <T = any>(jsonString: string) => T
/**
 * @description 延时执行
 * @param {number} time
 * @return {Promise<any>}
 */
export const sleep: (time: number) => Promise<void>


/**
 * @description 带日期和颜色的日志打印
 */
export const logger: {
    /**
     * @template {any} T
     * @param {T} message 信息
     * @param {?number} timeStamp 时间戳 不传则为当前时间
     * @param {?string} color 自定义颜色
     */
    info: <T = any>(message: T, timeStamp?: number, color?: string) => void
    /**
    * @template {any} T
    * @param {T} message 信息
    * @param {?number} timeStamp 时间戳 不传则为当前时间
    * @param {?string} color 自定义颜色
    */
    error: <T = any>(message: T, timeStamp?: number, color?: string) => void
    /**
    * @template {any} T
    * @param {T} message 信息
    * @param {?number} timeStamp 时间戳 不传则为当前时间
    * @param {?string} color 自定义颜色
    */
    warn: <T = any>(message: T, timeStamp?: number, color?: string) => void
    /**
    * @template {any} T
    * @param {T} message 信息
    * @param {?number} timeStamp 时间戳 不传则为当前时间
    */
    log: <T = any>(message: T, timeStamp?: number) => void
    /**
    * @template {any} T
    * @param {T} message 信息
    * @param {?number} timeStamp 时间戳 不传则为当前时间
    * @param {?string} color 自定义颜色
    */
    success: <T = any>(message: T, timeStamp?: number, color?: string) => void
}
/**
 * @description 格式化阿拉伯数字为万,亿
 * @param {number} num
 * @returns {string | number}
 */
export const makeFriendly: (num: number) => string | number


/**
 * @description 格式化秒 为 小时 分钟 秒
 * @param {number} seconds
 * @returns {string}
 */
export const formatSeconds: (seconds: number) => string
/**
 * @description Uint8Array 转 字符串
 * @param {Uint8Array} dataSource
 * @returns {string}
 */
export const Uint8ArrayToString: (dataSource: Uint8Array) => string

/**
 * 
 * @param collection 
 * @param mapper 
 * @param CHART_TICKS  60
 * @param beforeCallback 
 */
export function dataSourceSliceOfECharts<T extends { timeStamp: number }>(collection: T[], mapper: (elem: T, latestSecond: number, second: number) => (keyof Omit<T, "timeStamp">)[], CHART_TICKS?: number, beforeCallback?: (data: T[][], sliceLength: number) => void): T[][]

interface Site {
    left: number
    top: number
    right: number
    bottom: number
}

export const ninePath:(ninePatch: { source: string, scale?: number } & Site, content: Site) => {
    "border-image-slice": string;
    "border-image-width": string;
    "border-image-outset": string;
    "border-image-repeat": string;
    "border-image-source": string;
    "border-width": string;
    "border-style": string;
    "box-sizing": string;
    "min-width": string;
    "min-height": string;
}