import React from 'react';
import { NewPromptHandle, RenamePromptHandle } from './prompt';
import { CompositeTreeNode, TreeNode } from './tree/TreeNode';
import { TreeNodeType } from './types';
export interface ITreeNodeRendererProps {
    item: TreeNode;
    itemType: TreeNodeType.TreeNode;
}
export interface ICompositeTreeNodeRendererProps {
    item: CompositeTreeNode;
    itemType: TreeNodeType.CompositeTreeNode;
}
interface INewPromptRendererProps {
    item: NewPromptHandle;
    itemType: TreeNodeType.NewPrompt;
}
interface IRenamePromptRendererProps {
    item: RenamePromptHandle;
    itemType: TreeNodeType.RenamePrompt;
}
export type INodeRendererProps = ITreeNodeRendererProps | ICompositeTreeNodeRendererProps | INewPromptRendererProps | IRenamePromptRendererProps;
export type INodeRenderer = (props: any) => JSX.Element;
export interface INodeRendererWrapProps {
    item: TreeNode | CompositeTreeNode | NewPromptHandle | RenamePromptHandle;
    itemType: TreeNodeType;
    template?: React.JSXElementConstructor<any>;
    depth: number;
    expanded?: boolean;
    hasPrompt?: boolean;
    children: INodeRenderer;
}
export declare class NodeRendererWrap extends React.Component<INodeRendererWrapProps> {
    render(): React.FunctionComponentElement<any>;
    shouldComponentUpdate(nextProps: INodeRendererWrapProps): boolean;
}
export {};
//# sourceMappingURL=TreeNodeRendererWrap.d.ts.map