import { IObjectRecord } from "../types.js";
/**
 * 扁平数组转树形结构数组-配置项
 *
 * @since 0.0.4
 */
interface IFlat2TreeOptions<T> {
    /**
     * 节点唯一标识属性名
     */
    readonly key?: string;
    /**
     * 父节点唯一标识属性名
     */
    readonly parentKey?: string;
    /**
     * 节点数据处理器
     *
     * @param item    当前节点
     */
    readonly processor?: (item: T) => T;
}
/**
 * 扁平数组转树形结构数组-默认配置项
 *
 * @since 0.0.4
 */
declare const DefaultFlat2TreeOptions: IFlat2TreeOptions<any>;
/**
 * 扁平数组转树形结构数组
 *
 * @since 0.0.4
 * @template T
 * @param [array]                               扁平数组
 * @param [options]                             配置项
 * @param [options.key="id"]                    节点唯一标识属性名
 * @param [options.parentKey="pid"]             父节点唯一标识属性名
 * @param [options.processor=(item)=>(item)]    节点数据处理器
 * @returns {T[]}                               树形结构数组
 */
declare function flat2tree<T extends IObjectRecord & {
    children?: T[];
}>(array: T[], options?: IFlat2TreeOptions<T>): T[];
export { IFlat2TreeOptions, DefaultFlat2TreeOptions, flat2tree };
