import { type HygieneCommonOptions } from "../shared.js"; export interface AuditDuplicatesOptions extends HygieneCommonOptions { root?: string; index?: string; limit?: number; includeSystem?: boolean; includeSystemFields?: boolean; language?: string; batchSize?: number; concurrency?: number; pageParallelism?: number; cache?: boolean; /** * Only flag groups with size >= `minGroupSize`. Default 2. */ minGroupSize?: number; /** * Loosen the grouping key. Default key is * `(contentHash, templateId, parentPath)` so items that hash * identically only because their fields are all empty don't get * conflated across unrelated templates / parents. Set this to * `contentHash` only when you intentionally want to find cross- * template byte-equivalent content (e.g. asset re-use audits). */ groupBy?: ReadonlyArray<"contentHash" | "templateId" | "parentPath">; } export interface DuplicatesGroup { contentHash: string; /** Template ID shared by every member in the group (or null). */ templateId: string | null; /** Parent path shared by every member in the group. */ parentPath: string | null; count: number; members: Array<{ itemId: string; path: string; templateName: string | null; language: string | null; createdDate: string | null; updatedDate: string | null; }>; } /** * Audit content for items with byte-identical authored content, * grouped by content hash. See `computeContentHash` for the hash * input policy (sorted fields, system fields excluded by default). */ export declare const runAuditDuplicates: (options: AuditDuplicatesOptions) => Promise;