import { ElementType, ReactElement, ReactNode, Ref } from "react"; export interface CollectionNode { key: string; index: number; type: NodeType; elementType?: ElementType | string; ref: Ref; props: Record; } export interface CollectionItem extends CollectionNode { type: NodeType.item; content: ElementType | ReactElement[]; tooltip?: { props: Record; content: ReactElement; }; } export interface CollectionSection extends CollectionNode { type: NodeType.section; items?: CollectionItem[]; } export interface CollectionDivider extends CollectionNode { type: NodeType.divider; content: ElementType | ReactElement[]; } export declare enum NodeType { item = "item", section = "section", divider = "divider" } export declare function isSection(node: CollectionNode): node is CollectionSection; export declare function isDivider(node: CollectionNode): node is CollectionDivider; export declare function isItem(node: CollectionNode): node is CollectionItem; export declare function createCollectionItem({ key, index, elementType, ref, content, props }: CollectionItem): { key: string; index: number; type: NodeType; elementType: string | import("react").FunctionComponent | import("react").ComponentClass; ref: Ref; content: ElementType | ReactElement>[]; props: Record; }; export declare class CollectionBuilder { private parseItem; private parseSection; private parseDivider; private parseTooltip; build(children: ReactNode): CollectionNode[]; } export declare function useCollection(children: ReactNode): CollectionNode[];