/**
 * Anchor Manager
 * 핵심 앵커 관리 (CRUD) 담당
 * Phase 1.1: anchor-manager.ts 리팩토링
 */
import type Database from 'better-sqlite3';
import type { IAnchorManager, IAnchorCacheService, IAnchorSearchService, AnchorSlot, AnchorInfo, SearchOptions, SearchResult } from './anchor-interfaces.js';
import { ErrorLoggingService } from '../../../../domains/monitoring/services/error-logging-service.js';
/**
 * Anchor Manager 구현
 * 단일 책임 원칙: 앵커 CRUD 작업만 담당
 */
export declare class AnchorManager implements IAnchorManager {
    private db;
    private cacheService;
    private searchService;
    private errorLoggingService;
    /**
     * 슬롯별 설정
     */
    private readonly slotConfig;
    /**
     * 생성자 (옵션으로 db·errorLoggingService 주입 시 일괄 설정, 미전달 시 setDatabase/setErrorLoggingService 호출 필요)
     */
    constructor(cacheService: IAnchorCacheService, searchService: IAnchorSearchService, options?: {
        db?: Database.Database;
        errorLoggingService?: ErrorLoggingService;
    });
    /**
     * ErrorLoggingService 설정 (Phase 8.3)
     * 에러 로깅 서비스를 주입하여 구조화된 에러 로깅 활성화
     */
    setErrorLoggingService(errorLoggingService: ErrorLoggingService): void;
    /**
     * 데이터베이스 설정
     */
    setDatabase(db: Database.Database): void;
    /**
     * 앵커 설정
     * @param agentId - 에이전트 ID
     * @param memoryId - 메모리 ID
     * @param slot - 슬롯 (A, B, C)
     * @throws {MemoryNotFoundError} 메모리가 존재하지 않는 경우
     * @throws {AnchorError} 동일한 memory_id를 다른 슬롯에 이미 설정한 경우
     */
    setAnchor(agentId: string, memoryId: string, slot: AnchorSlot): Promise<void>;
    /**
     * 앵커 조회
     * @param agentId - 에이전트 ID
     * @param slot - 슬롯 (A, B, C), 선택적. 없으면 모든 슬롯 반환
     * @returns 앵커 정보 또는 null
     */
    getAnchor(agentId: string, slot?: AnchorSlot): Promise<AnchorInfo | AnchorInfo[] | null>;
    /**
     * 앵커 제거
     * @param agentId - 에이전트 ID
     * @param slot - 슬롯 (A, B, C), 선택적. 없으면 모든 슬롯 제거
     */
    clearAnchor(agentId: string, slot?: AnchorSlot): Promise<void>;
    /**
     * 슬롯별 설정 조회
     * @param slot - 슬롯
     * @returns 슬롯 설정 (hop_limit, vector_threshold)
     */
    getSlotConfig(slot: AnchorSlot): {
        hop_limit: number;
        vector_threshold: number;
    };
    /**
     * 검색 서비스 접근 (하위 호환성을 위해 유지)
     * @deprecated 직접 searchService를 사용하세요
     */
    getSearchService(): IAnchorSearchService;
    /**
     * 캐시 서비스 접근 (하위 호환성을 위해 유지)
     * @deprecated 직접 cacheService를 사용하세요
     */
    getCacheService(): IAnchorCacheService;
    /**
     * DB에서 캐시 복원
     * @param db - 데이터베이스 인스턴스
     */
    restoreCacheFromDB(db: Database.Database): Promise<void>;
    /**
     * 국소 검색 수행
     * @param agentId - 에이전트 ID
     * @param slot - 슬롯 (A, B, C)
     * @param query - 검색 쿼리 (선택적)
     * @param hopLimit - hop 제한 (선택적)
     * @param options - 검색 옵션
     */
    searchLocal(agentId: string, slot: AnchorSlot, query?: string, hopLimit?: number, options?: SearchOptions): Promise<SearchResult>;
}
//# sourceMappingURL=anchor-manager.d.ts.map