/**
 * Memory service for Studiograph
 *
 * Manages daily memory files similar to OpenClaw:
 * - memory/YYYY-MM-DD.md for each day
 * - Loads today + yesterday at session start
 * - Appends conversation context throughout the day
 *
 * Memory is scoped per user when auth is enabled.
 * In open mode (no auth), memory goes to the shared base directory.
 */
export interface MemoryEntry {
    timestamp: Date;
    type: 'conversation' | 'note' | 'decision';
    content: string;
    metadata?: Record<string, any>;
}
export declare class MemoryService {
    private memoryBaseDir;
    constructor();
    /**
     * Get the per-user memory directory. Falls back to the shared base directory
     * in open mode (no auth) or API-key access.
     */
    private getMemoryDir;
    /**
     * Ensure a directory exists
     */
    private ensureDir;
    /**
     * Get daily memory file path for a given date
     */
    private getDailyMemoryPath;
    /**
     * Format timestamp for memory entry
     */
    private formatTimestamp;
    /**
     * Write entry to today's memory file
     */
    writeMemory(entry: MemoryEntry, userId?: number): void;
    /**
     * Read memory for a specific date
     */
    readMemory(date: Date, userId?: number): string | null;
    /**
     * Read today's memory
     */
    readToday(userId?: number): string | null;
    /**
     * Read yesterday's memory
     */
    readYesterday(userId?: number): string | null;
    /**
     * Load recent memory (today + yesterday)
     */
    loadRecentMemory(userId?: number): string;
    /**
     * List all memory files
     */
    listMemoryFiles(userId?: number): string[];
    /**
     * Search memory files for a keyword
     */
    searchMemory(keyword: string, limit?: number, userId?: number): Array<{
        date: string;
        snippet: string;
    }>;
    /**
     * Save session summary to memory
     */
    saveSessionSummary(summary: string, metadata?: Record<string, any>, userId?: number): void;
    /**
     * Save a note to memory
     */
    saveNote(note: string, metadata?: Record<string, any>, userId?: number): void;
    /**
     * Clear all memory files
     */
    clear(userId?: number): number;
    /**
     * Save a decision to memory
     */
    saveDecision(decision: string, metadata?: Record<string, any>, userId?: number): void;
}
