import TreeCollection from 'bloko/common/tree/treeCollection';
import { IdPredicate, TreeModel, AdditionalDefault } from 'bloko/common/tree/types';
import { LabelComponentType, IconComponentType } from 'bloko/blocks/treeSelector/Dummy/types';
interface ItemsListProps {
/** Имя инпута. */
inputName: string;
/** Дерево элементов. */
collection: TreeCollection;
/** Разрешает выбор только элементов без потомков. */
leavesOnly?: boolean;
/** Разрешает выбор только одного элемента. */
singleChoice?: boolean;
/** Выбранные ID. */
selected: string[];
/** Изначально открытые ID, которые можно динамически изменять извне. */
expanded: string[];
/** Запрещённые ID. */
disabled: string[];
indeterminate: string[];
/** Компонент для вывода метки у элемента дерева */
LabelComponent?: LabelComponentType;
/** Компонент для вывода иконки у элемента дерева */
IconComponent?: IconComponentType;
/** Обработчик изменения набора выбранных ID.
* В аргументах получает `{String} id`, `{Boolean} isSelected`. */
onChange?: (id: string, isSelected: boolean) => void;
/** Обработчик изменения состояния раскрытия элементов
* В аргументах получает список id раскрытых элементов `{Array} expanded` */
onExpansion: (id: string) => void;
items?: TreeModel[];
parentId?: string;
/** Функция возвращает true для ID элементов, которые можно выбрать. При использовании
* вместе с параметром leavesOnly применяется только к элементам без потомков. */
checkSelectableId: IdPredicate;
}
interface ItemsListComponent {
(props: ItemsListProps): JSX.Element;
}
declare const _default: ItemsListComponent;
export default _default;