/**
 * N-hop 검색 서비스 인터페이스 및 구현
 * Phase 2.3: anchor-search-service.ts 분리
 */
import type Database from 'better-sqlite3';
import type { VectorSearchEngine } from '../../../search/algorithms/vector-search-engine.js';
import type { IAnchorCacheService } from './anchor-interfaces.js';
import type { RelationGraph } from '../../../relation/services/relation-graph.js';
/**
 * N-hop 검색 결과
 */
export interface NHopSearchResult {
    memory_id: string;
    content: string;
    type: string;
    similarity: number;
    hop_distance: number;
    importance: number;
    created_at: string;
    tags?: string[];
    hasRelation?: boolean;
}
/**
 * 1-hop 검색 결과
 */
export interface OneHopSearchResult {
    memory_id: string;
    content: string;
    type: string;
    similarity: number;
    importance: number;
    created_at: string;
    tags?: string[];
}
/**
 * N-hop 검색 서비스 인터페이스
 */
export interface INHopSearchService {
    /**
     * 1-hop 검색: 앵커와 직접적으로 유사한 메모리 검색
     */
    searchOneHop(anchorEmbedding: number[], provider: string, anchorMemoryId: string, threshold: number, limit: number): Promise<OneHopSearchResult[]>;
    /**
     * N-hop 검색: 앵커를 기준으로 최대 N-hop까지 확장 검색
     */
    searchNHop(anchorEmbedding: number[], provider: string, anchorMemoryId: string, threshold: number, maxHops: number, limit: number, useRelations?: boolean): Promise<NHopSearchResult[]>;
}
/**
 * N-hop 검색 서비스 구현
 */
export declare class NHopSearchService implements INHopSearchService {
    private db;
    private cacheService;
    private vectorSearchEngine;
    private relationGraph;
    constructor(cacheService: IAnchorCacheService);
    /**
     * 데이터베이스 설정
     */
    setDatabase(db: Database.Database): void;
    /**
     * 벡터 검색 엔진 설정
     */
    setVectorSearchEngine(vectorSearchEngine: VectorSearchEngine): void;
    /**
     * 관계 그래프 설정
     */
    setRelationGraph(relationGraph: RelationGraph): void;
    private requireVectorContext;
    private mergeHopCandidates;
    private tryGetNextHopSeed;
    private materializeHopDiscoveries;
    private compareNHopRankedResults;
    private applyRelationWeightToNHopResult;
    private rankAndTruncateNHopResults;
    /**
     * 1-hop 검색: 앵커와 직접적으로 유사한 메모리 검색
     */
    searchOneHop(anchorEmbedding: number[], provider: string, anchorMemoryId: string, threshold: number, limit: number): Promise<OneHopSearchResult[]>;
    /**
     * N-hop 검색: 앵커를 기준으로 최대 N-hop까지 확장 검색
     */
    searchNHop(anchorEmbedding: number[], provider: string, anchorMemoryId: string, threshold: number, maxHops: number, limit: number, useRelations?: boolean): Promise<NHopSearchResult[]>;
    /**
     * 여러 메모리에 대한 연결 메모리 일괄 조회 (N+1 완화)
     */
    private getLinkedMemoriesBatch;
    /**
     * 연결된 메모리 조회 (관계 그래프 또는 memory_link 사용)
     */
    private getLinkedMemories;
    /**
     * 관계 유형별 부스트 가중치 반환
     */
    private getRelationTypeBoost;
    /**
     * 검색 결과 랭킹 점수 계산
     */
    private calculateRankingScore;
}
//# sourceMappingURL=n-hop-search-service.d.ts.map