import type { SyncFunctionComponent } from '../../types/SyncFunctionComponent';
import type { TreeListData } from '../types';
export type DisabledItemValue = string | {
    id: string;
    disabledReason?: string;
};
export type TreeListItemValue = TreeListData | string;
export type TreeListProps<TValue extends TreeListItemValue = string> = {
    /**
     * Выбранное значение
     */
    value?: TValue | null;
    /**
     * Данные, которые необходимо отобразить в виде дерева.
     */
    data: TreeListData[];
    /**
     * Название класса, применяется к корневому компоненту.
     */
    className?: string;
    /**
     * Если true, то дерево будет раскрыто по умолчанию
     * @default 'false'
     */
    isInitialExpanded?: boolean;
    /**
     * Уровень раскрытия дерева по умолчанию, при isExpanded=true
     * @default '10'
     */
    expandedLevel?: number;
    /**
     * Список `value` элементов дерева, которые не доступны для взаимодействия
     */
    disabledItems?: DisabledItemValue[];
    /**
     * Render-props, позволяет более гибко настраивать содержимое item
     */
    renderItem?: SyncFunctionComponent<Omit<TreeListData, 'children'>>;
    /**
     * Функция, которая запускается при изменении состояния.
     */
    onChange?: (value: TValue) => void;
    /**
     *  Переключает компонент в режим работы с объектами а не с id элементов
     */
    isObjectMode?: boolean;
};
