import TreeCollection from 'bloko/common/tree/treeCollection';
import type { ModelData, WalkCallback, AdditionalDefault } from 'bloko/common/tree/types';
import { IdCollectionPredicate, TreeFilter } from 'bloko/common/tree/types';
/**
* Рекурсивно проходит по списку моделей, применяет к каждой модели переданную функцию.
*/
declare const walk: (tree: ModelData[], callback: WalkCallback, parents?: ModelData[] | undefined) => void;
/**
* Возвращает коллекцию, созданную из дерева.
* @param {Array.} tree
* @param {WalkCallback} [callback] Функция, вызываемая на каждом элементе.
* @returns {TreeCollection}
*/
declare const fromTree: (tree: ModelData[], callback?: WalkCallback | undefined) => TreeCollection;
/**
* Возвращает элементы из списка, родители которых отсутствуют в этом же списке.
* Полезно для определения минимального набора выбранных элементов (если выбран родитель
* целиком, игнорируем его дочерние элементы).
* @param {TreeCollection} collection
* @param {Array.} ids
* @param {Array.} [excluded]
* @returns {Array.}
*/
declare const getIdsWithNoParentsInSameList: (collection: TreeCollection, ids: string[], excluded?: string[]) => string[];
/**
* Возвращает хэш, ключи в котором — ID из списка, имеющие потомков.
* @param {TreeCollection} collection
* @param {Array.} ids
* @returns {Object}
*/
declare const getParentsHashMap: (collection: TreeCollection, ids: string[]) => Record;
/**
* Возвращает дерево, состоящее только из элементов с указанными id и всех их предков.
* @param {TreeCollection} collection
* @param {Array.} ids
* @returns {Array.}
*/
declare const filterTreeByIdsWithParents: (collection: TreeCollection, ids: string[]) => ModelData[];
/**
* Возвращает только те ID, которые присутствуют в коллекции, и логирует ошибки.
* @param {TreeCollection} collection
* @param {Array.} ids
* @returns {Array}
*/
declare const filterMissingIds: (collection: TreeCollection, ids: string[]) => string[];
/**
* Возвращает ID только тех элементов, у которых нет потомков.
* @param {TreeCollection} collection
* @param {Array.} ids
* @returns {Array.}
*/
declare const filterParents: (collection: TreeCollection, ids: string[]) => string[];
/**
* Возвращает ID только тех элементов, которые можно выбрать в рамках опции singleCategory.
* @param {TreeCollection} collection
* @param {Array.} selectedIds
* @param {Array.} newIds
* @returns {Array.}
*/
declare const filterSingleCategory: (collection: TreeCollection, selectedIds: Set, newIds: string[]) => string[];
/**
* Возвращает новую коллекцию, содержащую элементы, для которых `filterFunction` вернула true.
* Если заматчился дочерний элемент, к результатам добавляются его родители до самого верха.
* Если заматчился родитель, к результатам НЕ добавляются его дочерние элементы (кроме тех,
* что тоже заматчились).
*/
declare const filterWithParents: TreeFilter;
/**
* Возвращает новую коллекцию, содержащую уникальные элементы самого нижнего уровня,
* для которых `filterFunction` вернула true (плоский список).
*/
declare const filterUniqueLeavesOnly: TreeFilter;
declare const isNotLeaf: IdCollectionPredicate;
declare const removeExcludedFromSelected: (selected: string[], excluded: string[]) => [string[], string[]];
declare const narrowDownExcludedFromChildrenToParents: (collection: TreeCollection, excluded: string[]) => string[];
declare const extendExcludedFromParentsToChildren: (collection: TreeCollection, selected: string[], excluded: string[]) => string[];
export { walk, fromTree, getParentsHashMap, getIdsWithNoParentsInSameList, filterTreeByIdsWithParents, filterMissingIds, filterParents, filterSingleCategory, filterWithParents, filterUniqueLeavesOnly, isNotLeaf, extendExcludedFromParentsToChildren, narrowDownExcludedFromChildrenToParents, removeExcludedFromSelected, };