import type { AgentMessage, AgentSessionState } from '../types';
export interface AgentMemoryEntry {
    id: string;
    type: 'user' | 'assistant' | 'tool' | 'system';
    content: string;
    createdAt: Date;
    metadata?: Record<string, string>;
}
export interface AgentMemorySnapshot {
    entries: AgentMemoryEntry[];
    summary?: string;
    lastSummarizedAt?: Date;
}
export interface AgentSessionMemory {
    session: AgentSessionState;
    memory: AgentMemorySnapshot;
}
export interface AgentMemoryManager {
    load(sessionId: string): Promise<AgentSessionMemory | null>;
    save(snapshot: AgentSessionMemory): Promise<void>;
    append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
        createdAt?: Date;
    }): Promise<AgentSessionMemory>;
    summarize(session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
    prune(session: AgentSessionState): Promise<void>;
}
export declare abstract class BaseAgentMemoryManager implements AgentMemoryManager {
    abstract load(sessionId: string): Promise<AgentSessionMemory | null>;
    abstract save(snapshot: AgentSessionMemory): Promise<void>;
    append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
        createdAt?: Date;
    }): Promise<AgentSessionMemory>;
    summarize(_session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
    prune(_session: AgentSessionState): Promise<void>;
    protected bootstrapMemory(session: AgentSessionState): AgentSessionMemory;
}
export declare function trackMessageInMemory(manager: AgentMemoryManager | undefined, session: AgentSessionState, message: AgentMessage): void;
