import * as React from 'react'; import { FAIconProp } from '../FAIcon'; export type TableOfContentsItem = { name: React.ReactNode; className?: string; onClick?: () => void; depth?: number; isSelected?: boolean; isActive?: boolean; meta?: React.ReactNode; footer?: React.ReactNode; type?: 'divider' | 'group' | 'item'; icon?: FAIconProp; activeIcon?: FAIconProp; iconColor?: string; iconPosition?: 'left' | 'right'; textIcon?: string; isLoading?: boolean; isDisabled?: boolean; showSkeleton?: boolean; startExpanded?: boolean; action?: { icon?: FAIconProp; name?: string; isActive?: boolean; onClick: any; }; }; export type SelectItem = { name: React.ReactNode; value: string; label?: string; }; export type ITableOfContentsLink = TableOfContentsItem & { to?: string; exact?: boolean; isExternalLink?: boolean; }; export type RowComponentProps = { item: T; index: number; isExpanded: boolean; toggleExpanded: () => void; } & ({} extends E ? {} : { extra: E; }); export type RowComponentType = (props: React.PropsWithChildren>) => React.ReactElement | null; export type ITableOfContents = { contents: T[]; padding?: string; className?: string; rowComponent?: RowComponentType; 'data-test'?: string; title?: string; isOpen?: boolean; onClose?: () => void; enableDrawer?: boolean | number; withScroller?: boolean; } & ({} extends E ? { rowComponentExtraProps?: undefined; } : { rowComponentExtraProps: E; }); export declare function TableOfContents({ className, 'data-test': dataTest, padding, title, isOpen, onClose, withScroller, ...innerProps }: ITableOfContents): JSX.Element; declare function DefaultRowImpl({ item, isExpanded, toggleExpanded }: RowComponentProps): JSX.Element; declare namespace DefaultRowImpl { var displayName: string; } export declare const DefaultRow: React.MemoExoticComponent; export {};