import type { Evidence, EvidenceAdmissibilityDecision } from './quality-evidence'; import type { RepoFacts } from './repo-facts'; export declare const DRIFT_SIGNAL_SOURCE = "evolith-drift-signals"; export declare const DRIFT_SIGNAL_DIMENSION = "code-quality"; export declare const DRIFT_SIGNALS_VERSION = "1.0.0"; export type DriftSignalId = 'duplication' | 'refactor-to-copy' | 'error-masking'; export declare const DRIFT_SIGNAL_IDS: readonly DriftSignalId[]; export interface DriftSignalProvenance { readonly computedBy: string; readonly version: string; readonly factsSchemaVersion: string; readonly indexer: string; readonly indexerVersion: string; readonly contentHash: string; readonly revision?: string; readonly baselineContentHash?: string; readonly baselineRevision?: string; } export interface DriftObservation { readonly code: string; readonly message: string; readonly location?: string; } export type DriftSignalStatus = 'measured' | 'not-measurable'; export interface DriftSignalMeasurement { readonly signal: DriftSignalId; readonly status: DriftSignalStatus; readonly notMeasurableReason?: string; readonly metrics: Readonly>; readonly observations: readonly DriftObservation[]; readonly definition: string; readonly blindSpots: readonly string[]; readonly provenance: DriftSignalProvenance; } export interface DriftSignalAssessment { readonly measurement: DriftSignalMeasurement; readonly evidence: Evidence; readonly admissibility: EvidenceAdmissibilityDecision; } export interface DriftSignalReport { readonly signals: readonly DriftSignalAssessment[]; readonly blockingAdmissible: readonly DriftSignalId[]; readonly contentHash: string; readonly baselineContentHash?: string; } export interface CloneClass { readonly structuralHash: string; readonly members: readonly string[]; readonly modules: readonly string[]; readonly structuralSize: number; } export interface DuplicationOptions { readonly minStructuralSize?: number; } export declare function findCloneClasses(facts: RepoFacts, options?: DuplicationOptions): readonly CloneClass[]; export declare function measureDuplication(facts: RepoFacts, options?: DuplicationOptions): DriftSignalMeasurement; export declare function measureErrorMasking(facts: RepoFacts): DriftSignalMeasurement; export declare function incomparabilityReason(baseline: RepoFacts, current: RepoFacts): string | undefined; export interface RefactorToCopyOptions extends DuplicationOptions { } export declare function measureRefactorToCopy(baseline: RepoFacts, current: RepoFacts, options?: RefactorToCopyOptions): DriftSignalMeasurement; export declare function toEvidence(measurement: DriftSignalMeasurement, observedAt?: string): Evidence; export declare function assessDriftSignal(measurement: DriftSignalMeasurement, observedAt?: string): DriftSignalAssessment; export interface DriftSignalOptions extends DuplicationOptions { readonly baseline?: RepoFacts; readonly observedAt?: string; } export declare function summarizeDriftSignals(facts: RepoFacts, options?: DriftSignalOptions): DriftSignalReport; export interface DriftMetricDelta { readonly metric: string; readonly before?: number; readonly after?: number; readonly delta?: number; } export interface DriftSignalDelta { readonly signal: DriftSignalId; readonly status: 'comparable' | 'incomparable'; readonly incomparableReason?: string; readonly baselineContentHash: string; readonly currentContentHash: string; readonly metrics: readonly DriftMetricDelta[]; } export interface DriftConformanceDelta { readonly baselineContentHash: string; readonly currentContentHash: string; readonly sameInput: boolean; readonly signals: readonly DriftSignalDelta[]; } export declare function diffDriftSignalReports(baseline: DriftSignalReport, current: DriftSignalReport): DriftConformanceDelta;