/**
 * Knowledge Vault Service
 * Knowledge Vault에 대한 비즈니스 로직 처리
 *
 * 클린코드 원칙:
 * - 단일 책임 원칙: Knowledge Vault 비즈니스 로직만 담당
 * - 의존성 역전: Repository에 의존
 * - Immutable 검증: immutable=true인 경우 업데이트/삭제 제한
 * - 버전 관리: 기존 버전을 삭제하지 않고 새 버전 생성
 */
import { type IKnowledgeVaultRepository, type KnowledgeVaultRecord } from '../repositories/knowledge-vault-repository.interface.js';
export interface CreateKnowledgeVaultServiceInput {
    agent_id?: string;
    key: string;
    value: string;
    immutable?: boolean;
    admin_override?: boolean;
    origin_source?: string | null;
}
export interface UpdateKnowledgeVaultServiceInput {
    value?: string;
    immutable?: boolean;
    admin_override?: boolean;
    origin_source?: string | null;
}
/**
 * Immutable 데이터 수정 시도 에러
 */
export declare class ImmutableDataError extends Error {
    constructor(message: string);
}
/**
 * Knowledge Vault Service
 */
export declare class KnowledgeVaultService {
    private repository;
    constructor(repository: IKnowledgeVaultRepository);
    /**
     * Knowledge Vault 생성
     * 기존 활성 버전이 있으면 새 버전으로 생성 (기존 버전은 유지)
     */
    create(input: CreateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
    /**
     * ID로 Knowledge Vault 조회
     */
    findById(vault_id: string): Promise<KnowledgeVaultRecord | null>;
    /**
     * agent_id와 key로 활성 버전 조회
     */
    findActiveByKey(agent_id: string, key: string): Promise<KnowledgeVaultRecord | null>;
    /**
     * agent_id와 key로 특정 버전 조회
     */
    findByKeyAndVersion(agent_id: string, key: string, version: number): Promise<KnowledgeVaultRecord | null>;
    /**
     * agent_id와 key로 모든 버전 조회
     */
    findAllVersionsByKey(agent_id: string, key: string): Promise<KnowledgeVaultRecord[]>;
    /**
     * agent_id로 모든 활성 Knowledge Vault 조회
     */
    findActiveByAgentId(agent_id: string): Promise<KnowledgeVaultRecord[]>;
    /**
     * agent_id로 모든 Knowledge Vault 조회 (삭제된 것 포함)
     */
    findByAgentId(agent_id: string): Promise<KnowledgeVaultRecord[]>;
    /**
     * Knowledge Vault 업데이트
     * immutable=true인 경우 새 버전으로 생성 (기존 버전은 유지)
     */
    update(vault_id: string, input: UpdateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
    /**
     * agent_id와 key로 활성 버전 업데이트
     * immutable=true인 경우 새 버전으로 생성
     */
    updateActiveByKey(agent_id: string, key: string, input: UpdateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
    /**
     * Knowledge Vault 삭제 (soft delete)
     * immutable=true인 경우 삭제 불가
     */
    delete(vault_id: string): Promise<boolean>;
    /**
     * agent_id와 key로 활성 버전 삭제 (soft delete)
     */
    deleteActiveByKey(agent_id: string, key: string): Promise<boolean>;
    /**
     * 하드 삭제 (물리적 삭제, 주의 필요)
     * immutable=true인 경우에도 강제 삭제 가능 (admin 권한 필요)
     */
    hardDelete(vault_id: string, force?: boolean): Promise<boolean>;
    /**
     * 모든 활성 Knowledge Vault 조회
     */
    findAllActive(): Promise<KnowledgeVaultRecord[]>;
    /**
     * 모든 Knowledge Vault 조회 (삭제된 것 포함)
     */
    findAll(): Promise<KnowledgeVaultRecord[]>;
    /**
     * Knowledge Vault 개수 조회
     */
    count(agent_id?: string, activeOnly?: boolean): Promise<number>;
    /**
     * Immutable 검증
     * immutable=true인 경우 업데이트/삭제 가능 여부 확인
     */
    canUpdate(record: KnowledgeVaultRecord, admin_override?: boolean): boolean;
    /**
     * Immutable 검증
     * immutable=true인 경우 삭제 가능 여부 확인
     */
    canDelete(record: KnowledgeVaultRecord, admin_override?: boolean): boolean;
}
//# sourceMappingURL=knowledge-vault-service.d.ts.map