/**
 * Triple 추출 통계 수집 서비스
 *
 * PRD 8.1: Triple 추출 통계
 * - 성공률: 성공한 Triple 추출 수 / 전체 시도 수
 * - 평균 추출 시간
 * - LLM 호출 횟수 및 비용
 * - 실패 사유별 통계
 */
import type { TripleExtractionResult, TripleExtractionFailureReason } from '../../../../shared/types/triple-extraction.js';
/**
 * Triple 추출 통계
 */
export interface TripleExtractionStatistics {
    totalAttempts: number;
    totalSuccess: number;
    totalFailures: number;
    successRate: number;
    totalExtractionTime: number;
    averageExtractionTime: number;
    minExtractionTime: number;
    maxExtractionTime: number;
    totalLLMCalls: number;
    totalTokens: number;
    totalCost: number;
    failureReasons: Map<TripleExtractionFailureReason, number>;
    totalTriplesExtracted: number;
    averageTriplesPerExtraction: number;
    cacheHits: number;
    cacheMisses: number;
    cacheHitRate: number;
    firstRecorded: number;
    lastRecorded: number;
}
/**
 * Triple 추출 통계 수집 서비스
 */
export declare class TripleExtractionStatisticsService {
    private statistics;
    private extractionTimes;
    constructor();
    /**
     * 통계 초기화
     */
    private initializeStatistics;
    /**
     * Triple 추출 결과 기록
     *
     * @param result Triple 추출 결과
     * @param extractionTime 추출 시간 (밀리초)
     * @param fromCache 캐시에서 가져온 경우 true
     * @param llmCalls LLM 호출 횟수 (기본값: 1)
     * @param tokens 사용된 토큰 수 (기본값: 0)
     * @param cost 비용 (USD, 기본값: 0)
     */
    recordExtraction(result: TripleExtractionResult, extractionTime: number, fromCache?: boolean, llmCalls?: number, tokens?: number, cost?: number): void;
    /**
     * 통계 조회
     *
     * @returns Triple 추출 통계
     */
    getStatistics(): TripleExtractionStatistics;
    /**
     * 통계 리셋
     */
    reset(): void;
    /**
     * 실패 사유별 통계 조회
     *
     * @returns 실패 사유별 통계 (객체 형태)
     */
    getFailureReasonStatistics(): Record<string, number>;
}
//# sourceMappingURL=triple-extraction-statistics.d.ts.map