import type { ThreadMessage } from "../../types/message.js";
import type { RunConfig } from "../../types/message.js";
import type { ThreadMessageLike } from "./thread-message-like.js";
export type ExportedMessageRepositoryItem = {
    message: ThreadMessage;
    parentId: string | null;
    runConfig?: RunConfig;
};
export type ExportedMessageRepository = {
    headId?: string | null;
    messages: Array<{
        message: ThreadMessage;
        parentId: string | null;
        runConfig?: RunConfig;
    }>;
};
export declare const ExportedMessageRepository: {
    fromArray: (messages: readonly ThreadMessageLike[]) => ExportedMessageRepository;
    fromBranchableArray: (items: readonly {
        message: ThreadMessageLike;
        parentId: string | null;
    }[], options?: {
        headId?: string | null;
    }) => ExportedMessageRepository;
};
export declare class MessageRepository {
    private messages;
    private head;
    private root;
    private updateLevels;
    private performOp;
    private _messages;
    get headId(): string | null;
    getMessages(headId?: string): readonly ThreadMessage[];
    addOrUpdateMessage(parentId: string | null, message: ThreadMessage): void;
    getMessage(messageId: string): {
        parentId: string | null;
        message: ThreadMessage;
        index: number;
    };
    appendOptimisticMessage(parentId: string | null, message: ThreadMessageLike): string;
    deleteMessage(messageId: string, replacementId?: string | null | undefined): void;
    getBranches(messageId: string): string[];
    switchToBranch(messageId: string): void;
    resetHead(messageId: string | null): void;
    clear(): void;
    export(): ExportedMessageRepository;
    import({ headId, messages }: ExportedMessageRepository): void;
}
//# sourceMappingURL=message-repository.d.ts.map