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