/** * Angular DI Analyzer (pass 2, Angular flavor) * * Renders each Angular entry component's injection tree "from the page/root * component on down". Reuses the shared {@link DiDesignBuilder} base (node ids, * leaf/unresolved labeling, provider-table resolution, factory-dep edges, level * assignment) via its `collectInjections` hook — only the front-half (roots, * providers, injection-site discovery) is Angular-specific. * * Angular injection sites per class: * 1. Constructor params — `@Inject(TOKEN)` (capital I), `forwardRef(() => X)`, * `@Optional`/`@Self`/`@SkipSelf`/`@Host`, or a bare typed param (the class * itself is the token). * 2. Field initializers calling `inject()` — the standalone pattern * (`private saveApi = inject(SaveApi)`); the field name is the edge label * and the declared/token type labels the box. * * Every site is an `angularToken` injection: the provider table is consulted * first, then the token expression is resolved as a bare `@Injectable` class, * else it becomes an `unresolved` node. Generation never fails. */ import * as ts from 'typescript'; import { DiGraph } from './model'; /** * Build the full Angular DI graph for one project: one self-contained `DiDesign` * per entry component (bootstrap + routed). `projectRoot` is workspace-relative. */ export declare function buildAngularDiGraph(program: ts.Program, workspaceRoot: string, projectRoot: string, projectName: string): DiGraph;