/**
 * 벡터 검색 리포지토리 구현
 * 데이터베이스 접근 로직 분리
 */
import Database from 'better-sqlite3';
import type { VectorSearchRepository } from '../../../shared/interfaces/database.interface.js';
import type { VectorIndexStatus, VectorSearchQuery, VectorSearchResult } from '../../../shared/types/vector-search.types.js';
export declare class VectorSearchRepositoryImpl implements VectorSearchRepository {
    private db;
    private isVecAvailable;
    constructor(db: Database.Database);
    /**
     * VEC 사용 가능 여부 확인
     */
    checkVecAvailability(): boolean;
    /**
     * 벡터 검색 실행
     */
    search(query: VectorSearchQuery): Promise<VectorSearchResult[]>;
    /**
     * 하이브리드 검색 실행
     */
    hybridSearch(query: VectorSearchQuery): Promise<VectorSearchResult[]>;
    /**
     * 인덱스 상태 확인
     */
    getIndexStatus(): VectorIndexStatus;
    /**
     * 인덱스 재구성
     */
    rebuildIndex(): Promise<boolean>;
    /**
     * 테이블명 반환
     * dimensions 전달 시 tfidf+384 → memory_item_vec 매핑 적용.
     */
    getTableName(provider: string, dimensions?: number): string;
    /**
     * VEC 사용 가능 여부 확인 (VectorIndexRepository 인터페이스 구현)
     */
    checkAvailability(): boolean;
    /**
     * sqlite_master에 vec 테이블이 등록되어 있는지 확인합니다.
     * 단순한 DB mock이 테이블 부재를 반영하지 못해 preflight가 오탐되는 것을 줄입니다 (issue #278).
     */
    private isVecTableRegistered;
    /**
     * memory_embedding 우세 dimensions로 vec 테이블을 고를지 여부.
     * tfidf만 memory_item_vec(384) vs memory_item_vec_tfidf(512) 레거시 분기가 있어
     * 저장 차원을 따른다. minilm/openai/gemini/lightweight는 vec 스키마가 provider별로
     * 고정이므로 오염된 dimensions 컬럼을 쓰면 쿼리 벡터만 늘어나 sqlite-vec 차원 오류가 난다.
     */
    private shouldUseDominantStoredDimensionsForTable;
    private resolveRuntimeVectorContext;
    /**
     * provider별로 가장 많이 등장하는 dimensions를 사용합니다.
     * LIMIT 1 임의 행보다 혼재 차원 DB에서 테이블 선택이 안정적입니다.
     */
    private getDominantStoredDimensions;
    /**
     * 쿼리 벡터가 현재 설정상 네이티브 차원이면, 저장소 기준 차원으로 투영합니다.
     * 그 외 길이 불일치는 null을 반환합니다(호출부에서 기존 오류 처리).
     */
    private alignQueryVectorToStoredDimensions;
    private getExpectedDimensions;
    private safeParseTags;
}
//# sourceMappingURL=vector-search.repository.d.ts.map