import type { PluginId } from '@zhin.js/plugin-runtime'; import type { PluginGraphNode, ProjectGraph } from './project-graph.js'; export interface FeatureMount { readonly owner: PluginId; readonly packageRoot: string; } export interface TopologyTransactionPlan { readonly addedPluginRoots: readonly PluginId[]; readonly removedPluginRoots: readonly PluginId[]; readonly replacedPluginRoots: readonly PluginId[]; readonly addedFeatures: readonly FeatureMount[]; readonly removedFeatures: readonly FeatureMount[]; readonly reloadedFeaturePackages: ReadonlySet; readonly treeChanged: boolean; readonly featureOrderChanged: boolean; readonly changed: boolean; } /** Compiles two resolved graphs into the smallest safe topology transaction. */ export declare class TopologyTransactionPlanner { plan(previous: ProjectGraph, next: ProjectGraph): TopologyTransactionPlan; } export declare function graphNodes(graph: ProjectGraph): ReadonlyMap; export declare function graphOrder(graph: ProjectGraph): readonly PluginId[]; export declare function featureMounts(graph: ProjectGraph): readonly FeatureMount[]; export declare function isWithin(plugin: PluginId, root: PluginId): boolean; export declare function collapseRoots(values: readonly PluginId[]): readonly PluginId[];