import { GenerateOptions } from '../llms/base.cjs';
import { BaseMessage } from '../llms/primitives/message.cjs';
import { BaseMemory } from './base.cjs';
import { PromptTemplate } from '../template.cjs';
import { z } from 'zod';
import { ChatLLM, ChatLLMOutput } from '../llms/chat.cjs';
import '../context.cjs';
import '../emitter-BWtGHYn0.cjs';
import '../internals/types.cjs';
import '../internals/helpers/guards.cjs';
import '../internals/serializable.cjs';
import '../internals/helpers/promise.cjs';
import '../errors.cjs';
import '../cache/base.cjs';
import 'promise-based-task';
import 'ajv';

interface SummarizeMemoryInput {
    llm: ChatLLM<ChatLLMOutput>;
    template?: typeof SummarizeMemoryTemplate;
}
declare const SummarizeMemoryTemplate: PromptTemplate<z.ZodObject<{
    summary: z.ZodString;
}, "strip", z.ZodTypeAny, {
    summary: string;
}, {
    summary: string;
}>>;
declare class SummarizeMemory extends BaseMemory {
    protected summary: string;
    protected template: PromptTemplate<z.ZodObject<{
        summary: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        summary: string;
    }, {
        summary: string;
    }>>;
    protected llm: ChatLLM<ChatLLMOutput, GenerateOptions>;
    constructor(config: SummarizeMemoryInput);
    get messages(): BaseMessage[];
    delete(message: BaseMessage): Promise<boolean>;
    add(message: BaseMessage, _index?: number): Promise<void>;
    reset(): void;
    createSnapshot(): {
        summary: string;
        template: PromptTemplate<z.ZodObject<{
            summary: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            summary: string;
        }, {
            summary: string;
        }>>;
        llm: ChatLLM<ChatLLMOutput, GenerateOptions>;
        messages: BaseMessage[];
    };
    loadSnapshot(state: ReturnType<typeof this.createSnapshot>): void;
}

export { SummarizeMemory, type SummarizeMemoryInput, SummarizeMemoryTemplate };
