import { InternalMessageType, Message, MessageModel } from './MessageModel';
import { ObservableReactValue } from '../utils/observers/ObservableReactValue';
export type GetCurrentBranchFnType = (lastMessage: InternalMessageType) => Message[];
export declare class ThreadMessages<DM extends Message> {
    allMessages: ObservableReactValue<MessageModel<DM>[]>;
    currentMessages: ObservableReactValue<MessageModel<DM>[]>;
    internalMessageTransformer: (message: MessageModel) => InternalMessageType;
    getCurrentBranchFn?: GetCurrentBranchFnType;
    private branchMapManager;
    get allMessagesArray(): MessageModel<DM>[];
    private _lastMessage?;
    private _callbackInitiated;
    init: (enableBranches?: boolean) => void;
    changeBranchesStatus: (enableBranches: boolean) => void;
    handleChangeBranch: (message: MessageModel<DM>) => void;
    private _updateBranch;
    private _getBranchRecursive;
    private _createTree;
    private _createNewMap;
    push: (...newMessages: MessageModel<DM>[]) => void;
    get length(): number;
}
