/**
 * 망각 정책 서비스
 * 망각 알고리즘과 간격 반복을 통합하여 메모리 관리
 */
import type Database from 'better-sqlite3';
export interface ForgettingPolicyConfig {
    forgetThreshold: number;
    softDeleteThreshold: number;
    hardDeleteThreshold: number;
    ttlSoft: {
        working: number;
        episodic: number;
        semantic: number;
        procedural: number;
    };
    ttlHard: {
        working: number;
        episodic: number;
        semantic: number;
        procedural: number;
    };
    reviewThreshold: number;
    maxInterval: number;
    minInterval: number;
}
export interface MemoryCleanupResult {
    softDeleted: string[];
    hardDeleted: string[];
    reviewed: string[];
    totalProcessed: number;
    summary: {
        forgetCandidates: number;
        reviewCandidates: number;
        actualSoftDeletes: number;
        actualHardDeletes: number;
        actualReviews: number;
    };
}
export declare class ForgettingPolicyService {
    private forgettingAlgorithm;
    private spacedRepetition;
    private config;
    constructor(config?: Partial<ForgettingPolicyConfig>);
    /**
     * 메모리 정리 실행 (망각 + 간격 반복)
     */
    executeMemoryCleanup(db: Database.Database): Promise<MemoryCleanupResult>;
    /**
     * 모든 메모리 가져오기
     */
    private getAllMemories;
    /**
     * 리뷰 후보 분석
     *
     * @remarks 피드백 가중치는 feedback_event 연동 전까지 보수적 기본값을 사용한다(스케줄 생성만 수행).
     */
    private analyzeReviewCandidates;
    /**
     * 사용성 점수 계산
     */
    private calculateUsageScore;
    /**
     * 소프트 삭제 후보 확인
     */
    private isSoftDeleteCandidate;
    /**
     * 하드 삭제 후보 확인
     */
    private isHardDeleteCandidate;
    /**
     * 소프트 삭제 실행
     */
    private getSoftDeleteGracePeriodDays;
    /**
     * 유예 기간이 지난 소프트 삭제 행을 물리 삭제
     */
    private sweepExpiredSoftDeletes;
    private softDeleteMemory;
    /**
     * 하드 삭제 실행
     */
    private hardDeleteMemory;
    /**
     * 리뷰 스케줄 업데이트
     */
    private updateReviewSchedule;
    /**
     * 나이 계산 (일 단위)
     */
    private getAgeInDays;
    /**
     * 망각 통계 생성
     */
    generateForgettingStats(db: Database.Database): Promise<{
        totalMemories: number;
        forgetCandidates: number;
        reviewCandidates: number;
        averageForgetScore: number;
        memoryDistribution: Record<string, number>;
    }>;
}
//# sourceMappingURL=forgetting-policy-service.d.ts.map