/**
 * 우선순위 계산 서비스
 * 단일 책임 원칙 (SRP) 적용
 */
import type { ReviewSchedule, ReviewPriority } from '../../../../shared/types/spaced-repetition.types.js';
import type { PriorityCalculator } from '../../../../shared/interfaces/spaced-repetition.interface.js';
/**
 * 기본 우선순위 계산기
 * 리콜 확률과 간격을 기반으로 우선순위 계산
 */
export declare class DefaultPriorityCalculator implements PriorityCalculator {
    calculateReviewPriority(schedule: ReviewSchedule): number;
    calculateBatchPriorities(schedules: ReviewSchedule[]): ReviewPriority[];
}
/**
 * 가중치 기반 우선순위 계산기
 * 다양한 요소에 가중치를 적용한 우선순위 계산
 */
export declare class WeightedPriorityCalculator implements PriorityCalculator {
    private urgencyWeight;
    private intervalWeight;
    private multiplierWeight;
    constructor(urgencyWeight?: number, intervalWeight?: number, multiplierWeight?: number);
    calculateReviewPriority(schedule: ReviewSchedule): number;
    calculateBatchPriorities(schedules: ReviewSchedule[]): ReviewPriority[];
}
/**
 * 적응형 우선순위 계산기
 * 학습자의 성과 패턴을 고려한 우선순위 계산
 */
export declare class AdaptivePriorityCalculator implements PriorityCalculator {
    private baseCalculator;
    private performancePatterns;
    constructor(baseCalculator?: PriorityCalculator);
    calculateReviewPriority(schedule: ReviewSchedule): number;
    calculateBatchPriorities(schedules: ReviewSchedule[]): ReviewPriority[];
    private calculateAdaptationFactor;
    updatePerformancePattern(memoryId: string, performance: number): void;
}
/**
 * 시간 기반 우선순위 계산기
 * 시간대와 요일을 고려한 우선순위 계산
 */
export declare class TimeBasedPriorityCalculator implements PriorityCalculator {
    private baseCalculator;
    private timeWeights;
    constructor(baseCalculator?: PriorityCalculator, timeWeights?: Map<number, number>);
    calculateReviewPriority(schedule: ReviewSchedule): number;
    calculateBatchPriorities(schedules: ReviewSchedule[]): ReviewPriority[];
    private getTimeFactor;
    private initializeTimeWeights;
}
//# sourceMappingURL=priority-calculation.service.d.ts.map