export declare const REPO_FACTS_SCHEMA_VERSION = "1.1.0"; export declare const DEFAULT_MIN_STRUCTURAL_SIZE = 20; export type SymbolFactKind = 'class' | 'interface' | 'function' | 'method' | 'variable' | 'type' | 'enum' | 'unknown'; export interface RepoFactsProvenance { readonly extractedBy: string; readonly extractorVersion: string; readonly indexer: string; readonly indexerVersion: string; readonly extractedAt: string; readonly revision?: string; } export interface ModuleFact { readonly id: string; readonly layer?: string; } export interface ImportFact { readonly from: string; readonly to: string; readonly typeOnly: boolean; } export interface SymbolFact { readonly id: string; readonly name: string; readonly kind: SymbolFactKind; readonly moduleId: string; readonly exported: boolean; readonly structuralHash?: string; readonly structuralSize?: number; } export type ErrorMaskingKind = 'empty-catch' | 'catch-discards-error' | 'promise-catch-swallow' | 'ts-directive-suppression' | 'any-assertion' | 'non-null-assertion'; export interface ErrorMaskingFact { readonly moduleId: string; readonly kind: ErrorMaskingKind; readonly line: number; readonly symbolId?: string; } export interface ReferenceFact { readonly fromSymbol: string; readonly toSymbol: string; } export interface RepoFacts { readonly schemaVersion: string; readonly contentHash: string; readonly provenance: RepoFactsProvenance; readonly modules: readonly ModuleFact[]; readonly imports: readonly ImportFact[]; readonly symbols: readonly SymbolFact[]; readonly references: readonly ReferenceFact[]; readonly errorMasking?: readonly ErrorMaskingFact[]; } export interface SymbolBoundaryRule { readonly id: string; readonly fromModules: readonly string[]; readonly forbiddenSymbolModules: readonly string[]; readonly severity?: 'error' | 'warning'; readonly description?: string; } export declare function canonicalizeRepoFacts(facts: RepoFacts): string; export declare function matchesModulePattern(moduleId: string, pattern: string): boolean; export interface ImportCycle { readonly chain: readonly string[]; readonly component: readonly string[]; readonly typeOnly: boolean; } export declare function findImportCycles(facts: RepoFacts): readonly ImportCycle[]; export interface SymbolBoundaryCrossing { readonly ruleId: string; readonly fromSymbol: string; readonly toSymbol: string; readonly symbolChain: readonly string[]; readonly moduleChain: readonly string[]; readonly viaLegalImportsOnly: boolean; readonly severity: 'error' | 'warning'; } export declare function findSymbolBoundaryCrossings(facts: RepoFacts, rules: readonly SymbolBoundaryRule[]): readonly SymbolBoundaryCrossing[]; export interface StructuralFactsSummary { readonly contentHash: string; readonly indexer: string; readonly moduleCount: number; readonly importCount: number; readonly symbolCount: number; readonly referenceCount: number; readonly cycles: readonly ImportCycle[]; readonly boundaryCrossings: readonly SymbolBoundaryCrossing[]; } export declare const renderChain: (chain: readonly string[]) => string; export declare function summarizeRepoFacts(facts: RepoFacts, boundaries?: readonly SymbolBoundaryRule[]): StructuralFactsSummary;