import * as React from 'react';
import './treeView.css';
export type TreeItem = {
    id: string;
    parent: TreeItem | undefined;
    children: TreeItem[];
};
export type TreeState = {
    expandedItems: Map<string, boolean>;
};
export type TreeViewProps<T> = {
    name: string;
    rootItem: T;
    render: (item: T) => React.ReactNode;
    title?: (item: T) => string;
    icon?: (item: T) => string | undefined;
    isError?: (item: T) => boolean;
    isVisible?: (item: T) => boolean | 'if-needed';
    selectedItem?: T;
    onAccepted?: (item: T) => void;
    onSelected?: (item: T) => void;
    onHighlighted?: (item: T | undefined) => void;
    noItemsMessage?: string;
    dataTestId?: string;
    treeState: TreeState;
    setTreeState: (treeState: TreeState) => void;
    autoExpandDepth?: number;
};
export declare function TreeView<T extends TreeItem>({ name, rootItem, render, title, icon, isError, isVisible, selectedItem, onAccepted, onSelected, onHighlighted, treeState, setTreeState, noItemsMessage, dataTestId, autoExpandDepth, }: TreeViewProps<T>): any;
type TreeItemHeaderProps<T> = {
    item: T;
    treeItems: Map<T, TreeItemData>;
    selectedItem: T | undefined;
    onSelected?: (item: T) => void;
    toggleExpanded: (item: T) => void;
    toggleSubtree: (item: T) => void;
    highlightedItem: T | undefined;
    isError?: (item: T) => boolean;
    onAccepted?: (item: T) => void;
    setHighlightedItem: (item: T | undefined) => void;
    render: (item: T) => React.ReactNode;
    title?: (item: T) => string;
    icon?: (item: T) => string | undefined;
};
export declare function TreeItemHeader<T extends TreeItem>({ item, treeItems, selectedItem, onSelected, highlightedItem, setHighlightedItem, isError, onAccepted, toggleExpanded, toggleSubtree, render, title, icon }: TreeItemHeaderProps<T>): any;
type TreeItemData = {
    depth: number;
    expanded: boolean | undefined;
    parent: TreeItem | null;
    next: TreeItem | null;
    prev: TreeItem | null;
};
export {};
//# sourceMappingURL=treeView.d.ts.map