import type { MemoryId, MemoryRecord } from "@oscharko-dev/keiko-contracts/memory";
export interface MemoryAccessStatLike {
    readonly lastAccessedAt: number;
    readonly accessCount: number;
}
export interface MemoryMaintenancePolicy {
    readonly halfLifeMs: number;
    readonly promoteStrength: number;
    readonly reinforceMinAccessCount: number;
    readonly reinforceMinRecency: number;
    readonly reinforceStep: number;
    readonly reinforceCap: number;
    readonly decayMaxRecency: number;
    readonly decayMinAgeMs: number;
    readonly decayFactor: number;
    readonly decayFloor: number;
    readonly archiveMaxStrength: number;
    readonly archiveMinAgeMs: number;
    readonly forgetArchivedMinAgeMs: number;
    readonly forgetProposedMaxStrength: number;
    readonly forgetProposedMinAgeMs: number;
    readonly maxForgetPerRun: number;
}
export declare const MEMORY_MAINTENANCE_DEFAULTS: MemoryMaintenancePolicy;
export interface MemoryMaintenancePlan {
    readonly promote: MemoryId[];
    readonly reinforce: {
        id: MemoryId;
        confidence: number;
    }[];
    readonly decay: {
        id: MemoryId;
        confidence: number;
    }[];
    readonly archive: MemoryId[];
    readonly forget: {
        id: MemoryId;
        reason: string;
    }[];
}
export interface PlanMaintenanceOptions {
    readonly nowMs: number;
    readonly policy?: Partial<MemoryMaintenancePolicy>;
}
export declare function effectiveStrength(record: MemoryRecord, stat: MemoryAccessStatLike | undefined, nowMs: number, halfLifeMs?: number): number;
export declare function planMemoryMaintenance(records: readonly MemoryRecord[], accessStats: ReadonlyMap<MemoryId, MemoryAccessStatLike>, options: PlanMaintenanceOptions): MemoryMaintenancePlan;
//# sourceMappingURL=maintenance.d.ts.map