/**
 * 오래되고 사용되지 않는 기억을 자동으로 식별하여 저장 공간을 효율적으로 관리합니다.
 * Memento-Goals.md에 정의된 검증된 망각 공식을 구현하여 일관되고 공정한 망각 결정을 보장합니다.
 */
export interface ForgettingFeatures {
    recency: number;
    usage: number;
    duplication_ratio: number;
    importance: number;
    pinned: boolean;
}
export interface ForgettingWeights {
    recency: number;
    usage: number;
    duplication: number;
    importance: number;
    pinned: number;
}
export interface ForgettingResult {
    memory_id: string;
    forget_score: number;
    should_forget: boolean;
    reason: string;
    features: ForgettingFeatures;
}
export declare class ForgettingAlgorithm {
    private readonly weights;
    constructor(weights?: Partial<ForgettingWeights>);
    /**
     * 단일 특징만으로는 망각 여부를 정확히 판단할 수 없으므로, 다차원 특징을 가중 평균하여 망각 가능성을 정량적으로 평가합니다.
     * 최근성, 사용성, 중복도, 중요도, 고정 여부를 종합적으로 고려하여 공정한 망각 결정을 내립니다.
     */
    calculateForgetScore(features: ForgettingFeatures): number;
    /**
     * 망각 점수가 임계값을 넘으면 저장 공간을 효율적으로 관리하기 위해 해당 기억을 망각 대상으로 결정합니다.
     * 임계값을 조정하여 망각 정책의 엄격도를 제어할 수 있도록 합니다.
     */
    shouldForget(forgetScore: number, threshold?: number): boolean;
    /**
     * 사용자에게 망각 결정의 근거를 명확히 전달하여 투명성을 보장합니다.
     * 다양한 특징을 분석하여 구체적인 망각 이유를 제공합니다.
     */
    generateForgetReason(features: ForgettingFeatures, forgetScore: number): string;
    /**
     * 망각 알고리즘이 정확한 판단을 내리려면 메모리의 다양한 특징이 정량화되어야 하므로, 필요한 입력 데이터를 준비합니다.
     * 최근성, 사용성, 중복도, 중요도 등을 계산하여 종합적인 평가를 수행합니다.
     */
    calculateFeatures(memory: {
        created_at: string;
        last_accessed?: string;
        importance: number;
        pinned: boolean;
        type: string;
        view_count?: number;
        cite_count?: number;
        edit_count?: number;
    }, duplicates?: number, totalMemories?: number): ForgettingFeatures;
    /**
     * 시간에 따른 기억의 자연스러운 감쇠를 반영하여 오래된 기억을 식별합니다.
     * 반감기 기반 지수 감쇠를 사용하여 시간이 지날수록 망각 가능성이 증가하도록 설계합니다.
     */
    private calculateRecency;
    /**
     * 실제 사용 빈도를 반영하여 사용되지 않는 기억을 식별합니다.
     * 접근 빈도와 사용 빈도를 종합하여 사용성을 정량화합니다.
     */
    private calculateUsage;
    /**
     * 마지막 접근 시간을 기반으로 최근성 점수를 계산하여 사용 빈도와 함께 평가합니다.
     * 30일 반감기를 사용하여 시간에 따른 감쇠를 반영합니다.
     */
    private calculateAccessScore;
    /**
     * 시간이 지날수록 기억의 관련성이 자연스럽게 감쇠하므로, 메모리의 생성 시간으로부터 경과된 일수를 계산하여 최근성 평가에 사용합니다.
     */
    private getAgeInDays;
    /**
     * 메모리 타입에 따라 다른 반감기를 설정하여 타입별 특성에 맞는 감쇠 속도를 적용합니다.
     * working 메모리는 빠르게, semantic 메모리는 천천히 감쇠하도록 설계합니다.
     */
    private getHalfLife;
    /**
     * 여러 메모리를 일괄 분석하여 망각 후보를 선정합니다.
     * 중복도를 계산하고 각 메모리의 망각 점수를 산출하여 우선순위를 결정합니다.
     */
    analyzeForgetCandidates(memories: Array<{
        id: string;
        created_at: string;
        last_accessed?: string;
        importance: number;
        pinned: boolean;
        type: string;
        view_count?: number;
        cite_count?: number;
        edit_count?: number;
    }>): ForgettingResult[];
}
//# sourceMappingURL=forgetting-algorithm.d.ts.map