export declare function isNull(val: unknown): boolean;
export declare function isUndefined(val: unknown): boolean;
export declare function isNullOrUndefined(val: unknown): boolean;
/**
 * 安全执行 JSON.parse
 * @param data
 * @returns
 */
export declare function safelyParse(data: string): unknown | Array<any> | Record<string, any>;
export declare function convertUint8ArrayToNumber(value: Uint8Array): number;
/**
 * 防抖函数 (debounce)
 *
 * 适用场景：搜索框输入联想、窗口resize结束事件
 *
 * @param func 需要防抖的函数
 * @param wait 等待时间（毫秒）
 * @param immediate 是否立即执行第一次调用（true=立即执行，false=等待后执行）
 * @returns 包装后的防抖函数
 */
export declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number, immediate?: boolean): (...args: Parameters<T>) => void;
/**
 * 节流函数 (throttle)
 *
 * 适用场景：滚动事件、按钮防重复点击、鼠标移动事件
 *
 * @param func 需要节流的函数
 * @param wait 等待时间（毫秒）
 * @param options 配置选项
 *        leading: 是否执行第一次调用（true=执行，false=跳过）
 *        trailing: 是否执行最后一次调用（true=执行，false=跳过）
 * @returns 包装后的节流函数
 */
export declare function throttle<T extends (...args: any[]) => any>(func: T, wait: number, options?: {
    leading?: boolean;
    trailing?: boolean;
}): (...args: Parameters<T>) => void;
export declare function getOS(): string;
export declare function isMacOS(): boolean;
export declare function isWindows(): boolean;
export declare function isLinux(): boolean;
/**
 * 把 sendSEIMsg 的 JS 入参（ArrayBuffer / TypedArray / DataView 等）规范化为 Uint8Array。
 *
 * - 字符串入参不再支持，由调用方自行 `TextEncoder().encode(...)` 后传入；
 * - 对 TypedArray / DataView 视图保留原始 byteOffset / byteLength，不会把整段底层
 *   ArrayBuffer 当成数据；
 * - 类型不匹配时抛 `TypeError`，与 Native 层的报错文案保持一致。
 */
export declare function normalizeSEIPayload(input: ArrayBuffer | ArrayBufferView): Uint8Array;
/**
 * 把 native 回调里收到的二进制对象（Uint8Array / Buffer / ArrayBuffer）统一转成
 * 一个 **独立的** ArrayBuffer，对外暴露给业务层。
 *
 * 为什么要"独立"：
 * - Node Buffer / TypedArray 的 `.buffer` 是 native 复用的存储区，可能被后续事件
 *   覆写；直接 fire 出去会出现"业务层拿到的 message 跟下一帧消息字节错乱"。
 * - 这里通过 `new ArrayBuffer + Uint8Array.set` 显式拷贝，避免 `slice() as ArrayBuffer`
 *   的不严谨断言（slice 返回类型为 `ArrayBufferLike`，可能是 SharedArrayBuffer）。
 */
export declare function toIndependentArrayBuffer(message: Uint8Array | ArrayBuffer): ArrayBuffer;
