/**
 * Core Memory Service
 * Core Memory에 대한 비즈니스 로직 처리
 *
 * 클린코드 원칙:
 * - 단일 책임 원칙: Core Memory 비즈니스 로직만 담당
 * - 의존성 역전: Repository에 의존
 * - 캐시 연동: always_load=true인 항목은 캐시에 유지
 */
import type { CoreMemoryRecord, CoreMemoryRepository } from '../repositories/core-memory-repository.interface.js';
export interface CoreMemoryCache {
    /**
     * 항목을 캐시에 저장
     */
    set(key: string, value: CoreMemoryRecord): void;
    /**
     * 캐시에서 항목 조회
     */
    get(key: string): CoreMemoryRecord | undefined;
    /**
     * 캐시에서 항목 삭제
     */
    delete(key: string): void;
    /**
     * 캐시 전체 조회 (always_load=true인 항목들)
     */
    getAll(): CoreMemoryRecord[];
    /**
     * 캐시 무효화
     */
    clear(): void;
    /**
     * 캐시 크기 반환
     */
    size(): number;
}
export interface CreateCoreMemoryServiceInput {
    agent_id?: string;
    key: string;
    value: string;
    always_load?: boolean;
    origin_source?: string | null;
}
export interface UpdateCoreMemoryServiceInput {
    value?: string;
    always_load?: boolean;
    origin_source?: string | null;
}
/**
 * Core Memory Service
 */
export declare class CoreMemoryService {
    private repository;
    private cache;
    constructor(repository: CoreMemoryRepository, cache?: CoreMemoryCache);
    /**
     * 캐시 서비스 설정
     */
    setCache(cache: CoreMemoryCache): void;
    /**
     * Core Memory 생성
     */
    create(input: CreateCoreMemoryServiceInput): Promise<CoreMemoryRecord>;
    /**
     * ID로 Core Memory 조회
     */
    findById(core_id: string): Promise<CoreMemoryRecord | null>;
    /**
     * agent_id와 key로 Core Memory 조회 (캐시 우선, 버전 비교)
     */
    findByKey(agent_id: string, key: string): Promise<CoreMemoryRecord | null>;
    /**
     * agent_id로 모든 Core Memory 조회
     */
    findByAgentId(agent_id: string): Promise<CoreMemoryRecord[]>;
    /**
     * always_load=true인 Core Memory 조회 (캐시 우선)
     */
    findAlwaysLoad(agent_id?: string): Promise<CoreMemoryRecord[]>;
    /**
     * Core Memory 업데이트
     */
    update(core_id: string, input: UpdateCoreMemoryServiceInput): Promise<CoreMemoryRecord | null>;
    /**
     * agent_id와 key로 Core Memory 업데이트
     */
    updateByKey(agent_id: string, key: string, input: UpdateCoreMemoryServiceInput): Promise<CoreMemoryRecord | null>;
    /**
     * Core Memory 삭제
     */
    delete(core_id: string): Promise<boolean>;
    /**
     * agent_id와 key로 Core Memory 삭제
     */
    deleteByKey(agent_id: string, key: string): Promise<boolean>;
    /**
     * agent_id로 모든 Core Memory 삭제
     */
    deleteByAgentId(agent_id: string): Promise<number>;
    /**
     * 모든 Core Memory 조회 (관리용)
     */
    findAll(): Promise<CoreMemoryRecord[]>;
    /**
     * Core Memory 개수 조회
     */
    count(agent_id?: string): Promise<number>;
    /**
     * 캐시 키 생성
     */
    private getCacheKey;
    /**
     * 캐시 무효화 및 재로드 (always_load=true인 항목들)
     */
    reloadCache(agent_id?: string): Promise<void>;
}
//# sourceMappingURL=core-memory-service.d.ts.map