/**
 * Shared type for conversation memory managers.
 * Both ConversationMemoryManager and RedisConversationMemoryManager
 * should implement this type.
 */
import type { ChatMessage, ConversationMemoryConfig, ConversationMemoryStats, SessionListItem, SessionMemory, StoreConversationTurnOptions } from "./conversation.js";
/**
 * Common type for all conversation memory manager implementations.
 * Provides a consistent API for storing, retrieving, and managing conversation history.
 */
export type IConversationMemoryManager = {
    config: ConversationMemoryConfig;
    /** Initialize the memory manager */
    initialize(): Promise<void> | void;
    /** Store a conversation turn */
    storeConversationTurn(options: StoreConversationTurnOptions): Promise<void>;
    /** Get session by ID */
    getSession(sessionId: string, userId?: string): SessionMemory | undefined | Promise<SessionMemory | undefined>;
    /** Build context messages for AI prompt injection */
    buildContextMessages(sessionId: string, userId?: string, enableSummarization?: boolean, requestId?: string): Promise<ChatMessage[]> | ChatMessage[];
    /** Clear a specific session */
    clearSession(sessionId: string, userId?: string): Promise<boolean> | boolean;
    /** Clear all sessions */
    clearAllSessions(): Promise<void> | void;
    /** Get memory statistics */
    getStats(): Promise<ConversationMemoryStats> | ConversationMemoryStats;
    /** List all sessions with metadata (optional - for session management) */
    listSessions?(userId?: string): Promise<SessionListItem[]>;
    /** List all sessions with metadata (optional - for session management) */
    listSessions?(userId?: string): Promise<SessionListItem[]>;
    /** Get raw messages array for a session (no context filtering or summarization) */
    getSessionMessages(sessionId: string, userId?: string): Promise<ChatMessage[]>;
    /** Replace the entire messages array for a session */
    setSessionMessages(sessionId: string, messages: ChatMessage[], userId?: string): Promise<void>;
    /** Close/shutdown the memory manager and release resources (e.g., Redis connections) */
    close?(): Promise<void>;
};
