import { SnapshotCaseType } from '@river-build/proto';
import { Stream } from '../../stream';
import { TimelineEvents } from './models/timelineEvents';
import { Reactions } from './models/reactions';
import type { TimelineEvent } from './models/timeline-types';
import { PendingReplacedEvents } from './models/pendingReplacedEvents';
import { ReplacedEvents } from './models/replacedEvents';
import { ThreadStats } from './models/threadStats';
import { Threads } from './models/threads';
import type { RiverConnection } from '../river-connection/riverConnection';
export declare class MessageTimeline {
    private streamId;
    private userId;
    private riverConnection;
    events: TimelineEvents;
    replacedEvents: ReplacedEvents;
    pendingReplacedEvents: PendingReplacedEvents;
    threadsStats: ThreadStats;
    threads: Threads;
    reactions: Reactions;
    filterFn: (event: TimelineEvent, kind: SnapshotCaseType) => boolean;
    constructor(streamId: string, userId: string, riverConnection: RiverConnection);
    initialize(stream: Stream): void;
    scrollback(): Promise<{
        terminus: boolean;
        firstEvent?: TimelineEvent;
    }>;
    private reset;
    private onStreamUpdated;
    private onStreamLocalEventUpdated;
    private prependEvents;
    private prependEvent;
    private appendEvent;
    private replaceEvent;
    private appendEvents;
    private updateEvents;
    private updateEvent;
    private confirmEvents;
    private confirmEvent;
    private processEvent;
    private removeEvent;
}
//# sourceMappingURL=timeline.d.ts.map