import type { MemoryId, MemoryScope, MemoryStatus } from "@oscharko-dev/keiko-contracts";
import type { MemoryVaultStore } from "@oscharko-dev/keiko-memory-vault";
export interface MemoryRetentionPolicy {
    readonly maxAgeMs?: number;
    readonly maxRecordsPerScope?: number;
    readonly expireProposalsAfterMs?: number;
    readonly purgeForgottenAfterMs?: number;
}
export type MemoryRetentionReason = "expire-age" | "expire-proposal" | "evict-overflow";
export interface MemoryRetentionDecision {
    readonly memoryId: MemoryId;
    readonly scope: MemoryScope;
    readonly reason: MemoryRetentionReason;
    readonly updatedAt: number;
    readonly status: MemoryStatus;
}
export interface MemoryRetentionResult {
    readonly evaluated: number;
    readonly forgotten: readonly MemoryRetentionDecision[];
    readonly kept: number;
    readonly byReason: Readonly<Record<MemoryRetentionReason, number>>;
    readonly forgottenPurgeBacklog: number;
}
export interface ApplyMemoryRetentionOptions {
    readonly vault: MemoryVaultStore;
    readonly scopes: readonly MemoryScope[];
    readonly policy: MemoryRetentionPolicy;
    readonly nowMs: number;
}
export declare function applyMemoryRetention(options: ApplyMemoryRetentionOptions): MemoryRetentionResult;
//# sourceMappingURL=memory-retention.d.ts.map