/**
 * 최적 간격 추천 서비스
 * 단일 책임 원칙 (SRP) 적용
 */
import type { OptimalIntervalRecommender } from '../../../../shared/interfaces/spaced-repetition.interface.js';
import type { SpacedRepetitionFeatures } from '../../../../shared/types/spaced-repetition.types.js';
/**
 * 기본 최적 간격 추천기
 */
export declare class DefaultOptimalIntervalRecommender implements OptimalIntervalRecommender {
    private baseMultiplier;
    private performanceThreshold;
    constructor(baseMultiplier?: number, performanceThreshold?: number);
    recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], _features: SpacedRepetitionFeatures): number;
}
/**
 * 적응형 최적 간격 추천기
 * 학습자의 학습 패턴을 고려한 간격 추천
 */
export declare class AdaptiveOptimalIntervalRecommender implements OptimalIntervalRecommender {
    private baseRecommender;
    private learningProfiles;
    private optimalIntervals;
    constructor(baseRecommender?: OptimalIntervalRecommender);
    recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], features: SpacedRepetitionFeatures, memoryId?: string): number;
    private calculatePersonalizedAdjustment;
    private analyzeLearningSpeed;
    private analyzeRetentionRate;
    updateLearningProfile(memoryId: string, performance: number): void;
}
/**
 * 머신러닝 기반 최적 간격 추천기
 * 고급 알고리즘을 사용한 간격 추천
 */
export declare class MLBasedOptimalIntervalRecommender implements OptimalIntervalRecommender {
    private model;
    recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], features: SpacedRepetitionFeatures, memoryId?: string): number;
    private predictOptimalInterval;
    private fallbackRecommendation;
    trainModel(memoryId: string, trainingData: Array<{
        features: SpacedRepetitionFeatures;
        actualInterval: number;
        performance: number;
    }>): void;
    private trainLinearModel;
}
/**
 * 앙상블 최적 간격 추천기
 * 여러 추천기를 결합한 앙상블 방법
 */
export declare class EnsembleOptimalIntervalRecommender implements OptimalIntervalRecommender {
    private recommenders;
    constructor();
    recommendOptimalInterval(currentInterval: number, recallHistory: boolean[], features: SpacedRepetitionFeatures, _memoryId?: string): number;
}
//# sourceMappingURL=optimal-interval.service.d.ts.map