/** 基础工具 */
/**
 * 生成唯一 id
 */
export declare function uuid(): string;
export declare const halfPixel: (n: number) => number;
export declare const isEmptyValue: (value: any) => boolean;
/**
 * 安全解析 JSON
 * @param data 待解析数据
 * @param fallback 失败时返回值，默认 null
 * @param validator 结果校验器
 */
export declare function safeParseJson<T = any>(data: unknown, fallback?: T | null, validator?: (value: unknown) => value is T): T | null;
/** 设置字段的默认valuePath */
export declare function generateValuePath(fieldLink: string, subFieldKey: string): string;
/**
 * 提取参考路径中的索引，替换模板路径中的 [n] 占位符
 * @param refPath 参考路径（含具体索引，如 $.f_gdb[1].routing_operation_1_）或直接传数字索引
 * @param templatePath 模板路径（含 [n] 占位符，如 $.f_gdb[n].ccc / $.ddd[n].ccc）
 * @returns 替换后的完整路径（如 $.f_gdb[1].ccc / $.ddd[1].ccc）
 */
export declare function replacePathIndexPlaceholder(refPath: string | number | undefined, templatePath: string): string;
/**
 * 按分隔符截取字符串最后一个片段，处理空值/无分隔符边界
 * @param str 待截取的字符串（允许空/undefined）
 * @param separator 分隔符，默认.
 * @returns 最后一个片段，空值返回空字符串
 */
export declare function getLastSegment(str?: string, separator?: string): string;
/**
 * 提取 $.变量名[内容] 格式的方法（截取到 ] 并包含 ]）
 * @param str
 * @returns
 */
export declare function getBeforeBracket(str: string): string;
/** 防抖特性的RAF，同一帧内多次调用 schedule() 只会执行一次  */
export declare function createRafOnce(): {
    schedule: (fn: () => void) => void;
    syncSchedule: <T>(fn: () => T) => Promise<T>;
    cancel: () => void;
};
export declare function listToTree<T extends {
    value: any;
    label: string;
    _item?: {
        parentId?: string;
    };
}>(list: T[], transform?: (node: T) => any): any[];
export declare function flattenTree<T extends Record<string, any>>(tree: T[], childrenKey?: string): T[];
/** 从 URL 提取 name */
export declare function getFileName(url: string): string;
/**
 * 编辑态校验：允许键入过程中的中间态（如 `.`、`1.`、`-`、`-.`）
 * 不允许任何空白字符（避免写入 DataManager 脏数据）
 */
export declare function isNumberTextEditing(text: any): boolean;
/**
 * 合并两个按钮数组
 * @param {Array} A - 基础数组
 * @param {Array} B - 更新数组
 * @param {Object} options
 * @param {string[]} options.keyFields - 用于唯一匹配的字段
 * @param {string[]} options.fieldsToMerge - 从 B 合并到 A 的字段
 * @param {boolean} options.isAllowMerge - 是否允许合并
 * @param {boolean} options.isConcat - 如果 A数组是空是否直接用B 数组
 * @returns {Array} 合并后的数组
 */
export declare function mergeByMultiKey(A: any[], B: any[], { keyFields, fieldsToMerge, isAllowMerge, isConcat, }?: {
    keyFields?: string[] | undefined;
    fieldsToMerge?: string[] | undefined;
    isAllowMerge?: boolean | undefined;
    isConcat?: boolean | undefined;
}): any[];
