/**
 * Consolidation Score Service
 * Hou et al. 정규화 회상 확률 공식을 기반으로 동적 기억 통합 점수를 계산합니다.
 *
 * 공식:
 * - p_n(t) = (1 - exp(-r * e^(-t/g_n))) / (1 - e^(-1))
 * - g_n = g_{n-1} + S(t)
 * - S(t) = (1 - e^(-t)) / (1 + e^(-t))
 * - g_0 = 1
 */
import type { IConsolidationScoreService } from '../shared/interfaces/consolidation-score.interface.js';
import type { ConsolidationScoreInput, ConsolidationScoreResult, GValueUpdateInput, MemoryType } from '../shared/types/consolidation-score.types.js';
/**
 * Consolidation Score Service
 */
export declare class ConsolidationScoreService implements IConsolidationScoreService {
    /**
     * S(t) 함수 구현: (1 - e^(-t)) / (1 + e^(-t))
     *
     * @param t 경과 시간 (시간 단위)
     * @returns S(t) 값
     */
    calculateS(t: number): number;
    /**
     * g_n 계산 로직: g_n = g_{n-1} + S(t)
     *
     * @param input g_value 업데이트 입력 파라미터
     * @returns 업데이트된 g_value
     */
    updateGValue(input: GValueUpdateInput): number;
    /**
     * 타입별 초기 회상 확률 상수 (r_base) 조회
     *
     * @param type 메모리 타입
     * @returns r_base 값
     */
    getRBaseForType(type: MemoryType): number;
    /**
     * Hou et al. 정규화 회상 확률 공식 구현
     * p_n(t) = (1 - exp(-r * e^(-t/g_n))) / (1 - e^(-1))
     *
     * @param r 초기 회상 확률 상수
     * @param t 경과 시간 (시간 단위)
     * @param gN 감쇠 상수 g_n
     * @returns 정규화된 회상 확률 (0.0 ~ 1.0)
     */
    calculateRecallProbability(r: number, t: number, gN: number): number;
    /**
     * 경과 시간 계산 (시간 단위)
     *
     * @param lastAccessedAt 마지막 접근 시간 (NULL인 경우 createdAt 사용)
     * @param createdAt 생성 시간
     * @param now 현재 시간 (기본값: 현재 시각)
     * @returns 경과 시간 (시간 단위)
     */
    calculateTimeElapsed(lastAccessedAt: Date | null, createdAt: Date, now?: Date): number;
    /**
     * g_value 재계산 (g_value가 NULL인 경우)
     * recall_count를 기반으로 처음부터 계산
     *
     * @param recallCount 회상 횟수
     * @param timeElapsed 경과 시간 (시간 단위)
     * @returns 계산된 g_value
     */
    recalculateGValue(recallCount: number, timeElapsed: number): number;
    /**
     * Consolidation Score 계산
     *
     * @param input 계산 입력 파라미터
     * @returns 계산 결과
     */
    calculateScore(input: ConsolidationScoreInput): ConsolidationScoreResult;
    /**
     * g_value 업데이트 (recall_count 증가 시 호출)
     *
     * @param input g_value 업데이트 입력 파라미터
     * @returns 업데이트된 g_value
     */
    updateGValueForRecall(input: GValueUpdateInput): number;
}
//# sourceMappingURL=consolidation-score-service.d.ts.map