import { EventEmitter } from "events";
export interface Memory {
    key: string;
    value: string;
    category: MemoryCategory;
    createdAt: Date;
    updatedAt: Date;
    accessCount: number;
    tags?: string[];
}
export type MemoryCategory = "project" | "preferences" | "decisions" | "patterns" | "context" | "custom";
export interface MemoryConfig {
    projectMemoryPath: string;
    userMemoryPath: string;
    autoCapture: boolean;
    maxMemories: number;
    relevanceThreshold: number;
}
/**
 * Persistent Memory Manager - Inspired by Claude's CLAUDE.md memory system
 * Stores memories in markdown files that persist across sessions
 */
export declare class PersistentMemoryManager extends EventEmitter {
    private config;
    private projectMemories;
    private userMemories;
    private initialized;
    constructor(config?: Partial<MemoryConfig>);
    /**
     * Initialize memory system, loading existing memories
     */
    initialize(): Promise<void>;
    private ensureMemoryFiles;
    private loadMemories;
    private parseMemoryFile;
    private createMemory;
    /**
     * Remember something (store in memory)
     */
    remember(key: string, value: string, options?: {
        scope?: "project" | "user";
        category?: MemoryCategory;
        tags?: string[];
    }): Promise<void>;
    /**
     * Recall something from memory
     */
    recall(key: string, scope?: "project" | "user"): string | null;
    /**
     * Forget something (remove from memory)
     */
    forget(key: string, scope?: "project" | "user"): Promise<boolean>;
    /**
     * Get memories relevant to a query (simple keyword matching)
     */
    getRelevantMemories(query: string, limit?: number): Memory[];
    /**
     * Get all memories for a category
     */
    getByCategory(category: MemoryCategory, scope?: "project" | "user"): Memory[];
    /**
     * Clear old memories
     */
    forgetOlderThan(days: number, scope?: "project" | "user"): Promise<number>;
    /**
     * Save memories to file
     */
    private saveMemories;
    /**
     * Get context string for system prompt
     */
    getContextForPrompt(): string;
    /**
     * Auto-capture important information from conversation
     */
    autoCapture(message: string, response: string): Promise<void>;
    /**
     * Format memories for display
     */
    formatMemories(scope?: "project" | "user"): string;
    getStats(): {
        project: number;
        user: number;
        total: number;
    };
}
export declare function getMemoryManager(config?: Partial<MemoryConfig>): PersistentMemoryManager;
export declare function initializeMemory(config?: Partial<MemoryConfig>): Promise<PersistentMemoryManager>;
