/** * Deterministic structural validation of blueprint IR (graph JSON). * OSS boundary: shape, references, cycles — not security/compliance semantics (ArchRad Cloud). */ export type IrStructuralSeverity = 'error' | 'warning' | 'info'; /** IR shape/refs (IR-STRUCT-*) vs deterministic architecture heuristics (IR-LINT-*) vs implementation drift (IR-DRIFT-IMPL-*) */ export type IrFindingLayer = 'structural' | 'lint' | 'impl-drift'; export type IrStructuralFinding = { code: string; severity: IrStructuralSeverity; message: string; /** Primary node id when relevant */ nodeId?: string; /** Index in graph.edges[] */ edgeIndex?: number; /** Short actionable hint (structural); also used as primary “Fix:” line in CLI when no suggestion */ fixHint?: string; /** Set for IR-LINT-* findings */ layer?: IrFindingLayer; /** Longer lint guidance (CLI “Suggestion:”) */ suggestion?: string; /** Risk/context line (CLI “Impact:”) */ impact?: string; }; /** * Normalize product / CLI shapes to a single graph object. * Accepts `{ graph: { nodes, edges } }` or a bare `{ nodes, edges }`. */ export declare function normalizeIrGraph(ir: unknown): { graph: Record; } | { findings: IrStructuralFinding[]; }; /** * DFS cycle detector. Returns the cycle as an ordered node-id array (the repeated node is first) * or `null` if the graph is acyclic. Extracted for testability and to avoid closure over mutable state. */ export declare function detectCycles(adj: Map): string[] | null; /** * Structural validation only: well-formed graph, edge references, directed cycles, HTTP node config. * Same input → same findings (deterministic). */ export declare function validateIrStructural(ir: unknown): IrStructuralFinding[]; export declare function hasIrStructuralErrors(findings: IrStructuralFinding[]): boolean; //# sourceMappingURL=ir-structural.d.ts.map