import { BaseImplementation } from './base.js'; interface ItemElement { item: T; type: TYPE; dependencies: T[]; dependenciesCount: number; visited: boolean; addedAtLevel: number; } interface Group { type: T; level: number; position: number; length: number; } export declare class GroupArraySort extends BaseImplementation { protected elements: Map>; protected sorted: T[]; protected position: number; groups: Group[]; protected groupLevel: number; sameTypeExtraGrouping: boolean; throwOnNonExistingDependency: boolean; set(elements: Map<{ item: T; type: TYPE; }, T[]>): void; add(item: T, type: TYPE, dependencies?: T[]): void; visit(element: ItemElement, parents?: Set): number; protected injectElement(element: ItemElement, minLevel: number): void; protected addItemAt(position: number, element: T): void; protected getFirstGroup(type: TYPE, minLevel: number): Group | undefined; getGroups(): { type: TYPE; items: T[]; }[]; /** * Sorts dependencies and returns internal used data structure. * * @throws CircularDependencyException if a circular dependency has been found * @throws ElementNotFoundException if a dependency can not be found */ sort(): T[]; protected doSort(): T[]; } export {};