import { Message, MemoryRecord, MemoryType, MemoryStorage } from '../types';
import { EventEmitter } from './EventEmitter';
/**
 * Memory manager settings
 */
export interface MemoryOptions {
    /** Enable summarization */
    enableSummarization: boolean;
    /** Short-term memory duration (milliseconds) */
    shortTermDuration: number;
    /** Mid-term memory duration (milliseconds) */
    midTermDuration: number;
    /** Long-term memory duration (milliseconds) */
    longTermDuration: number;
    /** Threshold for the number of messages before summarization */
    maxMessagesBeforeSummarization: number;
    /** Maximum number of characters in summary */
    maxSummaryLength?: number;
    /** Memory retention period (milliseconds) */
    memoryRetentionPeriod?: number;
    /** Custom summary prompt template */
    summaryPromptTemplate?: string;
}
/**
 * Summarizer interface
 */
export interface Summarizer {
    /**
     * Summarize message array
     * @param messages Array of messages to summarize
     * @param maxLength Maximum number of characters
     * @param customPrompt Custom prompt template for summarization (optional)
     */
    summarize(messages: Message[], maxLength?: number, customPrompt?: string): Promise<string>;
}
/**
 * Manager for managing chat history and summarization
 */
export declare class MemoryManager extends EventEmitter {
    private options;
    private summarizer?;
    private memories;
    private storage?;
    /**
     * Constructor
     * @param options Settings options
     * @param summarizer Summarizer implementation (if omitted, summarization is disabled)
     * @param storage Storage implementation for persistence (optional)
     */
    constructor(options: MemoryOptions, summarizer?: Summarizer, storage?: MemoryStorage);
    /**
     * Load memories from storage
     */
    private loadFromStorage;
    /**
     * Save memories to storage
     */
    private saveToStorage;
    /**
     * Import memory records (used for restoring from external storage)
     * @param records Memory records to import
     */
    importMemoryRecords(records: MemoryRecord[]): void;
    /**
     * Summarize chat log and save as memory
     * @param chatLog Chat log
     * @param chatStartTime Chat start time
     */
    createMemoryIfNeeded(chatLog: Message[], chatStartTime: number): Promise<void>;
    /**
     * Create memory of specified type
     * @param type Memory type
     * @param chatLog Chat log
     * @param timestamp Timestamp
     */
    private createMemory;
    /**
     * Get all memories
     */
    getAllMemories(): MemoryRecord[];
    /**
     * Get memory of specified type
     * @param type Memory type
     */
    getMemoryByType(type: MemoryType): MemoryRecord | undefined;
    /**
     * Generate memory text for AI prompt
     */
    getMemoryForPrompt(): string;
    /**
     * Clean up old memories
     */
    cleanupOldMemories(): Promise<void>;
    /**
     * Clear all memories
     */
    clearAllMemories(): Promise<void>;
}
