import { FullyReadMarker, Snapshot, UserSettingsPayload_Snapshot, UserSettingsPayload_Snapshot_UserBlocks, UserSettingsPayload_Snapshot_UserBlocks_Block } from '@towns-protocol/proto';
import TypedEmitter from 'typed-emitter';
import { RemoteTimelineEvent } from './types';
import { StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
import { StreamStateView_AbstractContent } from './streamStateView_AbstractContent';
import { UserSettingsStreamModel, UserSettingsStreamsView } from './views/streams/userSettingsStreams';
export declare class StreamStateView_UserSettings extends StreamStateView_AbstractContent {
    private readonly userSettingsStreamsView;
    readonly streamId: string;
    get fullyReadMarkers(): Record<string, Record<string, FullyReadMarker>>;
    get userBlocks(): Record<string, UserSettingsPayload_Snapshot_UserBlocks>;
    get userSettingsStreamModel(): UserSettingsStreamModel;
    constructor(streamId: string, userSettingsStreamsView: UserSettingsStreamsView);
    applySnapshot(snapshot: Snapshot, content: UserSettingsPayload_Snapshot): void;
    prependEvent(event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, _stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    appendEvent(event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    private fullyReadMarkerUpdate;
    private userBlockUpdate;
    isUserBlocked(userId: string): boolean;
    isUserBlockedAt(userId: string, eventNum: bigint): boolean;
    getLastBlock(userId: string): UserSettingsPayload_Snapshot_UserBlocks_Block | undefined;
}
//# sourceMappingURL=streamStateView_UserSettings.d.ts.map