import * as React from "react";
import { TreeNode } from "../tree/types";
export type ItemRendererProps<Item = any> = {
    item: Item;
};
export type _BaseItemRenderer<ItemType> = React.ComponentType<ItemRendererProps<ItemType>>;
export declare abstract class BaseItemRenderer<ItemType, S extends {} = {}> extends React.Component<ItemRendererProps<ItemType>, S> {
    render(): React.ReactNode;
    protected abstract renderItem(item: ItemType): React.ReactNode;
}
export type NodeRendererProps<Item = any> = {
    item: Item;
    node: TreeNode;
};
export type _BaseNodeRenderer<ItemType> = React.ComponentType<NodeRendererProps<ItemType>>;
export declare abstract class BaseNodeRenderer<ItemType, S extends {} = {}> extends React.Component<NodeRendererProps<ItemType>, S> {
    render(): React.ReactNode;
    protected abstract renderItem(item: ItemType): React.ReactNode;
}
export type BaseRendererMap<R extends React.ComponentType<any>> = {
    [k: string]: R;
};
export type ItemRendererMap = BaseRendererMap<_BaseItemRenderer<any>>;
export type TreeRendererMap = BaseRendererMap<_BaseNodeRenderer<any>>;
