import { SnapshotCaseType } from '@towns-protocol/proto';
import { Stream } from '../../stream';
import { MessageReactions, MessageTips, ThreadStatsData, type TimelineEvent } from '../../views/models/timelineTypes';
import type { RiverConnection } from '../river-connection/riverConnection';
import { Observable } from '../../observable/observable';
import { TimelinesMap } from '../../views/streams/timelinesModel';
export declare class MessageTimeline {
    private streamId;
    private userId;
    private riverConnection;
    events: Observable<TimelineEvent[]>;
    threads: Observable<TimelinesMap>;
    threadsStats: Observable<Record<string, ThreadStatsData>>;
    reactions: Observable<Record<string, MessageReactions>>;
    tips: Observable<Record<string, MessageTips>>;
    unsubFn: (() => void) | undefined;
    filterFn: (event: TimelineEvent, kind: SnapshotCaseType) => boolean;
    constructor(streamId: string, userId: string, riverConnection: RiverConnection);
    initialize(stream: Stream): void;
    scrollback(): Promise<{
        terminus: boolean;
        fromInclusiveMiniblockNum: bigint;
    }>;
    private reset;
}
//# sourceMappingURL=timeline.d.ts.map