import { MemoryNamespace, MemoryRecord, MemorySearchQuery, MemoryType } from './MemoryProvider';
export interface MemoryWriteInput {
    type: MemoryType;
    namespace?: MemoryNamespace;
    content: string;
    summary?: string;
    tags?: string[];
    confidence?: number;
    sourceMissionId?: string;
    dedupeKey?: string;
    providers?: string[];
    /**
     * v1.11.0 — Pass-through to MemoryRecord.keep. When true, retention policy
     * never expires the record regardless of `type`.
     */
    keep?: boolean;
}
export interface MemorySearchResult {
    provider: string;
    record: MemoryRecord;
}
export declare class MemoryOrchestrator {
    private registry;
    private retention;
    constructor();
    search(input: MemorySearchQuery, providers?: string[]): Promise<MemorySearchResult[]>;
    save(input: MemoryWriteInput): Promise<MemoryRecord>;
    /**
     * v1.11.0 — Resolve which providers to use.
     *
     * Behavior:
     *   - If caller passes an explicit `providers` array, use that (legacy path).
     *   - Otherwise: pick the primary from OPENLIFE_MEMORY_PROVIDER. If primary
     *     is not 'local', ALSO include 'local' as write-through cache. This
     *     means saveFact always lands in the local file AND in the cloud,
     *     so reads survive a cloud outage and migrations between providers
     *     never lose data.
     */
    private resolveProviders;
    private dedupeAndRank;
}
