import { Observable } from '../../observable/observable';
import { TimelineEvent, RiverTimelineEvent } from '../models/timelineTypes';
import { LocalTimelineEvent, StreamTimelineEvent } from '../../types';
import { TimelinesViewInterface, TimelinesViewModel } from './timelinesModel';
import { StreamChange } from '../../streamEvents';
import { DecryptedContent } from '../../encryptedContentTypes';
import { DecryptionSessionError } from '../../decryptionExtensions';
export interface TimelinesViewDelegate {
    isDMMessageEventBlocked(event: TimelineEvent): boolean;
}
export declare class TimelinesView extends Observable<TimelinesViewModel> {
    readonly userId: string;
    readonly delegate: TimelinesViewDelegate | undefined;
    readonly eventFilter: Set<RiverTimelineEvent>;
    readonly streamIds: Set<string>;
    readonly setState: TimelinesViewInterface;
    constructor(userId: string, delegate: TimelinesViewDelegate | undefined, eventFilter?: Set<RiverTimelineEvent>);
    streamInitialized(streamId: string, messages: StreamTimelineEvent[]): void;
    streamUpdated(streamId: string, change: StreamChange): void;
    streamEventDecrypted(streamId: string, eventId: string, decryptedContent: DecryptedContent): TimelineEvent | undefined;
    streamEventDecryptedContentError(streamId: string, eventId: string, error: DecryptionSessionError): void;
    streamLocalEventUpdated(streamId: string, localEventId: string, localEvent: LocalTimelineEvent): void;
    private filterFn;
}
//# sourceMappingURL=timelines.d.ts.map