import { WrappedEncryptedData as WrappedEncryptedData, EncryptedData, MemberPayload_Nft } from '@river-build/proto';
import TypedEmitter from 'typed-emitter';
import { ConfirmedTimelineEvent, RemoteTimelineEvent } from './types';
import { StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
import { MemberMetadata_Usernames } from './memberMetadata_Usernames';
import { MemberMetadata_DisplayNames } from './memberMetadata_DisplayNames';
import { MemberMetadata_EnsAddresses } from './memberMetadata_EnsAddresses';
import { MemberMetadata_Nft } from './memberMetadata_Nft';
export interface Nft {
    chainId: number;
    tokenId: string;
    contractAddress: string;
}
export type UserInfo = {
    username: string;
    usernameConfirmed: boolean;
    usernameEncrypted: boolean;
    displayName: string;
    displayNameEncrypted: boolean;
    ensAddress?: string;
    nft?: Nft;
};
export declare class StreamStateView_MemberMetadata {
    readonly usernames: MemberMetadata_Usernames;
    readonly displayNames: MemberMetadata_DisplayNames;
    readonly ensAddresses: MemberMetadata_EnsAddresses;
    readonly nfts: MemberMetadata_Nft;
    constructor(streamId: string);
    applySnapshot(usernames: {
        userId: string;
        wrappedEncryptedData: WrappedEncryptedData;
    }[], displayNames: {
        userId: string;
        wrappedEncryptedData: WrappedEncryptedData;
    }[], ensAddresses: {
        userId: string;
        ensAddress: Uint8Array;
    }[], nfts: {
        userId: string;
        nft: MemberPayload_Nft;
    }[], cleartexts: Record<string, Uint8Array | string> | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined): void;
    onConfirmedEvent(confirmedEvent: ConfirmedTimelineEvent, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    prependEvent(_event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, _stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    appendDisplayName(eventId: string, data: EncryptedData, userId: string, cleartext: Uint8Array | string | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    appendUsername(eventId: string, data: EncryptedData, userId: string, cleartext: Uint8Array | string | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    appendEnsAddress(eventId: string, EnsAddress: Uint8Array, userId: string, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    appendNft(eventId: string, nft: MemberPayload_Nft, userId: string, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    onDecryptedContent(eventId: string, content: string, emitter?: TypedEmitter<StreamStateEvents>): void;
    userInfo(userId: string): UserInfo;
}
//# sourceMappingURL=streamStateView_MemberMetadata.d.ts.map