/**
 * 리뷰 스케줄링 서비스
 * 단일 책임 원칙 (SRP) 적용
 */
import type { SpacedRepetitionFeatures, ReviewSchedule, MemoryData } from '../../../../shared/types/spaced-repetition.types.js';
import type { ReviewScheduler, IntervalCalculationStrategy, RecallProbabilityCalculator, ReviewNecessityChecker } from '../../../../shared/interfaces/spaced-repetition.interface.js';
/**
 * 기본 리뷰 스케줄러
 */
export declare class DefaultReviewScheduler implements ReviewScheduler {
    private intervalStrategy;
    private recallCalculator;
    private necessityChecker;
    protected recallThreshold: number;
    constructor(intervalStrategy: IntervalCalculationStrategy, recallCalculator: RecallProbabilityCalculator, necessityChecker: ReviewNecessityChecker, recallThreshold?: number);
    createReviewSchedule(memoryId: string, currentInterval: number, lastReviewDate: Date, features: SpacedRepetitionFeatures): ReviewSchedule;
    createBatchReviewSchedules(memories: MemoryData[]): ReviewSchedule[];
    private getDaysSince;
}
/**
 * 우선순위 기반 리뷰 스케줄러
 * 리뷰 우선순위를 고려한 스케줄링
 */
export declare class PriorityBasedReviewScheduler extends DefaultReviewScheduler {
    private maxDailyReviews;
    constructor(intervalStrategy: IntervalCalculationStrategy, recallCalculator: RecallProbabilityCalculator, necessityChecker: ReviewNecessityChecker, recallThreshold?: number, maxDailyReviews?: number);
    createBatchReviewSchedules(memories: MemoryData[]): ReviewSchedule[];
    private prioritizeAndLimitSchedules;
    private calculatePriority;
}
/**
 * 적응형 리뷰 스케줄러
 * 학습자의 성과에 따라 동적으로 조정
 */
export declare class AdaptiveReviewScheduler extends DefaultReviewScheduler {
    private performanceHistory;
    constructor(intervalStrategy: IntervalCalculationStrategy, recallCalculator: RecallProbabilityCalculator, necessityChecker: ReviewNecessityChecker, recallThreshold?: number);
    createReviewSchedule(memoryId: string, currentInterval: number, lastReviewDate: Date, features: SpacedRepetitionFeatures): ReviewSchedule;
    private adjustThresholdForMemory;
    private evaluateReviewNecessity;
    updatePerformance(memoryId: string, success: boolean): void;
}
//# sourceMappingURL=review-scheduling.service.d.ts.map