import type { ColumnItem, FieldNames, NodeType, Value } from './typings';
/**
 * 深度优先遍历树结构
 * @param tree 树形数据
 * @param childrenKey 子节点的键名
 * @param callback 回调函数，接收当前节点、层级和层级索引
 */
export declare const dfsTreeEach: (tree: NodeType[], childrenKey: string, callback: (node: NodeType, level: number, levelIndex: number) => void) => void;
/**
 * 将级联选择器的值转换为输入框显示的值
 * @description 将数组值转换为以 " / " 分隔的字符串
 * @param value 级联选择器的值
 * @returns 格式化后的字符串
 */
export declare const cascaderValue2InptValue: (value?: Value) => string | undefined;
/**
 * 将树形结构转换成多列结构
 * @description 将树形数据转换为级联选择器使用的多列数据结构
 * @param options 选项数据
 * @param fieldsNames 字段名称配置
 * @param getOptionKey 获取选项键的函数
 * @returns 多列结构数据
 */
export declare const options2Columns: (options: NodeType[], fieldsNames: FieldNames, getOptionKey: (option: NodeType) => string) => ColumnItem[][];
/**
 * 查找节点的所有父级节点
 * @description 根据节点的parentsId查找所有父级节点
 * @param node 当前节点
 * @param columns 所有列数据
 * @returns 父级节点数组
 */
export declare const findParents: (node: ColumnItem, columns: ColumnItem[][]) => ColumnItem[];
/**
 * 根据当前值获取下一列数据
 * @description 根据已选值获取下一级可选项
 * @param columns 所有列数据
 * @param value 当前选中的值
 * @param valueKey 值的键名
 * @returns 下一列数据或null
 */
export declare const getNextColumnByValueCell: (columns: ColumnItem[][], value: Value, valueKey: string) => ColumnItem[] | null;
/**
 * 根据值获取对应的列数据
 * @description 根据已选值获取所有相关列数据
 * @param columns 所有列数据
 * @param value 当前选中的值
 * @param valueKey 值的键名
 * @returns 过滤后的列数据
 */
export declare const getColumnsByValue: (columns: ColumnItem[][], value: Value, valueKey: string) => ColumnItem[][];
/**
 * 根据值获取选中的选项
 * @description 根据已选值获取对应的选项对象
 * @param columns 所有列数据
 * @param value 当前选中的值
 * @param fieldNames 字段名称配置
 * @returns 选中的选项数组
 */
export declare const getSelectedOptionsByValue: (columns: ColumnItem[][], value: Value, fieldNames: FieldNames) => ColumnItem[];
/**
 * 安全获取文本内容
 * @param value 任意值
 * @returns 字符串
 */
export declare function safeGetText(value: unknown): string;
/**
 * 计算文本宽度
 * @param context Canvas上下文
 * @param text 文本内容
 * @param fontSize 字体大小
 * @returns 文本宽度
 */
export declare function displayTextWidth(context: CanvasRenderingContext2D | null, text: string, fontSize: number): number;
/**
 * 将选项数据转换为映射
 * @description 将选项数据转换为映射，用于快速查找选项
 * @param options 选项数据
 * @param fieldsNames 字段名称配置
 * @param getOptionKey 获取选项键的函数
 * @returns 选项映射
 */
export declare const options2Map: (options: NodeType[], fieldsNames: FieldNames, getOptionKey: (option: NodeType) => string) => Record<string, NodeType>;
