import * as React from 'react';
export declare type NodeProps = {
    item: object | string | number;
    path: string;
    name: string;
    expanded: boolean;
    expandToggler: (e: React.MouseEvent) => void;
    onClick: (e: React.MouseEvent) => void;
    onDoubleClick: (e: React.MouseEvent) => void;
    parentArray?: boolean;
};
export declare type TreeNodeAdjuster = (obj: object) => {
    data: object;
    deltaPath?: string;
};
export declare type PropertyFilter = <T extends object>(obj: T, key: keyof T) => any;
declare type Props = {
    id: string;
    root: object;
    hideRootElement?: boolean;
    onNodeClicked?: (path: string, id: string) => void;
    onNodeDoubleClicked?: (path: string, id: string) => void;
    renderer?: (props: NodeProps) => any;
    indentPx?: number;
    callBackState?: (key: string, value: any, level: number) => boolean;
    nodeAdjuster?: TreeNodeAdjuster;
    propertyFilter?: PropertyFilter;
    nodesState?: TreeNodeState;
};
export declare type TreeNodeState = {
    [path: string]: boolean;
};
declare type TreeState = {
    expanded: TreeNodeState;
};
export declare const DefaultTreeRenderer: (props: NodeProps) => JSX.Element;
export declare class Tree extends React.Component<Props, TreeState> {
    static defaultProps: Partial<Props>;
    constructor(props: Props);
    recursivelyExpand: (obj: object, condition: (key: string, value: any, level: number) => boolean) => TreeNodeState;
    private recursivelyExpandImpl;
    toggleExpanded: (e: React.MouseEvent<Element, MouseEvent>) => void;
    onNodeClicked: (e: React.MouseEvent<Element, MouseEvent>) => void;
    onNodeDoubleClicked: (e: React.MouseEvent<Element, MouseEvent>) => void;
    render(): JSX.Element;
    private renderNode;
    private renderChildren;
}
export {};
