/// <reference types="react" />
export interface ITreeProps {
    children?: JSX.Element | JSX.Element[];
    title: string | number;
    isDisabled?: boolean;
    isArrow?: boolean;
    icon?: JSX.Element;
    leadContent?: JSX.Element;
    className?: string;
    dataSource?: TreeSourceItem[];
    width?: string | number;
    onClick?: (item: TreeSourceItem) => void;
    setActive?: (item: TreeSourceItem) => boolean;
    onHandleDragStart?: (item: TreeSourceItem) => void;
    onHandleDragOver?: (item: TreeSourceItem) => void;
    onHandleDragFinish?: (tree: TreeSourceItem[]) => void;
    onTitleChanged?: (item: TreeSourceItem, newTitle: string | number) => void;
    isDragAllowed?: boolean;
    isEditAllowed?: boolean;
}
export declare type TTreeItemProps = Omit<ITreeProps, "dataSource" | "width"> & {
    isActive?: boolean;
    children?: TreeSourceItem[] | Element[] | JSX.Element | JSX.Element[];
    onClick?: (item: TreeSourceItem) => void;
    id: string | number;
    leadContent?: JSX.Element;
    setActive?: (item: TreeSourceItem) => boolean;
    elements?: TreeSourceItem[];
};
export interface ITreeContext {
    draggedOverId?: string | number;
    currentlyDraggedId?: string | number;
    isDragAllowed?: boolean;
    isEditAllowed?: boolean;
    handleDragStart?: (item: TreeSourceItem) => void;
    handleDrop?: () => void;
    handleDragOver?: (item: TreeSourceItem) => void;
    handleChangeTitle?: (item: TreeSourceItem, newTitle: string | number) => void;
}
export interface TreeSourceItem {
    title: string | number;
    icon?: JSX.Element;
    className?: string;
    isArrow?: boolean;
    isActive?: boolean;
    isDisabled?: boolean;
    id: string | number;
    leadContent?: JSX.Element;
    elements?: TreeSourceItem[];
}
