import { ChatMessage } from '../../../llms/dist/index.cjs';

declare abstract class BaseChatStore<AdditionalMessageOptions extends object = object> {
    abstract setMessages(key: string, messages: ChatMessage<AdditionalMessageOptions>[]): void;
    abstract getMessages(key: string): ChatMessage<AdditionalMessageOptions>[] | Promise<ChatMessage<AdditionalMessageOptions>[]>;
    abstract addMessage(key: string, message: ChatMessage<AdditionalMessageOptions>, idx?: number): void;
    abstract deleteMessages(key: string): void;
    abstract deleteMessage(key: string, idx: number): void;
    abstract getKeys(): IterableIterator<string> | Promise<IterableIterator<string>>;
}

declare class SimpleChatStore<AdditionalMessageOptions extends object = object> extends BaseChatStore<AdditionalMessageOptions> {
    #private;
    setMessages(key: string, messages: ChatMessage<AdditionalMessageOptions>[]): void;
    getMessages(key: string): ChatMessage<AdditionalMessageOptions>[];
    addMessage(key: string, message: ChatMessage<AdditionalMessageOptions>, idx?: number): void;
    deleteMessages(key: string): void;
    deleteMessage(key: string, idx: number): void;
    getKeys(): MapIterator<string>;
}

export { BaseChatStore, SimpleChatStore };
