/**
 * Triple 추출 관련 타입 정의
 * AriGraph 파이프라인에서 사용되는 타입들
 */
/**
 * Triple 구조 (subject, predicate, object)
 */
export interface Triple {
    subject: string;
    predicate: string;
    object: string;
}
/**
 * Triple 추출 실패 사유
 */
export type TripleExtractionFailureReason = 'no_triple' | 'ambiguous_structure' | 'llm_parse_fail' | 'llm_api_error' | 'llm_unavailable' | 'db_connection_error' | 'relation_graph_unavailable' | 'semantic_update_failed' | 'conversion_error';
/**
 * Triple 추출 단계별 성공 여부
 */
export interface ExtractionSteps {
    canonicalization: boolean;
    entityLinking: boolean;
}
/**
 * Triple 추출 정보
 * 각 triple별로 독립적으로 저장됨
 */
export interface ExtractionInfo {
    failureReason?: TripleExtractionFailureReason;
    steps: ExtractionSteps;
    rawLLMOutput?: string;
}
/**
 * Triple 추출 결과
 */
export interface TripleExtractionResult {
    triples: Triple[];
    extractionInfo: ExtractionInfo;
}
/**
 * Triple 추출 옵션
 */
export interface TripleExtractionOptions {
    /**
     * LLM Provider 선택
     * 'auto'인 경우 사용 가능한 provider 자동 선택
     */
    provider?: 'openai' | 'gemini' | 'ollama' | 'auto';
    /**
     * Temperature 설정 (기본값: 0.3)
     */
    temperature?: number;
    /**
     * 최대 토큰 수 (기본값: 2000)
     */
    maxTokens?: number;
    /**
     * rawLLMOutput 저장 여부 (기본값: false)
     * true인 경우에도 로그 파일에만 저장 (DB에는 저장하지 않음)
     */
    includeRawOutput?: boolean;
}
/**
 * Predicate 정규화 결과
 */
export interface PredicateCanonicalizationResult {
    canonical: string;
    original: string;
    success: boolean;
    synonym?: string;
}
/**
 * Entity Linking 결과
 */
export interface EntityLinkingResult {
    linked: string;
    original: string;
    success: boolean;
    normalized: boolean;
}
/**
 * Triple 유효성 검증 결과
 */
export interface TripleValidationResult {
    valid: boolean;
    errors: string[];
}
/**
 * Triple 추출 통계
 */
export interface TripleExtractionStats {
    totalAttempts: number;
    successfulExtractions: number;
    failedExtractions: number;
    failureReasons: Record<TripleExtractionFailureReason, number>;
    averageTriplesPerExtraction: number;
    averageExtractionTime: number;
}
export interface TriplePipelineChunkError {
    chunkIndex: number;
    reason: TripleExtractionFailureReason;
    message?: string;
}
export interface TriplePipelineResult {
    triples: Triple[];
    chunkErrors: TriplePipelineChunkError[];
    chunksProcessed: number;
}
//# sourceMappingURL=triple-extraction.d.ts.map