/**
 * Core Memory Cache Service
 * always_load=true인 Core Memory 항목들을 메모리에 캐싱
 *
 * 클린코드 원칙:
 * - 단일 책임 원칙: Core Memory 캐싱만 담당
 * - TTL 없음: always_load=true인 항목은 영구적으로 메모리에 유지
 * - 빠른 조회: Map 기반 O(1) 조회 성능
 */
import type { CoreMemoryRecord } from '../repositories/core-memory-repository.js';
import type { CoreMemoryCache } from './core-memory-service.js';
/**
 * 캐시 엔트리 인터페이스
 * 버전 정보와 캐시 시간을 포함합니다.
 */
export interface CacheEntry {
    record: CoreMemoryRecord;
    cachedAt: number;
    version: number;
}
/**
 * 캐시 무효화 리스너 인터페이스
 */
export interface CacheInvalidationListener {
    /**
     * 특정 키의 캐시가 무효화될 때 호출됨
     */
    onInvalidate(key: string, reason?: string): void;
    /**
     * 전체 캐시가 무효화될 때 호출됨
     */
    onInvalidateAll(reason?: string): void;
}
/**
 * Core Memory Cache Service Implementation
 * always_load=true인 Core Memory 항목들을 메모리에 캐싱
 * 버전 기반 캐시 무효화 지원
 */
export declare class CoreMemoryCacheService implements CoreMemoryCache {
    private cache;
    private listeners;
    /**
     * 항목을 캐시에 저장
     * version=0인 경우 경고 로그 출력 (마이그레이션 미완료 가능성)
     */
    set(key: string, value: CoreMemoryRecord): void;
    /**
     * 캐시에서 항목 조회
     */
    get(key: string): CoreMemoryRecord | undefined;
    /**
     * 캐시에서 항목과 버전 정보 조회
     */
    getWithVersion(key: string): CacheEntry | undefined;
    /**
     * 캐시에서 항목 삭제
     */
    delete(key: string): boolean;
    /**
     * 버전 기반 캐시 무효화
     * DB의 버전이 캐시의 버전보다 높으면 무효화
     * version=0인 경우 항상 무효화 (마이그레이션 미완료로 간주)
     */
    invalidateByVersion(key: string, dbVersion: number): boolean;
    /**
     * 캐시 무효화 리스너 구독
     */
    subscribeInvalidation(listener: CacheInvalidationListener): void;
    /**
     * 캐시 무효화 리스너 구독 해제
     */
    unsubscribeInvalidation(listener: CacheInvalidationListener): void;
    /**
     * 특정 키 무효화 알림
     */
    private notifyInvalidate;
    /**
     * 전체 캐시 무효화 알림
     */
    private notifyInvalidateAll;
    /**
     * 캐시 전체 조회 (always_load=true인 항목들)
     */
    getAll(): CoreMemoryRecord[];
    /**
     * 캐시 무효화
     */
    clear(): void;
    /**
     * 캐시에 항목이 있는지 확인
     */
    has(key: string): boolean;
    /**
     * 캐시 크기 반환
     */
    size(): number;
    /**
     * 캐시 키 목록 반환
     */
    keys(): string[];
    /**
     * agent_id로 필터링된 항목 조회
     */
    getByAgentId(agent_id: string): CoreMemoryRecord[];
    /**
     * agent_id로 필터링된 항목 삭제
     */
    deleteByAgentId(agent_id: string): number;
    /**
     * 캐시 통계 반환
     */
    getStats(): {
        size: number;
        agentIds: string[];
        keys: string[];
    };
    /**
     * 캐시 무효화 (별칭, 리스너 알림 포함)
     */
    invalidate(key: string, reason?: string): boolean;
}
/**
 * 전역 Core Memory Cache 인스턴스 가져오기
 * 서버 초기화 시 생성된 캐시를 공유합니다.
 */
export declare function getCoreMemoryCache(): CoreMemoryCacheService;
/**
 * Core Memory Cache 인스턴스 설정 (초기화 시 사용)
 */
export declare function setCoreMemoryCache(cache: CoreMemoryCacheService): void;
/**
 * Core Memory Cache 인스턴스 초기화 (테스트용)
 */
export declare function resetCoreMemoryCache(): void;
//# sourceMappingURL=core-memory-cache-service.d.ts.map