/**
 * Remember Tool - 기억 저장 도구
 *
 * 즉시 저장 (Issue #89): 메모리 항목은 DB에 append-only로 저장된 직후 응답을 반환한다.
 * Triple 추출·콘솔리데이션 등 augmentation은 BatchScheduler 워커에서 비동기 수행되며,
 * 호출자는 augmentation 완료를 기다리지 않는다.
 */
import { z } from 'zod';
import { BaseTool } from '../../../tools/base-tool.js';
import type { ToolContext, ToolResult } from '../../../tools/types.js';
declare const RememberSchema: z.ZodEffects<z.ZodObject<{
    content: z.ZodOptional<z.ZodString>;
    type: z.ZodOptional<z.ZodEnum<["working", "episodic", "semantic", "procedural", "core", "vault"]>>;
    key: z.ZodOptional<z.ZodString>;
    value: z.ZodOptional<z.ZodString>;
    always_load: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    immutable: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    task_goal: z.ZodOptional<z.ZodString>;
    steps: z.ZodOptional<z.ZodString>;
    reflection_notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
    workflow_name: z.ZodOptional<z.ZodString>;
    skill_name: z.ZodOptional<z.ZodString>;
    trigger_conditions: z.ZodOptional<z.ZodString>;
    update_mode: z.ZodOptional<z.ZodEnum<["replace", "incremental", "versioned"]>>;
    enable_triple_extraction: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    importance: z.ZodDefault<z.ZodNumber>;
    source: z.ZodOptional<z.ZodString>;
    privacy_scope: z.ZodDefault<z.ZodEnum<["private", "team", "public"]>>;
    owner_id: z.ZodOptional<z.ZodString>;
    process_id: z.ZodOptional<z.ZodString>;
    session_id: z.ZodOptional<z.ZodString>;
    project_id: z.ZodOptional<z.ZodString>;
    num_times: z.ZodOptional<z.ZodNumber>;
    last_mentioned_at: z.ZodOptional<z.ZodString>;
    source_session_id: z.ZodOptional<z.ZodString>;
    confidence: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    importance: number;
    privacy_scope: "private" | "team" | "public";
    key?: string | undefined;
    value?: string | undefined;
    workflow_name?: string | undefined;
    skill_name?: string | undefined;
    type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
    project_id?: string | undefined;
    content?: string | undefined;
    tags?: string[] | undefined;
    reflection_notes?: string | null | undefined;
    source?: string | undefined;
    process_id?: string | undefined;
    confidence?: number | undefined;
    task_goal?: string | undefined;
    steps?: string | undefined;
    trigger_conditions?: string | undefined;
    owner_id?: string | undefined;
    immutable?: boolean | undefined;
    always_load?: boolean | undefined;
    session_id?: string | undefined;
    update_mode?: "replace" | "incremental" | "versioned" | undefined;
    enable_triple_extraction?: boolean | undefined;
    num_times?: number | undefined;
    last_mentioned_at?: string | undefined;
    source_session_id?: string | undefined;
}, {
    key?: string | undefined;
    value?: string | undefined;
    workflow_name?: string | undefined;
    skill_name?: string | undefined;
    type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
    project_id?: string | undefined;
    importance?: number | undefined;
    content?: string | undefined;
    tags?: string[] | undefined;
    reflection_notes?: string | null | undefined;
    privacy_scope?: "private" | "team" | "public" | undefined;
    source?: string | undefined;
    process_id?: string | undefined;
    confidence?: number | undefined;
    task_goal?: string | undefined;
    steps?: string | undefined;
    trigger_conditions?: string | undefined;
    owner_id?: string | undefined;
    immutable?: boolean | undefined;
    always_load?: boolean | undefined;
    session_id?: string | undefined;
    update_mode?: "replace" | "incremental" | "versioned" | undefined;
    enable_triple_extraction?: boolean | undefined;
    num_times?: number | undefined;
    last_mentioned_at?: string | undefined;
    source_session_id?: string | undefined;
}>, {
    importance: number;
    privacy_scope: "private" | "team" | "public";
    key?: string | undefined;
    value?: string | undefined;
    workflow_name?: string | undefined;
    skill_name?: string | undefined;
    type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
    project_id?: string | undefined;
    content?: string | undefined;
    tags?: string[] | undefined;
    reflection_notes?: string | null | undefined;
    source?: string | undefined;
    process_id?: string | undefined;
    confidence?: number | undefined;
    task_goal?: string | undefined;
    steps?: string | undefined;
    trigger_conditions?: string | undefined;
    owner_id?: string | undefined;
    immutable?: boolean | undefined;
    always_load?: boolean | undefined;
    session_id?: string | undefined;
    update_mode?: "replace" | "incremental" | "versioned" | undefined;
    enable_triple_extraction?: boolean | undefined;
    num_times?: number | undefined;
    last_mentioned_at?: string | undefined;
    source_session_id?: string | undefined;
}, {
    key?: string | undefined;
    value?: string | undefined;
    workflow_name?: string | undefined;
    skill_name?: string | undefined;
    type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
    project_id?: string | undefined;
    importance?: number | undefined;
    content?: string | undefined;
    tags?: string[] | undefined;
    reflection_notes?: string | null | undefined;
    privacy_scope?: "private" | "team" | "public" | undefined;
    source?: string | undefined;
    process_id?: string | undefined;
    confidence?: number | undefined;
    task_goal?: string | undefined;
    steps?: string | undefined;
    trigger_conditions?: string | undefined;
    owner_id?: string | undefined;
    immutable?: boolean | undefined;
    always_load?: boolean | undefined;
    session_id?: string | undefined;
    update_mode?: "replace" | "incremental" | "versioned" | undefined;
    enable_triple_extraction?: boolean | undefined;
    num_times?: number | undefined;
    last_mentioned_at?: string | undefined;
    source_session_id?: string | undefined;
}>;
/** Remember 도구 파라미터 타입 (Zod 스키마 추론) */
export type RememberParams = z.infer<typeof RememberSchema>;
export declare class RememberTool extends BaseTool {
    constructor();
    /**
     * reflection_notes 파라미터의 JSON 형식 및 스키마 검증
     * 단일 객체 또는 배열 형식 모두 허용
     *
     * @param reflectionNotes - 검증할 reflection_notes 문자열
     * @throws Error - JSON 형식이 유효하지 않거나 스키마 검증 실패 시
     */
    private validateReflectionNotesJson;
    /**
     * 같은 task_goal을 가진 기존 procedural memory 레코드의 reflection_notes 조회
     *
     * @param db - 데이터베이스 인스턴스
     * @param taskGoal - 작업 목표
     * @returns 기존 reflection_notes 조회 결과
     */
    private getExistingReflectionNotes;
    /**
     * reflection_notes 문자열을 파싱하고 타입 확인
     * NULL, 단일 객체, 배열 케이스 처리
     *
     * @param reflectionNotes - 파싱할 reflection_notes 문자열
     * @returns 파싱 결과
     */
    private parseReflectionNotes;
    handle(params: RememberParams, context: ToolContext): Promise<ToolResult>;
    /**
     * 기존 procedural memory 조회
     * workflow_name과 skill_name으로 기존 레코드를 찾습니다.
     *
     * @param db 데이터베이스 연결
     * @param workflow_name 프로세스 이름
     * @param skill_name 기술/능력 이름
     * @returns 기존 procedural memory 레코드 또는 null
     */
    private findExistingProceduralMemory;
    /**
     * 관계 추출을 위한 기존 기억들 조회
     *
     * @param db 데이터베이스 연결
     * @param excludeId 제외할 기억 ID (새로 저장된 기억)
     * @param limit 조회할 기억 수 제한
     * @returns 기존 기억 목록
     */
    private getExistingMemoriesForRelationExtraction;
    /**
     * ID로 기억 조회
     *
     * @param db 데이터베이스 연결
     * @param id 기억 ID
     * @returns 기억 정보
     */
    private getMemoryById;
}
export {};
//# sourceMappingURL=remember-tool.d.ts.map