import type { ScoredFile } from '../../types/index.js'; import type { RepositoryMap } from './repository-mapper.js'; import type { DependencyGraphResult } from './dependency-graph.js'; import { type DomainFileRole, type DomainFileRoleReason } from './domain-naming.js'; export type DomainCandidateDisposition = 'promoted' | 'merged' | 'attached' | 'excluded'; export type DomainCandidateReason = 'ownership-root' | 'filename-boundary' | 'exact-duplicate' | 'technical-child' | 'contained-footprint' | 'independent-boundary' | 'structural-independence' | 'non-defining-only' | 'supporting-path-owner' | 'supporting-import-owner' | 'supporting-unattached'; export interface DomainCandidateDecision { candidate: string; path: string; sources: DomainCandidateSignal[]; disposition: DomainCandidateDisposition; reason: DomainCandidateReason; owner?: string; files: string[]; } export type DomainCandidateSignal = 'directory' | 'filename' | 'dependency-cluster' | 'public-entry' | 'route' | 'schema' | 'technical-role' | 'supporting-file'; export interface DomainEvidenceRole { path: string; role: DomainFileRole; reason: DomainFileRoleReason; } export interface ReconciledDomain { name: string; definingFiles: ScoredFile[]; supportingFiles: ScoredFile[]; } export interface DomainReconciliationResult { domains: ReconciledDomain[]; decisions: DomainCandidateDecision[]; decisionSummary: DomainDecisionSummary; rawCandidateCount: number; unattachedEvidence: DomainEvidenceRole[]; } export interface DomainDecisionSummary { total: number; emitted: number; omitted: number; limit: number; filesPerDecisionLimit: number; } export interface DomainBoundaryEvidence { entryFiles?: Iterable; routeFiles?: Iterable; schemaFiles?: Iterable; } /** * Reconcile directory and dependency-cluster observations into stable ownership * domains, then attach tests without allowing them to affect candidate truth. */ export declare function reconcileRepositoryDomains(repoMap: RepositoryMap, depGraph: DependencyGraphResult, boundaries?: DomainBoundaryEvidence): DomainReconciliationResult; //# sourceMappingURL=domain-reconciliation.d.ts.map