import { AbortablePromise } from './AbortablePromise'
type NotUndefined<T> = T extends undefined ? never : T
/**
 * 生成uuid
 * @returns string
 */
export declare function uuid(): string
/**
 * @description 对num自动填充px
 * @param {Number} num
 * @return {string} num+px
 */
export declare function addUnit(num: number | string): string
/**
 * @description 判断target是否对象
 * @param value
 * @return {boolean}
 */
export declare function isObj(value: any): value is object
/**
 * 获取目标原始类型
 * @param target 任意类型
 * @returns {string} type 数据类型
 */
export declare function getType(target: unknown): string
/**
 * @description 默认的外部格式化函数 - picker 组件
 * @param items - 要格式化的数据项数组或单个数据项
 * @param kv - 配置对象，包含 labelKey 作为键值
 * @returns 格式化后的字符串
 */
export declare const defaultDisplayFormat: (
  items: any[] | Record<string, any>,
  kv?: {
    labelKey?: string
  },
) => string
/**
 * @description 默认函数占位符 - pickerView组件
 * @param value 值
 * @return value
 */
export declare const defaultFunction: <T>(value: T) => T
/**
 * @description 检查值是否不为空
 * @param value 值
 * @return {Boolean} 是否不为空
 */
export declare const isDef: <T>(value: T) => value is NonNullable<T>
/**
 * @description 防止数字小于零
 * @param {number} num
 * @param {string} label 标签
 */
export declare const checkNumRange: (num: number, label?: string) => void
/**
 * @description 防止 pixel 无意义
 * @param {number} num
 * @param {string} label 标签
 */
export declare const checkPixelRange: (num: number, label?: string) => void
/**
 * 将 RGB 值转换为十六进制颜色代码。
 * @param {number} r - 红色分量 (0-255)。
 * @param {number} g - 绿色分量 (0-255)。
 * @param {number} b - 蓝色分量 (0-255)。
 * @returns {string} 十六进制颜色代码 (#RRGGBB)。
 */
export declare function rgbToHex(r: number, g: number, b: number): string
/**
 * 计算渐变色的中间变量数组。
 * @param {string} startColor 开始颜色
 * @param {string} endColor 结束颜色
 * @param {number} step 获取渲染位置，默认为中间位置
 * @returns {string[]} 渐变色中间颜色变量数组
 */
export declare const gradient: (startColor: string, endColor: string, step?: number) => string[]
/**
 * 确保数值不超出指定范围。
 * @param {number} num 要限制范围的数值
 * @param {number} min 最小范围
 * @param {number} max 最大范围
 * @returns {number} 在指定范围内的数值
 */
export declare const range: (num: number, min: number, max: number) => number
/**
 * 比较两个值是否相等。
 * @param {any} value1 第一个值
 * @param {any} value2 第二个值
 * @returns {boolean} 如果值相等则为 true，否则为 false
 */
export declare const isEqual: (value1: any, value2: any) => boolean
/**
 * 在数字前补零，使其达到指定长度。
 * @param {number | string} number 要补零的数字
 * @param {number} length 目标长度，默认为 2
 * @returns {string} 补零后的结果
 */
export declare const padZero: (number: number | string, length?: number) => string
/** @description 全局变量id */
export declare const context: {
  id: number
}
export type RectResultType<T extends boolean> = T extends true ? UniApp.NodeInfo[] : UniApp.NodeInfo
/**
 * 获取节点信息
 * @param selector 节点选择器 #id,.class
 * @param all 是否返回所有 selector 对应的节点
 * @param scope 作用域（支付宝小程序无效）
 * @returns 节点信息或节点信息数组
 */
export declare function getRect<T extends boolean>(
  selector: string,
  all: T,
  scope?: any,
): Promise<RectResultType<T>>
/**
 * 将驼峰命名转换为短横线命名。
 * @param {string} word 待转换的词条
 * @returns {string} 转换后的结果
 */
export declare function kebabCase(word: string): string
/**
 * 将短横线链接转换为驼峰命名
 * @param word 需要转换的短横线链接
 * @returns 转换后的驼峰命名字符串
 */
export declare function camelCase(word: string): string
/**
 * 检查给定值是否为数组。
 * @param {any} value 要检查的值
 * @returns {boolean} 如果是数组则返回 true，否则返回 false
 */
export declare function isArray(value: any): value is Array<any>
/**
 * 检查给定值是否为函数。
 * @param {any} value 要检查的值
 * @returns {boolean} 如果是函数则返回 true，否则返回 false
 */
export declare function isFunction<T extends Function>(value: any): value is T
/**
 * 检查给定值是否为字符串。
 * @param {unknown} value 要检查的值
 * @returns {value is string} 如果是字符串则返回 true，否则返回 false
 */
export declare function isString(value: unknown): value is string
/**
 * 否是数值
 * @param {*} value
 */
export declare function isNumber(value: any): value is number
/**
 * 检查给定值是否为 Promise 对象。
 * @param {unknown} value 要检查的值
 * @returns {value is Promise<any>} 如果是 Promise 对象则返回 true，否则返回 false
 */
export declare function isPromise(value: unknown): value is Promise<any>
/**
 * 检查给定的值是否为布尔类型
 * @param value 要检查的值
 * @returns 如果值为布尔类型，则返回true，否则返回false
 */
export declare function isBoolean(value: any): value is boolean
export declare function isUndefined(value: any): value is undefined
export declare function isNotUndefined<T>(value: T): value is NotUndefined<T>
/**
 * 检查给定的值是否为奇数
 * @param value 要检查的值
 * @returns
 */
export declare function isOdd(value: number): boolean
/**
 * 是否为base64图片
 * @param {string} url
 * @return
 */
export declare function isBase64Image(url: string): boolean
/**
 * 将外部传入的样式格式化为可读的 CSS 样式。
 * @param {object | object[]} styles 外部传入的样式对象或数组
 * @returns {string} 格式化后的 CSS 样式字符串
 */
export declare function objToStyle(styles: Record<string, any> | Record<string, any>[]): string
export declare const requestAnimationFrame: (cb?: () => void) => AbortablePromise<unknown>
/**
 * 暂停指定时间函数
 * @param ms 延迟时间
 * @returns
 */
export declare const pause: (ms: number) => AbortablePromise<unknown>
/**
 * 深拷贝函数，用于将对象进行完整复制。
 * @param obj 要深拷贝的对象
 * @param cache 用于缓存已复制的对象，防止循环引用
 * @returns 深拷贝后的对象副本
 */
export declare function deepClone<T>(obj: T, cache?: Map<any, any>): T
/**
 * 深度合并两个对象。
 * @param target 目标对象，将合并的结果存放在此对象中
 * @param source 源对象，要合并到目标对象的对象
 * @returns 合并后的目标对象
 */
export declare function deepMerge<T extends Record<string, any>>(
  target: T,
  source: Record<string, any>,
): T
/**
 * 深度合并两个对象。
 * @param target
 * @param source
 * @returns
 */
export declare function deepAssign(
  target: Record<string, any>,
  source: Record<string, any>,
): Record<string, any>
/**
 * 构建带参数的URL
 * @param baseUrl 基础URL
 * @param params 参数对象，键值对表示要添加到URL的参数
 * @returns 返回带有参数的URL
 */
export declare function buildUrlWithParams(baseUrl: string, params: Record<string, string>): string
type DebounceOptions = {
  leading?: boolean
  trailing?: boolean
}
export declare function debounce<T extends (...args: any[]) => any>(
  func: T,
  wait: number,
  options?: DebounceOptions,
): T
export declare function throttle(func: Function, wait: number): Function
/**
 * 根据属性路径获取对象中的属性值
 * @param obj 目标对象
 * @param path 属性路径，可以是字符串或字符串数组
 * @returns 属性值，如果属性不存在或中间的属性为 null 或 undefined，则返回 undefined
 */
export declare const getPropByPath: (obj: any, path: string) => any
/**
 * 检查一个值是否为Date类型
 * @param val 要检查的值
 * @returns 如果值是Date类型，则返回true，否则返回false
 */
export declare const isDate: (val: unknown) => val is Date
/**
 * 检查提供的URL是否为视频链接。
 * @param url 需要检查的URL字符串。
 * @returns 返回一个布尔值，如果URL是视频链接则为true，否则为false。
 */
export declare function isVideoUrl(url: string): boolean
/**
 * 检查提供的URL是否为图片URL。
 * @param url 待检查的URL字符串。
 * @returns 返回一个布尔值，如果URL是图片格式，则为true；否则为false。
 */
export declare function isImageUrl(url: string): boolean
/**
 * 判断环境是否是H5
 */
export declare const isH5: boolean
/**
 * 剔除对象中的某些属性
 * @param obj
 * @param predicate
 * @returns
 */
export declare function omitBy<O extends Record<string, any>>(
  obj: O,
  predicate: (value: any, key: keyof O) => boolean,
): Partial<O>
/**
 * 缓动函数，用于在动画或过渡效果中根据时间参数计算当前值
 * @param t 当前时间，通常是从动画开始经过的时间
 * @param b 初始值，动画属性的初始值
 * @param c 变化量，动画属性的目标值与初始值的差值
 * @param d 持续时间，动画持续的总时间长度
 * @returns 计算出的当前值
 */
export declare function easingFn(t?: number, b?: number, c?: number, d?: number): number
export {}
