/**
 * Temporal Decay System
 *
 * Implements memory decay similar to human forgetting curves.
 * Memories fade over time but can be reinforced through access.
 */
import { Memory, MemoryConfig } from './types.js';
/**
 * Calculate the current decayed score for a memory
 * Uses exponential decay: score = base_score * (decay_rate ^ effective_hours)
 *
 * Memory types have different decay rates:
 * - Short-term: hourly decay (fastest)
 * - Episodic: 6-hour decay (medium)
 * - Long-term: daily decay (slowest)
 *
 * Access count slows decay (multiplicative bonus, not additive)
 */
export declare function calculateDecayedScore(memory: Memory, config?: MemoryConfig): number;
/**
 * Calculate reinforcement boost when memory is accessed
 */
export declare function calculateReinforcementBoost(memory: Memory, config?: MemoryConfig): number;
/**
 * Determine if a memory should be promoted from short-term to long-term
 * Based on access patterns and salience
 */
export declare function shouldPromoteToLongTerm(memory: Memory, config?: MemoryConfig): boolean;
/**
 * Determine if an episodic memory should be promoted to long-term
 * Episodic memories (session markers) promote if they're accessed frequently,
 * indicating an important session that's being referenced
 */
export declare function shouldPromoteEpisodic(memory: Memory): boolean;
/**
 * Determine if a memory should be deleted due to decay
 * Uses category-specific thresholds - architecture/errors are harder to delete
 */
export declare function shouldDelete(memory: Memory, config?: MemoryConfig): boolean;
/**
 * Get memories sorted by priority (salience + recency + access count)
 */
export declare function calculatePriority(memory: Memory): number;
/**
 * Batch process memories for decay and cleanup
 * Returns IDs of memories to delete and promote
 */
export declare function processDecay(memories: Memory[], config?: MemoryConfig): {
    toDelete: number[];
    toPromote: number[];
    updated: Map<number, number>;
};
/**
 * Calculate optimal time for next consolidation
 * Based on current memory state
 */
export declare function calculateNextConsolidationTime(memories: Memory[], config?: MemoryConfig): Date;
/**
 * Human-readable time since last access
 */
export declare function formatTimeSinceAccess(memory: Memory): string;
