/** Options for triggering a decay cycle. */
export interface DecayOptions {
    temporalExpiry?: boolean;
    stalenessDecay?: boolean;
    noiseArchival?: boolean;
}
/** Result of a decay cycle. */
export interface DecayResult {
    decayed: number;
    archived: number;
}
export interface DecayConfig {
    /** Minimum hours between decay cycles. Default: 24. */
    minIntervalHours: number;
    /** Enable temporal expiry (event/plan memories past grace period). Default: true. */
    temporalExpiry: boolean;
    /** Enable staleness decay (reduce importance of unaccessed memories). Default: true. */
    stalenessDecay: boolean;
    /** Enable noise archival (archive memories below threshold). Default: true. */
    noiseArchival: boolean;
}
export declare const DEFAULT_DECAY_CONFIG: DecayConfig;
/**
 * Check whether enough time has elapsed since last decay.
 * Returns true if decay should run.
 */
export declare function shouldTriggerDecay(memoryRoot: string, config?: Partial<DecayConfig>): Promise<boolean>;
/**
 * Mark decay as having just run (persist timestamp).
 */
export declare function markDecayComplete(memoryRoot: string): Promise<void>;
export interface DecayCycleDeps {
    /** Memory provider with triggerDecay method. */
    adapter: {
        triggerDecay(userId: string, maxAgeDays?: number): Promise<{
            decayed: number;
        }>;
    };
    /** User ID for memory operations. */
    userId: string;
    /** Memory root directory (for gate marker). */
    memoryRoot: string;
    /** Decay configuration overrides. */
    config?: Partial<DecayConfig>;
    /** Logger. */
    log?: {
        info(msg: string): void;
        debug?(msg: string): void;
    };
}
export interface DecayCycleResult {
    /** Whether decay actually ran (false = skipped by gate). */
    ran: boolean;
    /** Number of memories whose importance was reduced. */
    decayed: number;
    /** Number of memories archived (below threshold). */
    archived: number;
    /** Duration in ms. */
    durationMs: number;
}
/**
 * Run a full decay cycle with gate check.
 *
 * Lifecycle:
 *   1. Check time gate (24h default)
 *   2. Call local memory provider decay
 *   3. Mark completion timestamp
 */
export declare function runDecayCycle(deps: DecayCycleDeps): Promise<DecayCycleResult>;
