/**
 * 관계 추출 엔진 타입 정의
 * 기억 간의 의미적 관계를 추출하고 관리하기 위한 타입들
 */
import type { MemoryItem, MemoryType } from './index.js';
/**
 * 관계 추출 후보
 * 관계 추출 엔진이 발견한 잠재적 관계를 나타냅니다.
 */
export interface RelationCandidate {
    source_id: string;
    target_id: string;
    relation_type: RelationType;
    confidence: number;
    method: 'rule' | 'llm';
    evidence?: string;
}
/**
 * 관계 유형
 * 관계 추론 엔진에서 지원하는 관계 유형들
 */
export type RelationType = 'CAUSES' | 'DEPENDS_ON' | 'FOLLOWS' | 'CONTRASTS_WITH' | 'REFERENCES' | 'BELONGS_TO' | 'VERSION_OF' | 'extracted_from' | 'supported_by';
/**
 * 관계 카테고리
 * 관계 유형을 그룹화하는 카테고리
 */
export type RelationCategory = 'Causal' | 'Temporal' | 'Structural' | 'Semantic';
/**
 * 관계 추출 옵션
 */
export interface ExtractOptions {
    /**
     * 추출 방법 강제 지정 ('rule' | 'llm' | 'hybrid')
     * 기본값: 'hybrid' (규칙 기반 먼저 시도, 실패 시 LLM)
     */
    method?: 'rule' | 'llm' | 'hybrid';
    /**
     * 최소 신뢰도 임계값 (이 값 이상인 관계만 반환)
     * 기본값: 0.5
     */
    minConfidence?: number;
    /**
     * 관계 추출 대상 기억 수 제한
     * 기본값: 50 (규칙 기반), 30 (LLM)
     */
    candidateLimit?: number;
    /**
     * 관계 유형 필터 (특정 관계 유형만 추출)
     */
    relationTypes?: RelationType[];
    /**
     * 즉시 처리 여부 (false인 경우 배치 처리)
     * 기본값: false
     */
    immediate?: boolean;
}
/**
 * 관계 추출 결과
 */
export interface ExtractResult {
    candidates: RelationCandidate[];
    method: 'rule' | 'llm' | 'hybrid';
    processingTime: number;
    candidateCount: number;
    extractedCount: number;
}
/**
 * 관계 추출기 인터페이스
 * 관계 추출 엔진이 구현해야 하는 인터페이스
 */
export interface IRelationExtractor {
    /**
     * 새로운 기억과 기존 기억들 간의 관계를 추출합니다.
     *
     * @param newMemory 새로운 기억
     * @param existingMemories 기존 기억 목록
     * @param options 추출 옵션
     * @returns 관계 후보 목록
     */
    extractRelations(newMemory: MemoryItem, existingMemories: MemoryItem[], options?: ExtractOptions): Promise<RelationCandidate[]>;
}
/**
 * 기억 타입별 적용 가능한 관계 유형 매핑
 */
export declare const MEMORY_TYPE_RELATION_MAP: Record<MemoryType, RelationType[]>;
/**
 * 관계 유형별 카테고리 매핑
 */
export declare const RELATION_TYPE_CATEGORY_MAP: Record<RelationType, RelationCategory>;
/**
 * 관계 유형별 검색 부스트 가중치 (기본값)
 * 실제 값은 relation_type_registry 테이블에서 관리
 */
export declare const RELATION_TYPE_BOOST_MAP: Record<RelationType, number>;
/**
 * 기억 타입에 적용 가능한 관계 유형인지 확인
 */
export declare function isApplicableRelationType(memoryType: MemoryType, relationType: RelationType): boolean;
/**
 * 관계 유형의 카테고리를 반환
 */
export declare function getRelationCategory(relationType: RelationType): RelationCategory;
/**
 * 관계 유형의 검색 부스트 가중치를 반환
 */
export declare function getRelationBoost(relationType: RelationType): number;
/**
 * 모든 관계 유형 목록
 * 여러 파일에서 중복 정의를 방지하기 위한 공통 상수
 */
export declare const ALL_RELATION_TYPES: readonly RelationType[];
//# sourceMappingURL=relation.d.ts.map