/** * Level bands for the architecture graph. * * Every row of architecture/dependencies.html is ONE dependency level: the highest level on top, * descending as you read down, L0 — the foundation everything is built on — always last. * * `{ rank=same; ... }` alone does not deliver that, and assuming it did was the bug. It ties a * level's boxes to one row but says nothing about where that row goes, so graphviz derived each * row's position from the edges. A level containing a box with no visible edges — a leaf sdk, an * api-lib whose only consumers are hidden — is unconstrained, so it was placed at the top rank and * dragged its ENTIRE level up with it (verified against graphviz: that is what put the L0 sdks in * the top row, and what parked an L0 lib in the same row as the L6 servers). * * So the ordering is STATED here rather than inferred: one invisible anchor per band, sitting in * that band's rank set, chained top-to-bottom with invisible edges. Ranks are then a function of * level and nothing else. The anchors — never the real boxes — carry the chain, so no fake * dependency is ever drawn between two projects. */ /** * One horizontal band of the graph: every visible project sharing a dependency level, plus the * invisible anchor that pins the band's vertical position. */ export declare class LevelBand { level: number; /** Short names of the visible projects on this level, sorted for deterministic output. */ nodeNames: string[]; constructor(level: number, nodeNames: string[]); anchorName(): string; } /** Emits the DOT that pins each band to its own rank, in descending level order. */ export declare class LevelBandLayout { /** * @param bands the visible projects grouped by level, HIGHEST LEVEL FIRST. Levels need not be * contiguous — only the levels actually present get a band, and the chain links * whichever ones exist. */ dot(bands: LevelBand[]): string; /** * The ordering chain between two adjacent bands. When either band is crowded * (> SPACER_MIN_BAND_SIZE boxes), an empty spacer band goes between them: the edges leaving a * wide row then have a whole rank of vertical room to fan out in, instead of being drawn * straight through the row below. */ private bandGap; }