/**
 * 학습 효율을 극대화하기 위해 최적의 리뷰 시점을 계산합니다.
 * Memento-Goals.md에 정의된 검증된 간격 반복 공식을 구현하여 과학적 근거에 기반한 학습 스케줄을 제공합니다.
 */
export interface SpacedRepetitionFeatures {
    importance: number;
    usage: number;
    helpful_feedback: number;
    bad_feedback: number;
}
export interface SpacedRepetitionWeights {
    importance: number;
    usage: number;
    helpful_feedback: number;
    bad_feedback: number;
}
export interface ReviewSchedule {
    memory_id: string;
    current_interval: number;
    next_review: Date;
    recall_probability: number;
    needs_review: boolean;
    multiplier: number;
}
export declare class SpacedRepetitionAlgorithm {
    private readonly weights;
    private readonly recallThreshold;
    constructor(weights?: Partial<SpacedRepetitionWeights>);
    /**
     * 학습자의 성과와 피드백을 반영하여 다음 리뷰 간격을 동적으로 조정합니다.
     * 중요도, 사용성, 긍정적 피드백은 간격을 늘리고, 부정적 피드백은 간격을 줄여 학습 효율을 최적화합니다.
     */
    calculateNextInterval(currentInterval: number, features: SpacedRepetitionFeatures): number;
    /**
     * 지수 감쇠 모델을 사용하여 시간 경과에 따른 기억 유지 확률을 계산합니다.
     * 마지막 리뷰로부터 경과된 시간과 현재 간격을 비교하여 리콜 가능성을 정량화합니다.
     */
    calculateRecallProbability(timeSinceLastReview: number, // 일 단위
    interval: number): number;
    /**
     * 계산된 리콜 확률이 임계값 이하인지 확인하여 리뷰가 필요한지 판단합니다.
     * 망각 직전에 복습할 수 있도록 적절한 시점에 리뷰를 권장합니다.
     */
    needsReview(timeSinceLastReview: number, interval: number, threshold?: number): boolean;
    /**
     * 메모리의 특성과 학습 성과를 반영하여 최적의 리뷰 스케줄을 생성합니다.
     * 다음 리뷰 날짜, 간격, 리콜 확률 등을 종합하여 학습 계획을 수립합니다.
     */
    createReviewSchedule(memoryId: string, currentInterval: number, lastReviewDate: Date, features: SpacedRepetitionFeatures): ReviewSchedule;
    /**
     * 여러 메모리에 대해 일괄적으로 리뷰 스케줄을 생성하여 효율적인 학습 계획을 수립합니다.
     */
    createBatchReviewSchedules(memories: Array<{
        id: string;
        current_interval: number;
        last_review: Date;
        importance: number;
        usage: number;
        helpful_feedback: number;
        bad_feedback: number;
    }>): ReviewSchedule[];
    /**
     * 리콜 확률과 간격을 종합하여 리뷰 우선순위를 계산합니다.
     * 긴급한 리뷰를 우선 처리하여 학습 효율을 최적화합니다.
     */
    calculateReviewPriority(schedule: ReviewSchedule): number;
    /**
     * 실제 리콜 성과를 분석하여 알고리즘의 효과를 평가합니다.
     * 간격별 성과를 분석하여 최적의 간격을 찾기 위해
     */
    analyzeReviewPerformance(schedules: ReviewSchedule[], actualRecall: Map<string, boolean>): {
        totalMemories: number;
        reviewedMemories: number;
        averageRecallRate: number;
        performanceByInterval: Map<number, number>;
    };
    /**
     * 학습자의 실제 리콜 성과를 반영하여 최적의 간격을 추천합니다.
     * 성과가 좋으면 간격을 늘리고, 성과가 나쁘면 간격을 줄여 학습 효율을 최적화합니다.
     */
    recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], // 최근 리콜 성공/실패 기록
    features: SpacedRepetitionFeatures): number;
    /**
     * 특정 날짜로부터 경과된 일수를 계산하여 시간 기반 계산에 사용합니다.
     */
    private getDaysSince;
}
//# sourceMappingURL=spaced-repetition.d.ts.map