import type { MemoryProvider, MemorySearchResult, MemoryToolLocalProvider, ProjectMemoryStore } from "../../runtime/ports/index.js";
export declare const MEMORY_TOOL_NAME: "memory";
export declare const MEMORY_TOOL_LABEL = "Memory";
export declare const MEMORY_TOOL_ACTIONS: readonly ["add", "replace", "remove", "create_file", "write_file", "read_file", "delete_file", "list_files", "search", "remember", "temporal", "feedback"];
export type MemoryToolAction = (typeof MEMORY_TOOL_ACTIONS)[number];
export declare const MEMORY_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly action: {
            readonly type: "string";
            readonly enum: string[];
            readonly description: string;
        };
        readonly content: {
            readonly type: "string";
            readonly description: string;
        };
        readonly old_text: {
            readonly type: "string";
            readonly description: "For 'replace'/'remove': the exact text to find in INDEX.md.";
        };
        readonly new_text: {
            readonly type: "string";
            readonly description: "For 'replace': the replacement text.";
        };
        readonly file: {
            readonly type: "string";
            readonly description: "Filename for file operations (e.g. 'project-notes.md', 'lesson-esbuild.md'). Must be kebab-case .md.";
        };
        readonly query: {
            readonly type: "string";
            readonly description: "For 'search'/'temporal': natural language query to find relevant memories.";
        };
        readonly days: {
            readonly type: "number";
            readonly description: "For 'temporal': look back N days from today (default: 7).";
        };
        readonly memory_ids: {
            readonly type: "array";
            readonly items: {
                readonly type: "string";
            };
            readonly description: "For 'feedback': IDs of memories to give feedback on.";
        };
        readonly signal: {
            readonly type: "string";
            readonly enum: readonly ["useful", "irrelevant", "outdated", "wrong"];
            readonly description: "For 'feedback': the feedback signal to apply.";
        };
        readonly category: {
            readonly type: "string";
            readonly enum: readonly ["preference", "personal_fact", "lesson", "pattern", "decision", "context"];
            readonly description: "For 'remember': categorize the memory (helps with future recall precision).";
        };
    };
    readonly required: readonly ["action"];
};
export declare const MEMORY_TOOL_DESCRIPTION: string;
export declare function isMemoryContentSafe(text: string): boolean;
export interface MemoryToolParams {
    action: MemoryToolAction;
    content?: string;
    old_text?: string;
    new_text?: string;
    file?: string;
    query?: string;
    days?: number;
    memory_ids?: string[];
    signal?: "useful" | "irrelevant" | "outdated" | "wrong";
    category?: string;
}
export interface MemoryToolResult {
    ok: boolean;
    message: string;
    action: string;
    results?: MemorySearchResult[];
}
export interface MemoryToolExecutorDeps {
    memdir: ProjectMemoryStore;
    provider?: MemoryProvider;
    /** Runtime memory provider for temporal/feedback (typed narrow for advanced ops). */
    localProvider?: MemoryToolLocalProvider;
    userId: string;
}
export declare function executeMemoryTool(params: MemoryToolParams, deps: MemoryToolExecutorDeps): Promise<MemoryToolResult>;
