import type { TreeListData } from '../Tree';
import type { SyncFunctionComponent } from '../types/SyncFunctionComponent';
export type MultipleValue = TreeListData[] | string[] | undefined;
export type DisabledItemValue = string | {
    id: string;
    disabledReason?: string;
};
export type TreeLikeListProps<TValue extends MultipleValue = string[]> = {
    /**
     * Выбранные значения
     */
    value?: TValue;
    /**
     * Данные, которые необходимо отобразить в виде дерева.
     */
    data: TreeListData[];
    /**
     * Название класса, применяется к корневому компоненту.
     */
    className?: string;
    /**
     * Если true, при выборе родителя будет возможность выбора дочерних элементов
     */
    isConfirmChildrenSelection?: boolean;
    /**
     * Если 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;
};
