import { FC, ReactNode } from 'react';
import { ITreeItem, SelectAction, SelectionType } from './types';
import { TreeEventEmitter } from './TreeEventEmitter';
import './main.sass';
export interface ITreeProps {
    nodes: ITreeItem[];
    /**
     * Тип элементов, доступных для выбора:
     * дочерние ('child'), родительские ('parent'), все ('all').
     * Для отключения возможности выбора используется свойство 'none' (установлено по-умолчанию).
     */
    selectionType?: SelectionType;
    /** Разрешен ли выбор нескольких элементов. */
    multipleSelection?: boolean;
    /**
     * Какое событие будет вызывать выбор элемента:
     * click - клик по тексту (клик по иконке будет вызывать раскрытие элемента);
     * check - изменение состояния чекбокса (клик по элементу будет вызывать его раскрытие).
     */
    selectAction?: SelectAction;
    /**
     * Отключить выбор для заданных элементов.
     */
    disabledIds?: ITreeItem['id'][];
    /** Класс контейнера дерева. */
    containerClassName?: string;
    /** Класс узла дерева. */
    nodeClassName?: string;
    /** Класс выбранного узла дерева. */
    nodeActiveClassName?: string;
    nodeContentClassName?: string;
    /** Класс контейнера иконки. */
    nodeIconBoxClassName?: string;
    /** Класс иконки. */
    nodeIconClassName?: string;
    /** Класс текста узла дерева. */
    nodeLabelClassName?: string;
    /** Функция, которая будет вызвана при открытии элемента. */
    onNodeExpand?: (node: ITreeItem) => void;
    /**
     * Функция, которая будет вызвана при выборе очередного элемента.
     * selectedNodes: массив выбранных в текущий момент элементов.
     */
    onSelect?: (selectedNodes: ITreeItem[]) => void;
    /** Функция для отрисовки элемента для выбора элементов. */
    renderCustomCheckbox?: (checked: boolean, onChange: () => void) => ReactNode;
    /** Функция для отрисовки дополнительных элементов внутри узла. */
    renderNodeData?: (node: ITreeItem, selected: boolean) => ReactNode;
    /** Функция для отрисовки иконки узла. */
    renderNodeIcon?: (expanded: boolean, selected: boolean, isParentEl: boolean, node: ITreeItem) => ReactNode;
    /** Элемент для отображения загрузки. */
    loader?: ReactNode;
    /** Элемент для отображения отсутствия данных. */
    noData?: ReactNode;
    /** Класс для генерирования событий в дереве. */
    eventEmitter?: TreeEventEmitter;
}
export declare const Tree: FC<ITreeProps>;
