import TypedEmitter from 'typed-emitter';
import { RemoteTimelineEvent } from './types';
import { Snapshot, UserMetadataPayload_Snapshot, ChunkedMedia, type EncryptedData, UserBio } from '@towns-protocol/proto';
import { StreamStateView_AbstractContent } from './streamStateView_AbstractContent';
import { UserDevice } from '@towns-protocol/encryption';
import { StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
import { UserMetadataStreamModel, UserMetadataStreamsView } from './views/streams/userMetadataStreams';
export declare class StreamStateView_UserMetadata extends StreamStateView_AbstractContent {
    private userMetadataStreamsView;
    readonly streamId: string;
    readonly streamCreatorId: string;
    private profileImage;
    encryptedProfileImage: EncryptedData | undefined;
    private bio;
    encryptedBio: EncryptedData | undefined;
    private decryptionInProgress;
    readonly deviceKeys: UserDevice[];
    get streamMetadataModel(): UserMetadataStreamModel;
    constructor(streamId: string, userMetadataStreamsView: UserMetadataStreamsView);
    applySnapshot(snapshot: Snapshot, content: UserMetadataPayload_Snapshot, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined): 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 addUserDeviceKey;
    private addProfileImage;
    private addBio;
    getProfileImage(): Promise<ChunkedMedia | undefined>;
    getBio(): Promise<UserBio | undefined>;
    private decrypt;
}
//# sourceMappingURL=streamStateView_UserMetadata.d.ts.map