import { type RepositoryChangeBrief, type RepositoryGraphSnapshot } from '@neurcode-ai/contracts'; export interface RepositoryUnderstandingTask { summary: string; steps?: string[]; expectedFiles?: string[]; expectedGlobs?: string[]; constraints?: string[]; risks?: string[]; planRevision?: number; } export interface BuildRepositoryChangeBriefInput { graph: RepositoryGraphSnapshot; task: RepositoryUnderstandingTask; repositoryFingerprint?: string | null; semanticSliceId?: string | null; relevantPlanCoverage?: number | null; generatedAt?: string; maxDirectFiles?: number; maxAffectedFiles?: number; } export interface BuildRepositoryChangeBriefForRepoInput { repoRoot: string; task: RepositoryUnderstandingTask; semanticSliceId?: string | null; relevantPlanCoverage?: number | null; generatedAt?: string; maxDirectFiles?: number; maxAffectedFiles?: number; } export declare function repositoryChangeBriefCanonicalHash(brief: RepositoryChangeBrief): string; /** * Deterministically builds a source-free Change Brief. Lexical and alias * resolution is deliberately advisory: repeatability never upgrades semantic * certainty. Only explicit scope and fresh graph/configuration relationships * can contribute to the authority ceiling. */ export declare function buildRepositoryChangeBrief(input: BuildRepositoryChangeBriefInput): RepositoryChangeBrief; export declare function verifyRepositoryChangeBriefReplay(brief: RepositoryChangeBrief): boolean; /** * Bounded SQLite-backed adapter used by real plan-ingress paths. It first * resolves advisory task scope from the source-free file index, then loads * only edges/nodes adjacent to that scope. Large repositories are never * materialized as a repository-wide JSON graph merely to produce a brief. */ export declare function buildRepositoryChangeBriefForRepo(input: BuildRepositoryChangeBriefForRepoInput): RepositoryChangeBrief | null; //# sourceMappingURL=repository-understanding-v1.d.ts.map