import type { CatalogEntry } from "../formats.js"; /** Where one registered component's source actually lives — the input to * source capture (components.ts). */ export interface HostComponentSite { name: string; /** Absolute path of the module that declares the component. */ file: string; /** The declaration's own binding name, or "default" for an anonymous * `export default`. Capture turns it into the jail's default export. Null * when the declaration has no name to re-export — carried through (rather * than dropped here) so capture records ONE explanation per uncapturable * component and the console can show it. */ binding: string | null; } export interface CatalogScanResult { entries: CatalogEntry[]; warnings: string[]; discovered: number; registered: number; /** Registered components with a resolvable declaration, for source capture. */ sites: HostComponentSite[]; /** True when this scan could not see the whole project (no compiler, no * tsconfig, or a walk that hit its file cap). A degraded scan prunes * nothing — the same rule the pin capture follows. */ degraded: boolean; } /** Deterministic TypeScript-compiler scan. No model output can alter these fields. */ export declare function scanComponentCatalog(root: string): Promise;