import { ReactNode } from "react";
import { MatrixEvent } from "matrix-js-sdk/src/matrix";
import MessagePanel, { WrappedEvent } from "../MessagePanel";
export declare abstract class BaseGrouper {
    readonly panel: MessagePanel;
    readonly firstEventAndShouldShow: WrappedEvent;
    readonly prevEvent: MatrixEvent | null;
    readonly lastShownEvent: MatrixEvent | undefined;
    readonly nextEvent: WrappedEvent | null;
    readonly nextEventTile?: (MatrixEvent | null) | undefined;
    static canStartGroup: (_panel: MessagePanel, _ev: WrappedEvent) => boolean;
    events: WrappedEvent[];
    ejectedEvents: WrappedEvent[];
    readMarker: ReactNode;
    constructor(panel: MessagePanel, firstEventAndShouldShow: WrappedEvent, prevEvent: MatrixEvent | null, lastShownEvent: MatrixEvent | undefined, nextEvent: WrappedEvent | null, nextEventTile?: (MatrixEvent | null) | undefined);
    abstract shouldGroup(ev: WrappedEvent): boolean;
    abstract add(ev: WrappedEvent): void;
    abstract getTiles(): ReactNode[];
    abstract getNewPrevEvent(): MatrixEvent;
}
