/**
 * Triple 추출 서비스
 * LLM을 사용하여 Episodic Memory의 observation에서 (subject, predicate, object) 형태의 지식 그래프 트리플을 추출합니다.
 *
 * AriGraph 파이프라인의 핵심 컴포넌트로, Episodic Memory에서 Semantic Memory로의 자동 학습을 지원합니다.
 * RelationExtractor는 규칙/LLM 하이브리드 관계 후보를 담당; 본 서비스는 트리플 텍스트 추출·정규화·지속화 경로를 담당한다.
 *
 * 비용 최적화 전략:
 * - Rate limit (토큰 버킷 알고리즘)
 * - 캐싱 (TTL 기반)
 * - 비용 모니터링
 * - 에러 처리 및 폴백
 */
import type { IRetryManager } from '../../../../shared/interfaces/retry-manager.interface.js';
import type { TripleExtractionOptions, TripleExtractionResult } from '../../../../shared/types/triple-extraction.js';
/**
 * LLM 비용 모니터링
 */
interface LLMCostMetrics {
    totalCalls: number;
    totalTokens: number;
    totalCost: number;
    lastReset: number;
}
/**
 * Triple 추출 서비스
 */
export declare class TripleExtractionService {
    private openaiClient;
    private geminiClient;
    private preferredProvider;
    private initializedProviders;
    private readonly cache;
    private readonly rateLimiter;
    private readonly costMetrics;
    private readonly canonicalizer;
    private readonly entityLinker;
    private readonly parser;
    private readonly normalizer;
    private readonly statistics;
    private readonly retryManager;
    private initializationPromise;
    private readonly DEFAULT_TEMPERATURE;
    private readonly DEFAULT_MAX_TOKENS;
    private readonly CACHE_SIZE;
    private readonly CACHE_TTL_MS;
    private readonly RATE_LIMITER_CAPACITY;
    private readonly RATE_LIMITER_REFILL_RATE;
    private readonly SUCCESS_SAMPLING_RATE;
    constructor(retryManager?: IRetryManager);
    private getLlmCallDeps;
    private initializeClients;
    private ensureInitialized;
    private determineProvider;
    isAvailable(): boolean;
    private enqueueExtractionLog;
    extractTriples(observation: string, options?: TripleExtractionOptions, memoryId?: string): Promise<TripleExtractionResult>;
    private extractWithLLM;
    private updateCostMetrics;
    private logExtractionResult;
    private normalizeExtractionResult;
    getCostMetrics(): LLMCostMetrics;
    getStatistics(): import("./triple-extraction-statistics.js").TripleExtractionStatistics;
    getFailureReasonStatistics(): Record<string, number>;
}
export {};
//# sourceMappingURL=triple-extraction-service.d.ts.map