import * as H from 'history';
import * as React from 'react';
import * as GQL from '../backend/graphqlschema';
import { AbsoluteRepo } from '../repo';
import { ErrorLike } from '../util/errors';
import { TreeNode } from './Tree';
export interface TreeRootProps extends AbsoluteRepo {
    history: H.History;
    location: H.Location;
    activeNode: TreeNode;
    activePath: string;
    depth: number;
    expandedTrees: string[];
    parent: TreeNode | null;
    parentPath?: string;
    index: number;
    isExpanded: boolean;
    selectedNode: TreeNode;
    onHover?: (filePath: string) => void;
    onSelect: (node: TreeNode) => void;
    onToggleExpand: (path: string, expanded: boolean, node: TreeNode) => void;
    setChildNodes: (node: TreeNode, index: number) => void;
    setActiveNode: (node: TreeNode) => void;
}
declare const LOADING: 'loading';
interface TreeRootState {
    treeOrError?: typeof LOADING | GQL.IGitTree | ErrorLike;
}
export declare class TreeRoot extends React.Component<TreeRootProps, TreeRootState> {
    node: TreeNode;
    private subscriptions;
    private componentUpdates;
    private rowHovers;
    constructor(props: TreeRootProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: TreeRootProps): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    /**
     * Prefetches the children of hovered tree rows. Gets passed from the root tree layer to child tree layers
     * through the onHover prop. This method only gets called on the root tree layer component so we can debounce
     * the hover prefetch requests.
     */
    private fetchChildContents;
    private setChildNode;
}
export {};
//# sourceMappingURL=TreeRoot.d.ts.map