/**
 * 메모리 임베딩 저장 및 검색 서비스
 * 데이터베이스와 임베딩 서비스를 연동
 */
import type Database from 'better-sqlite3';
import type { EmbeddingProvider, EmbeddingResult } from '../../../shared/types/embedding.types.js';
import type { MemoryType } from '../../../shared/types/index.js';
import { UnifiedEmbeddingService } from '../../embedding/services/unified-embedding-service.js';
export interface MemoryEmbedding {
    memory_id: string;
    embedding: number[];
    embedding_provider?: string;
    dimensions?: number;
    created_by?: string;
    created_at: string;
}
export interface VectorSearchResult {
    id: string;
    content: string;
    type: string;
    importance: number;
    created_at: string;
    last_accessed?: string;
    pinned: boolean;
    tags?: string[];
    similarity: number;
    score: number;
}
export interface SearchBySimilarityOutcome {
    results: VectorSearchResult[];
    query_embedding_providers?: EmbeddingProvider[];
}
export declare class MemoryEmbeddingService {
    private embeddingService;
    private readonly defaultProvider;
    private readonly createdByTag;
    constructor();
    /**
     * 마지막으로 사용된 임베딩 제공자 이름 반환 (진단용)
     * recall/memory_injection에서 TF-IDF fallback 감지에 사용됨
     */
    getCurrentProviderName(): EmbeddingProvider | null;
    /**
     * HybridSearchEngine 쿼리 임베딩과 동일한 UnifiedEmbeddingService 인스턴스.
     * 별도 UnifiedEmbeddingService를 쓰면 VEC 경로에서 getCurrentProviderName()이 실제 쿼리 임베딩과 불일치함.
     */
    getUnifiedEmbeddingService(): UnifiedEmbeddingService;
    private writeEmbeddingStderr;
    private getBlockingCompatibilityIssues;
    private emitCompatibilityDiagnosticsForCreate;
    private insertMemoryEmbeddingForCreate;
    private buildVecSimilarityQuery;
    private mapSimilaritySearchRows;
    /**
     * sqlite-vec 확장 로드
     * init.ts와 동일한 방식으로 sqlite-vec 패키지의 getLoadablePath() 사용
     */
    private loadVecExtension;
    /**
     * 메모리에 임베딩 생성 및 저장
     */
    createAndStoreEmbedding(db: Database.Database, memoryId: string, content: string, _type: MemoryType, preferredProvider?: EmbeddingProvider): Promise<EmbeddingResult | null>;
    /**
     * 제공자별 vec0 테이블명 반환
     * SQL Injection 방지를 위해 화이트리스트 기반 검증을 수행합니다.
     */
    private getVectorTableName;
    /**
     * 벡터 유사도 검색
     */
    searchBySimilarity(db: Database.Database, query: string, filters?: {
        type?: MemoryType[];
        limit?: number;
        threshold?: number;
    }): Promise<SearchBySimilarityOutcome>;
    /**
     * 임베딩 삭제
     */
    deleteEmbedding(db: Database.Database, memoryId: string): Promise<void>;
    private safeParseTags;
    /**
     * 임베딩 서비스 사용 가능 여부 확인
     */
    isAvailable(): boolean;
    /**
     * 임베딩 통계 정보
     */
    getEmbeddingStats(db: Database.Database): Promise<{
        totalEmbeddings: number;
        averageDimensions: number;
        model: string;
        providerStats: Array<{
            provider: string;
            count: number;
            dimensions: number;
        }>;
    }>;
    private normalizeProvider;
    private ensureMetadataDefaults;
}
//# sourceMappingURL=memory-embedding-service.d.ts.map