/**
 * 간격 반복 팩토리
 * 의존성 주입 및 객체 생성 관리
 */
import type { SpacedRepetitionConfig, SpacedRepetitionWeights } from '../../../shared/types/spaced-repetition.types.js';
import type { SpacedRepetitionService, IntervalCalculationStrategy, RecallProbabilityCalculator, ReviewNecessityChecker, ReviewScheduler, PerformanceAnalyzer, PriorityCalculator, OptimalIntervalRecommender } from '../../../shared/interfaces/spaced-repetition.interface.js';
/**
 * 간격 반복 팩토리
 */
export declare class SpacedRepetitionFactory {
    /**
     * 기본 설정으로 서비스 생성
     */
    static createDefaultService(config?: Partial<SpacedRepetitionConfig>): SpacedRepetitionService;
    /**
     * 설정에 따라 서비스 생성
     */
    static createService(config: SpacedRepetitionConfig): SpacedRepetitionService;
    /**
     * 간격 계산 전략 생성
     */
    static createIntervalStrategy(weights: SpacedRepetitionWeights, strategy?: 'default' | 'conservative' | 'adaptive'): IntervalCalculationStrategy;
    /**
     * 리콜 확률 계산기 생성
     */
    static createRecallCalculator(type?: 'default' | 'enhanced' | 'adaptive'): RecallProbabilityCalculator;
    /**
     * 리뷰 필요성 판단기 생성
     */
    static createNecessityChecker(threshold: number): ReviewNecessityChecker;
    /**
     * 리뷰 스케줄러 생성
     */
    static createReviewScheduler(intervalStrategy: IntervalCalculationStrategy, recallCalculator: RecallProbabilityCalculator, necessityChecker: ReviewNecessityChecker, recallThreshold: number, type?: 'default' | 'priority' | 'adaptive'): ReviewScheduler;
    /**
     * 성과 분석기 생성
     */
    static createPerformanceAnalyzer(type?: 'default' | 'detailed' | 'adaptive'): PerformanceAnalyzer;
    /**
     * 우선순위 계산기 생성
     */
    static createPriorityCalculator(type?: 'default' | 'weighted' | 'adaptive' | 'time-based'): PriorityCalculator;
    /**
     * 최적 간격 추천기 생성
     */
    static createOptimalRecommender(type?: 'default' | 'adaptive' | 'ml' | 'ensemble'): OptimalIntervalRecommender;
}
//# sourceMappingURL=spaced-repetition.factory.d.ts.map