import type { BeachballOptions } from '../types/BeachballOptions'; import type { PublishBumpInfo } from '../types/BumpInfo'; /** * Given the packages to publish and the full map of packages in the repo, organize the packages into * graph layers that can be published in parallel. The first layer will be packages with no deps * on other published packages, and the last layer will be root packages that depend on all others. * * If possible, layers are computed based on only the set of published packages. This should be safe * with beachball's default behaviors, but layers will be computed over the full graph under any of * the following conditions which might cause missing edges. (Not 100% sure this is necessary, but * not sure how to disprove it either...) * - `bumpDeps` is false * - `scope` is set * - There are `newPackages` * - Any change has `dependentChangeType` set to "none" * * Currently, there's only VERY basic cycle handling: all cycles are grouped together on a final * layer, regardless of any interdependencies. The `toposort` package previously used by beachball * doesn't handle cycles at all, so this should be fine for now. (Tarjan's strongly connected * components algorithm could be used to break cycles into more layers if needed in the future.) * * @returns An array of layers, where each layer is an array of package names that can be * published in parallel. */ export declare function getPackageGraphLayers(params: { packagesToPublish: string[]; bumpInfo: Pick; options: Pick; }): string[][]; //# sourceMappingURL=getPackageGraphLayers.d.ts.map