/**
 * 통합 임베딩 서비스
 * 4가지 임베딩 제공자 중 선택하여 사용
 *
 * 클린코드 원칙:
 * - 단일 책임 원칙: 임베딩 서비스 통합만 담당
 * - 의존성 역전: 팩토리에 의존
 * - 전략 패턴: 제공자 선택 로직 분리
 */
import type { EmbeddingServiceInterface, EmbeddingResult, SimilarityResult, EmbeddingData, EmbeddingProvider } from '../../../shared/types/embedding.types.js';
/**
 * 통합 임베딩 서비스
 * 순환 의존성을 방지하기 위해 팩토리 패턴 사용
 */
export declare class UnifiedEmbeddingService implements EmbeddingServiceInterface {
    private factory;
    private currentProvider;
    private currentProviderName;
    private fallbackProviders;
    constructor();
    /**
     * 텍스트를 임베딩 벡터로 변환
     * TDD: 제공자 선택, 폴백 처리, 에러 핸들링
     */
    generateEmbedding(text: string, preferredProvider?: EmbeddingProvider): Promise<EmbeddingResult | null>;
    /**
     * 쿼리와 유사한 임베딩 검색
     * TDD: 제공자 선택, 폴백 처리
     */
    searchSimilar(query: string, embeddings: EmbeddingData[], limit?: number, threshold?: number, preferredProvider?: EmbeddingProvider): Promise<SimilarityResult[]>;
    /**
     * 서비스 사용 가능 여부 확인
     * TDD: 최소 하나의 제공자라도 사용 가능해야 함
     */
    isAvailable(): boolean;
    /**
     * 현재 사용 중인 모델 정보 반환
     *
     * 왜 이 메서드가 중요한가?
     * - fallback 발생 시 차원 정보가 정확히 반환되어야 함
     * - "expected 384 vs actual 512" 에러 방지를 위해 현재 제공자의 정확한 차원 반환 필요
     */
    getModelInfo(): {
        model: string;
        dimensions: number;
        maxTokens: number;
    };
    /**
     * 사용 가능한 제공자 목록 반환
     */
    getAvailableProviders(): string[];
    /**
     * 마지막으로 사용된 임베딩 제공자 이름 반환 (진단용)
     * recall 도구에서 TF-IDF fallback 감지에 사용됨
     */
    getCurrentProviderName(): EmbeddingProvider | null;
    /**
     * 폴백 제공자 설정
     */
    setFallbackProviders(providers: EmbeddingProvider[]): void;
    private syncFallbackProviders;
    /**
     * 입력 검증
     * 클린코드: 단일 책임 원칙 - 검증만 담당
     */
    private validateInput;
    /**
     * 제공자 선택
     * 클린코드: 단일 책임 원칙 - 선택 로직만 담당
     */
    private selectProvider;
    /**
     * 폴백 제공자 시도
     * 클린코드: 단일 책임 원칙 - 폴백 처리만 담당
     *
     * 왜 차원 정보 동기화가 필요한가?
     * - MiniLM(384) → TF-IDF(512) fallback 시 차원 정보가 달라짐
     * - getModelInfo()가 정확한 차원을 반환하도록 currentProvider 업데이트 필수
     */
    private tryFallbackProviders;
    /**
     * 폴백 검색 시도
     */
    private tryFallbackSearch;
    private handleProviderFailure;
}
//# sourceMappingURL=unified-embedding-service.d.ts.map