import { LocalMemoryStore } from "./local-store.js";
/** A pre-extracted memory item ready to be stored (no LLM needed). */
export interface ExtractedMemoryItem {
    text: string;
    category?: string;
    importance?: number;
    speaker?: string;
    event_date?: string;
    tags?: string[];
    /** Ids of already-uploaded attachments to link to this memory on commit. */
    attachmentIds?: string[];
}
export interface MemoryConsolidationOptions {
    source?: string;
    sessionId?: string;
}
export interface MemoryConsolidationResult {
    observationsAdded: number;
    proposalsAdded: number;
    claimsAdded: number;
    conflictsAdded: number;
    memoriesAdded: number;
    observationIds: string[];
    proposalIds: string[];
    claimIds: string[];
    conflictIds: string[];
}
export declare class MemoryConsolidator {
    private readonly store;
    private readonly embed;
    constructor(store: LocalMemoryStore, embed: (text: string) => Promise<Float32Array | undefined>);
    observe(items: ExtractedMemoryItem[], userId: string, options?: MemoryConsolidationOptions): Promise<MemoryConsolidationResult>;
    proposeExtracted(items: ExtractedMemoryItem[], userId: string, options?: MemoryConsolidationOptions): Promise<MemoryConsolidationResult>;
    commitExtracted(items: ExtractedMemoryItem[], userId: string, options?: MemoryConsolidationOptions): Promise<MemoryConsolidationResult>;
    /**
     * Find an existing active memory that is a near-duplicate of `text`.
     * Token containment (Latin/digit words + CJK bigrams) against recent
     * memories; digit-bearing token mismatches veto the match because numbers
     * and ids are precise facts, not phrasing variance.
     */
    private findNearDuplicateMemory;
}
export declare function sourcePriorityOf(source: string): number;
