/**
 * 分组树
 */
export type GroupTree<Member, Group extends PropertyKey = string> = {
    members?: Member[];
} & {
    [C in Group]?: GroupTree<Member, Group>;
};
/**
 * 获取分组路径
 */
export type GetGroupPath<Member, Group extends PropertyKey = string> = (member: Member, index: number, array: Member[]) => Group[];
/**
 * 根据 getGroupPath 提示的多层级分组信息，将 members 整理成 树状的分组层级结构
 * @param members
 * @param getGroupPath
 * @returns
 */
export declare function groupTreeBy<Member, Group extends PropertyKey = string>(members: Member[], getGroupPath: GetGroupPath<Member, Group>): GroupTree<Member, Group>;
/**
 * 获取组树某个节点的子组名字
 * @param node
 * @returns
 */
export declare function getSubGroupNames<Group extends PropertyKey = string>(node: GroupTree<any, Group>): Group[];
/**
 * 获取某个节点的所有直接子组节点
 * @param node
 * @returns
 */
export declare function getSubGroupNodes<Member, Group extends PropertyKey = string>(node: GroupTree<Member, Group>): GroupTree<Member, Group>[];
/**
 * 获取某个节点的所有直接子组名字 和 对应的节点
 * @param node
 * @returns
 */
export declare function getSubGroupEntries<Member, Group extends PropertyKey = string>(node: GroupTree<any, Group>): [Group, GroupTree<Member, Group>][];
/**
 * 判断 目标是否不是 GroupTree
 * @param target
 * @returns
 */
export declare function isGroupTree(target?: any): any;
/**
 * 判断组节点是否包含子组
 * @param node
 * @returns
 */
export declare function hasSubGroups(node: GroupTree<any, any>): boolean;
/**
 * 扁平化组树
 * @remarks
 * @param tree
 * @returns 返回启平后的 所有成员 和 所有节点
 *      + members - 包含树中所有节点的成员
 *      + nodes - 树的所有节点
 */
export declare function flatGroupTree<Member>(tree: GroupTree<Member, PropertyKey>): {
    members: Member[];
    nodes: GroupTree<Member, PropertyKey>[];
};
//# sourceMappingURL=group-tree.d.ts.map