/**
 * Memory Neighbor Service
 * 벡터 유사도를 기반으로 특정 기억의 이웃 기억을 조회하는 서비스
 */
import type { VectorSearchEngine } from '../../search/algorithms/vector-search-engine.js';
import type { MemoryEmbeddingService } from './memory-embedding-service.js';
import Database from 'better-sqlite3';
/**
 * 이웃 기억 조회 결과
 */
export interface NeighborMemory {
    id: string;
    content: string;
    type: string;
    similarity: number;
    importance?: number;
    created_at?: string;
    tags?: string[];
}
/**
 * 이웃 기억 조회 응답
 */
export interface NeighborSearchResult {
    memory_id: string;
    neighbors: NeighborMemory[];
    total_count: number;
    query_time: number;
}
/**
 * 이웃 기억 조회 옵션
 */
export interface NeighborSearchOptions {
    limit?: number;
    similarity_threshold?: number;
}
/**
 * 메모리를 찾을 수 없을 때 발생하는 에러
 */
export declare class MemoryNotFoundError extends Error {
    constructor(memoryId: string);
}
/**
 * Memory Neighbor Service
 * 벡터 유사도를 기반으로 기억의 이웃을 찾는 서비스
 */
export declare class MemoryNeighborService {
    private readonly vectorSearchEngine;
    private readonly embeddingService;
    private db;
    /**
     * 생성자 (db 주입 시 즉시 설정, 미전달 시 setDatabase() 호출 필요)
     * @param vectorSearchEngine - 벡터 검색 엔진 인스턴스
     * @param embeddingService - 메모리 임베딩 서비스 인스턴스
     * @param db - 데이터베이스 인스턴스 (선택)
     */
    constructor(vectorSearchEngine: VectorSearchEngine, embeddingService: MemoryEmbeddingService, db?: Database.Database);
    /**
     * 데이터베이스 설정
     * VectorSearchEngine에도 데이터베이스를 설정합니다.
     * @param db - 데이터베이스 인스턴스
     */
    setDatabase(db: Database.Database): void;
    /**
     * 특정 기억의 이웃 기억을 조회
     * @param memoryId - 조회할 기억의 ID
     * @param options - 조회 옵션 (limit, similarity_threshold)
     * @returns 이웃 기억 조회 결과
     * @throws {MemoryNotFoundError} 메모리를 찾을 수 없는 경우
     * @throws {Error} 데이터베이스 오류, 벡터 검색 오류 등
     */
    getNeighbors(memoryId: string, options?: NeighborSearchOptions): Promise<NeighborSearchResult>;
    /**
     * 새로 저장된 기억에 대한 인접 기억 목록 갱신
     * PRD 3.1-3.3 요구사항: 새 기억 저장 시 기존 기억들과의 유사도 계산 및 인접 기억 식별
     *
     * @param newMemoryId - 새로 저장된 기억의 ID
     * @param similarityThreshold - 유사도 임계값 (기본값: 0.8)
     * @returns 인접 기억 ID 목록 (유사도가 임계값 이상인 기억들)
     */
    updateNeighborsForNewMemory(newMemoryId: string, similarityThreshold?: number): Promise<string[]>;
}
//# sourceMappingURL=memory-neighbor-service.d.ts.map