export interface DedupeOptions {
    /** Optional project scope. */
    project?: string;
    /** When true (default) only count + sample pairs, no merges. */
    dryRun?: boolean;
    /** Cap on pairs returned/processed. Default 200. */
    limit?: number;
}
export interface DedupeGroupSummary {
    keepId: number;
    keepTitle: string;
    removeIds: number[];
    /** Average pairwise similarity score (text-based, 0..1). */
    similarity: string;
}
export interface DedupeResult {
    options: {
        project: string | null;
        dryRun: boolean;
        limit: number;
    };
    pairsFound: number;
    groups: DedupeGroupSummary[];
    merged?: number;
    backupPath?: string;
}
/**
 * Find near-duplicate long-term memories (text-based: title similarity +
 * content overlap, via the existing findDuplicateMemoryPairs heuristic) and
 * optionally merge them by keeping the highest-salience representative and
 * deleting the rest. Backs up the live DB before any merge.
 */
export declare function dedupeMemories(rawOptions?: DedupeOptions): Promise<DedupeResult>;
