import { MembershipOp, Snapshot, WrappedEncryptedData, MemberPayload_Nft } from '@river-build/proto';
import TypedEmitter from 'typed-emitter';
import { StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
import { ConfirmedTimelineEvent, ParsedEvent, RemoteTimelineEvent, StreamTimelineEvent } from './types';
import { StreamStateView_Members_Membership } from './streamStateView_Members_Membership';
import { StreamStateView_Members_Solicitations } from './streamStateView_Members_Solicitations';
import { DecryptedContent } from './encryptedContentTypes';
import { StreamStateView_MemberMetadata } from './streamStateView_MemberMetadata';
import { KeySolicitationContent } from '@river-build/encryption';
import { StreamStateView_AbstractContent } from './streamStateView_AbstractContent';
import { SpaceReviewEventObject } from '@river-build/web3';
export type StreamMember = {
    userId: string;
    userAddress: Uint8Array;
    miniblockNum?: bigint;
    eventNum?: bigint;
    solicitations: KeySolicitationContent[];
    encryptedUsername?: WrappedEncryptedData;
    encryptedDisplayName?: WrappedEncryptedData;
    ensAddress?: Uint8Array;
    nft?: MemberPayload_Nft;
};
export interface Pin {
    creatorUserId: string;
    event: StreamTimelineEvent;
}
export declare class StreamStateView_Members extends StreamStateView_AbstractContent {
    readonly streamId: string;
    readonly joined: Map<string, StreamMember>;
    readonly membership: StreamStateView_Members_Membership;
    readonly solicitHelper: StreamStateView_Members_Solicitations;
    readonly memberMetadata: StreamStateView_MemberMetadata;
    readonly pins: Pin[];
    tips: {
        [key: string]: bigint;
    };
    encryptionAlgorithm?: string;
    spaceReviews: {
        review: SpaceReviewEventObject;
        createdAtEpochMs: bigint;
        eventHashStr: string;
    }[];
    tokenTransfers: {
        address: Uint8Array;
        amount: bigint;
        isBuy: boolean;
        chainId: string;
        userId: string;
        createdAtEpochMs: bigint;
        messageId: string;
    }[];
    constructor(streamId: string);
    applySnapshot(eventId: string, event: ParsedEvent, snapshot: Snapshot, cleartexts: Record<string, Uint8Array | string> | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined): void;
    prependEvent(event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    /**
     * Places event in a pending queue, to be applied when the event is confirmed in a miniblock header
     */
    appendEvent(event: RemoteTimelineEvent, cleartext: Uint8Array | string | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    onConfirmedEvent(event: ConfirmedTimelineEvent, stateEmitter: TypedEmitter<StreamStateEvents> | undefined, _: TypedEmitter<StreamEncryptionEvents> | undefined): void;
    onDecryptedContent(eventId: string, content: DecryptedContent, stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
    isMemberJoined(userId: string): boolean;
    isMember(membership: MembershipOp, userId: string): boolean;
    participants(): Set<string>;
    joinedParticipants(): Set<string>;
    joinedOrInvitedParticipants(): Set<string>;
    private addTokenTransfer;
    private addPin;
    private removePin;
}
//# sourceMappingURL=streamStateView_Members.d.ts.map