@towns-protocol/sdk
Version:
For more details, visit the following resources:
100 lines • 4.61 kB
TypeScript
import { MembershipOp, Snapshot, WrappedEncryptedData, MemberPayload_Nft, MemberPayload_Membership } from '@towns-protocol/proto';
import TypedEmitter from 'typed-emitter';
import { StreamEncryptionEvents, StreamStateEvents } from './streamEvents';
import { ConfirmedTimelineEvent, ParsedEvent, RemoteTimelineEvent, StreamTimelineEvent } from './types';
import { StreamStateView_Members_Solicitations } from './streamStateView_Members_Solicitations';
import { DecryptedContent } from './encryptedContentTypes';
import { StreamStateView_MemberMetadata } from './streamStateView_MemberMetadata';
import { KeySolicitationContent } from './decryptionExtensions';
import { StreamStateView_AbstractContent } from './streamStateView_AbstractContent';
import { SpaceReviewEventObject } from '@towns-protocol/web3';
import { StreamMemberIdsView } from './views/streams/streamMemberIds';
export type StreamMember = {
userId: string;
userAddress: Uint8Array;
miniblockNum?: bigint;
eventNum?: bigint;
solicitations: KeySolicitationContent[];
encryptedUsername?: WrappedEncryptedData;
encryptedDisplayName?: WrappedEncryptedData;
ensAddress?: Uint8Array;
nft?: MemberPayload_Nft;
tipsSent?: {
[key: string]: bigint;
};
tipsReceived?: {
[key: string]: bigint;
};
tipsSentCount?: {
[key: string]: bigint;
};
tipsReceivedCount?: {
[key: string]: bigint;
};
};
export interface Pin {
creatorUserId: string;
event: StreamTimelineEvent;
}
export interface MemberTokenTransfer {
address: Uint8Array;
amount: bigint;
isBuy: boolean;
chainId: string;
userId: string;
sender: Uint8Array;
createdAtEpochMs: bigint;
messageId: string;
}
export interface MemberSpaceReview {
review: SpaceReviewEventObject;
createdAtEpochMs: bigint;
eventHashStr: string;
}
export declare class StreamStateView_Members extends StreamStateView_AbstractContent {
private streamMemberIdsView;
readonly streamId: string;
readonly joined: Map<string, StreamMember>;
readonly joinedUsers: Set<string>;
readonly invitedUsers: Set<string>;
readonly leftUsers: Set<string>;
readonly pendingJoinedUsers: Set<string>;
readonly pendingInvitedUsers: Set<string>;
readonly pendingLeftUsers: Set<string>;
readonly pendingMembershipEvents: Map<string, MemberPayload_Membership>;
readonly solicitHelper: StreamStateView_Members_Solicitations;
readonly memberMetadata: StreamStateView_MemberMetadata;
readonly pins: Pin[];
tips: {
[key: string]: bigint;
};
tipsCount: {
[key: string]: bigint;
};
encryptionAlgorithm?: string;
spaceReviews: MemberSpaceReview[];
tokenTransfers: MemberTokenTransfer[];
get streamMemberIds(): string[];
constructor(streamId: string, streamMemberIdsView: StreamMemberIdsView);
applySnapshot(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>;
joinedOrPendingJoinedParticipants(): Set<string>;
joinedOrInvitedParticipants(): Set<string>;
info(userId: string): MembershipOp;
private addTokenTransfer;
private addPin;
private removePin;
applyMembershipEvent(userId: string, op: MembershipOp, type: 'pending' | 'confirmed', stateEmitter: TypedEmitter<StreamStateEvents> | undefined): void;
private emitMembershipChange;
}
//# sourceMappingURL=streamStateView_Members.d.ts.map