/** * 4-layer dedup (Task 308). * * Strict superset of the previous nodeId-only dedup. Catches duplicate * representations the typed-edge hook (Task 305) and document-ingest * pipeline will inevitably create: slug variants, canonical-name * variants, and content-hash duplicates. * * Order: hits are sorted by descending score FIRST, then walked. The * highest-score representative wins on every layer; later entries with * the same key on any active layer are dropped. Missing values on a * layer (no `slug`, no `canonicalName`, no derivable hash) are not * collisions — they simply skip that layer for that row. */ export type DedupLayer = "nodeId" | "slug" | "canonicalName" | "contentHash"; export declare const DEFAULT_LAYERS: DedupLayer[]; interface DedupHit { nodeId: string; properties: Record; score: number; } /** * Dedup `hits` across the requested layers. Returns a new array with the * highest-scoring representative per collision class, in original * descending-score order. */ export declare function dedup(hits: T[], layers?: DedupLayer[]): T[]; export {}; //# sourceMappingURL=dedup.d.ts.map