import { ModelData, TreeModel, ModelPredicate, WalkCallback, AdditionalDefault } from 'bloko/common/tree/types';
/**
* Создание модели для коллекции из набора атрибутов.
* Отсекает лишние поля.
*/
export declare const createModel: (attrs: TreeModel) => TreeModel;
/**
* Многоцелевая иерархическая коллекция,
* свободная от специфического поведения компонентов
*/
declare class TreeCollection {
protected models: TreeModel[];
protected topLevelModels: TreeModel[];
protected modelsById: Record>;
protected childrenById: Record;
protected parentsById: Record;
/**
* Создаёт из объекта модель и добавляет в коллекцию.
* Не добавляет модель в коллекцию, если модель с таким id уже существует
*/
addModel(attrs: TreeModel, parentId?: string): void;
toList(): TreeModel[];
getTopLevel(): TreeModel[];
/** Возвращает модель по ID или `undefined` */
getModel(id: string): TreeModel | undefined;
/** Возвращает существующие в коллекции модели по IDs */
getExistModels(ids: string[]): TreeModel[];
/** Возвращает ID родителя по ID модели или `undefined` */
getParentId(id: string): string | undefined;
/**
* Возвращает модель первого родителя по ID или `undefined`.
*/
getParent(id: string): TreeModel | undefined;
/** Возвращает массив IDs ближайших родителей по ID модели */
getParentIdsDuplicates(id: string): string[];
/** Возвращает массив ID родителей от ближних к дальним */
getParentIds(id: string, resultIds?: string[]): string[];
/** Возвращает массив моделей родителей от ближнего к дальнему */
getParents(id: string): TreeModel[];
/** Возвращает наличие дочерних моделей по ID родителя */
hasChildren(id: string): boolean;
/** Возвращает список ID дочерних по ID родителя */
getChildrenIds(id: string): string[];
/** Возвращает список дочерних моделей по ID родителя */
getChildren(id: string): TreeModel[];
/**
* Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию.
* items Список моделей для обработки.
* callback Вызываемая функция.
* [parents] Массив моделей родителей от ближнего к дальнему.
* Используется в случаях, когда на вход поступают модели из середины дерева, имеющие своих родителей.
*/
_walk(items: TreeModel[], callback: WalkCallback, parents?: TreeModel[]): void;
/** Рекурсивно проходит по дереву, применяет к каждой модели переданную функцию */
walk(callback: WalkCallback): void;
/**
* Рекурсивно проходит по дочерним элементам указанной модели, применяет к каждому переданную функцию.
* id ID модели, с которой начинать обход.
* callback Вызываемая функция.
*/
walkChildren(id: string, callback: WalkCallback): void;
/**
* Проходит по родителям модели до самого верха, применяет к каждому указанную функцию.
* id ID текущей модели.
* callback Вызываемая функция.
*/
walkParents(id: string, callback: WalkCallback): void;
/**
* Возвращает коллекцию в виде дерева.
* filter Функция-фильтр.
* Если указана, оставляет в дереве только те элементы, для которых вернулось `true`.
*/
toTree(filter?: ModelPredicate): ModelData[];
}
export default TreeCollection;