UNPKG

@river-build/sdk

Version:

For more details, visit the following resources:

334 lines 16.6 kB
import { SpaceReviewEventObject } from '@river-build/web3'; import { PlainMessage, ChannelMessage_Post_Mention, ChannelMessage, ChannelMessage_Post, ChannelMessage_Post_Content_Text, ChannelMessage_Post_Content_Image, ChannelMessage_Post_Content_GM, ChannelMessage_Reaction, ChannelMessage_Redaction, StreamEvent, EncryptedData, StreamSettings, SpacePayload_ChannelSettings, FullyReadMarker, Envelope, ChannelMessage_Post_Attachment, AddEventResponse_Error, ChunkedMedia, UserBio, Tags, BlockchainTransaction, MiniblockHeader, CreationCookie, BlockchainTransaction_TokenTransfer } from '@river-build/proto'; import { CryptoStore, DecryptionEvents, EntitlementsDelegate, GroupEncryptionAlgorithmId, GroupEncryptionCrypto, GroupEncryptionSession, IGroupEncryptionClient, UserDevice, UserDeviceCollection, type EncryptionDeviceInitOpts } from '@river-build/encryption'; import { StreamRpcClient } from './makeStreamRpcClient'; import TypedEmitter from 'typed-emitter'; import { UnpackEnvelopeOpts } from './sign'; import { StreamEvents } from './streamEvents'; import { StreamStateView } from './streamStateView'; import { StreamTimelineEvent, ParsedMiniblock, ClientInitStatus, ContractReceipt, SolanaTransactionReceipt } from './types'; import { Stream } from './stream'; import { LoadedStream } from './persistenceStore'; import { SyncedStreams } from './syncedStreams'; import { SyncedStream } from './syncedStream'; import { SignerContext } from './signerContext'; import { TipEventObject } from '@river-build/generated/dev/typings/ITipping'; export type ClientEvents = StreamEvents & DecryptionEvents; export type ClientOptions = { persistenceStoreName?: string; logNamespaceFilter?: string; highPriorityStreamIds?: string[]; unpackEnvelopeOpts?: UnpackEnvelopeOpts; defaultGroupEncryptionAlgorithm?: GroupEncryptionAlgorithmId; logId?: string; streamOpts?: { useModifySync?: boolean; }; }; type SendChannelMessageOptions = { beforeSendEventHook?: Promise<void>; onLocalEventAppended?: (localId: string) => void; disableTags?: boolean; }; type SendBlockchainTransactionOptions = { disableTags?: boolean; }; declare const Client_base: new () => TypedEmitter<ClientEvents>; export declare class Client extends Client_base implements IGroupEncryptionClient { opts?: ClientOptions | undefined; readonly signerContext: SignerContext; readonly rpcClient: StreamRpcClient; readonly userId: string; readonly streams: SyncedStreams; userStreamId?: string; userSettingsStreamId?: string; userMetadataStreamId?: string; userInboxStreamId?: string; private readonly logCall; private readonly logSync; private readonly logEmitFromStream; private readonly logEmitFromClient; private readonly logEvent; private readonly logError; private readonly logInfo; private readonly logDebug; cryptoBackend?: GroupEncryptionCrypto; cryptoStore: CryptoStore; private getStreamRequests; private getStreamExRequests; private initStreamRequests; private getScrollbackRequests; private creatingStreamIds; private entitlementsDelegate; private decryptionExtensions?; private syncedStreamsExtensions?; private persistenceStore; private defaultGroupEncryptionAlgorithm; private logId; constructor(signerContext: SignerContext, rpcClient: StreamRpcClient, cryptoStore: CryptoStore, entitlementsDelegate: EntitlementsDelegate, opts?: ClientOptions | undefined); get streamSyncActive(): boolean; get clientInitStatus(): ClientInitStatus; get cryptoInitialized(): boolean; stop(): Promise<void>; stream(streamId: string | Uint8Array): SyncedStream | undefined; createSyncedStream(streamId: string | Uint8Array): SyncedStream; private initUserJoinedStreams; initializeUser(opts?: { spaceId?: Uint8Array | string; encryptionDeviceInit?: EncryptionDeviceInitOpts; }): Promise<{ initCryptoTime: number; initUserStreamTime: number; initUserInboxStreamTime: number; initUserMetadataStreamTime: number; initUserSettingsStreamTime: number; }>; onNetworkStatusChanged(isOnline: boolean): void; private initUserStream; private initUserInboxStream; private initUserMetadataStream; private initUserSettingsStream; private getUserStream; private createUserStream; private createUserMetadataStream; private createUserInboxStream; private createUserSettingsStream; private createStreamAndSync; createSpace(spaceAddressOrId: string): Promise<{ streamId: string; }>; createChannel(spaceId: string | Uint8Array, channelName: string, channelTopic: string, inChannelId: string | Uint8Array, streamSettings?: PlainMessage<StreamSettings>, channelSettings?: PlainMessage<SpacePayload_ChannelSettings>): Promise<{ streamId: string; }>; createDMChannel(userId: string, streamSettings?: PlainMessage<StreamSettings>): Promise<{ streamId: string; }>; createGDMChannel(userIds: string[], channelProperties?: EncryptedData, streamSettings?: PlainMessage<StreamSettings>): Promise<{ streamId: string; }>; createMediaStream(channelId: string | Uint8Array | undefined, spaceId: string | Uint8Array | undefined, userId: string | undefined, chunkCount: number, streamSettings?: PlainMessage<StreamSettings>, perChunkEncryption?: boolean): Promise<{ creationCookie: CreationCookie; }>; updateChannel(spaceId: string | Uint8Array, channelId: string | Uint8Array, unused1: string, unused2: string): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; updateChannelAutojoin(spaceId: string | Uint8Array, channelId: string | Uint8Array, autojoin: boolean): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; updateChannelHideUserJoinLeaveEvents(spaceId: string | Uint8Array, channelId: string | Uint8Array, hideUserJoinLeaveEvents: boolean): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; updateGDMChannelProperties(streamId: string, channelName: string, channelTopic: string): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; setStreamEncryptionAlgorithm(streamId: string, encryptionAlgorithm?: string): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; sendFullyReadMarkers(channelId: string | Uint8Array, fullyReadMarkers: Record<string, FullyReadMarker>): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; updateUserBlock(userId: string, isBlocked: boolean): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; setSpaceImage(spaceStreamId: string, chunkedMediaInfo: PlainMessage<ChunkedMedia>): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; setUserProfileImage(chunkedMediaInfo: PlainMessage<ChunkedMedia>): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; getUserProfileImage(userId: string | Uint8Array): Promise<ChunkedMedia | undefined>; setUserBio(bio: PlainMessage<UserBio>): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; getUserBio(userId: string | Uint8Array): Promise<UserBio | undefined>; setDisplayName(streamId: string, displayName: string): Promise<void>; setUsername(streamId: string, username: string): Promise<void>; setEnsAddress(streamId: string, walletAddress: string | Uint8Array): Promise<void>; setNft(streamId: string, tokenId: string, chainId: number, contractAddress: string): Promise<void>; pin(streamId: string, eventId: string): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; unpin(streamId: string, eventId: string): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; isUsernameAvailable(streamId: string, username: string): boolean; waitForStream(inStreamId: string | Uint8Array, opts?: { timeoutMs?: number; logId?: string; }): Promise<Stream>; getStream(streamId: string): Promise<StreamStateView>; private _getStream; private streamViewFromUnpackedResponse; getStreamEx(streamId: string): Promise<StreamStateView>; private _getStreamEx; initStream(streamId: string | Uint8Array, allowGetStream?: boolean, persistedData?: LoadedStream): Promise<Stream>; private _initStream; private onJoinedStream; private onInvitedToStream; private onLeftStream; private onStreamInitialized; startSync(): void; stopSync(): Promise<void>; emit<E extends keyof ClientEvents>(event: E, ...args: Parameters<ClientEvents[E]>): boolean; sendMessage(streamId: string, body: string, mentions?: PlainMessage<ChannelMessage_Post_Mention>[], attachments?: PlainMessage<ChannelMessage_Post_Attachment>[]): Promise<{ eventId: string; }>; sendChannelMessage(streamId: string, inPayload: PlainMessage<ChannelMessage>, opts?: SendChannelMessageOptions): Promise<{ eventId: string; }>; private makeAndSendChannelMessageEvent; sendChannelMessage_Text(streamId: string, payload: Omit<PlainMessage<ChannelMessage_Post>, 'content'> & { content: PlainMessage<ChannelMessage_Post_Content_Text>; }, opts?: SendChannelMessageOptions): Promise<{ eventId: string; }>; sendChannelMessage_Image(streamId: string, payload: Omit<PlainMessage<ChannelMessage_Post>, 'content'> & { content: PlainMessage<ChannelMessage_Post_Content_Image>; }, opts?: SendChannelMessageOptions): Promise<{ eventId: string; }>; sendChannelMessage_GM(streamId: string, payload: Omit<PlainMessage<ChannelMessage_Post>, 'content'> & { content: PlainMessage<ChannelMessage_Post_Content_GM>; }, opts?: SendChannelMessageOptions): Promise<{ eventId: string; }>; sendMediaPayload(creationCookie: CreationCookie, last: boolean, data: Uint8Array, chunkIndex: number, iv?: Uint8Array): Promise<{ creationCookie: CreationCookie; }>; getMediaPayload(streamId: string, secretKey: Uint8Array, iv: Uint8Array): Promise<Uint8Array | undefined>; sendChannelMessage_Reaction(streamId: string, payload: PlainMessage<ChannelMessage_Reaction>, opts?: SendChannelMessageOptions): Promise<{ eventId: string; }>; sendChannelMessage_Redaction(streamId: string, payload: PlainMessage<ChannelMessage_Redaction>): Promise<{ eventId: string; }>; sendChannelMessage_Edit(streamId: string, refEventId: string, newPost: PlainMessage<ChannelMessage_Post>): Promise<{ eventId: string; }>; sendChannelMessage_Edit_Text(streamId: string, refEventId: string, payload: Omit<PlainMessage<ChannelMessage_Post>, 'content'> & { content: PlainMessage<ChannelMessage_Post_Content_Text>; }): Promise<{ eventId: string; }>; redactMessage(streamId: string, eventId: string): Promise<{ eventId: string; }>; retrySendMessage(streamId: string, localId: string): Promise<void>; inviteUser(streamId: string | Uint8Array, userId: string): Promise<{ eventId: string; }>; joinUser(streamId: string | Uint8Array, userId: string): Promise<{ eventId: string; }>; joinStream(streamId: string | Uint8Array, opts?: { skipWaitForMiniblockConfirmation?: boolean; skipWaitForUserStreamUpdate?: boolean; }): Promise<Stream>; leaveStream(streamId: string | Uint8Array): Promise<{ eventId: string; }>; removeUser(streamId: string | Uint8Array, userId: string): Promise<{ eventId: string; }>; addTransaction(chainId: number, receipt: ContractReceipt | SolanaTransactionReceipt, content?: PlainMessage<BlockchainTransaction>['content'], tags?: PlainMessage<Tags>): Promise<{ eventId: string; }>; addTransaction_Tip(chainId: number, receipt: ContractReceipt, event: TipEventObject, toUserId: string, opts?: SendBlockchainTransactionOptions): Promise<{ eventId: string; }>; addTransaction_Transfer(chainId: number, receipt: ContractReceipt | SolanaTransactionReceipt, event: PlainMessage<BlockchainTransaction_TokenTransfer>, opts?: SendBlockchainTransactionOptions): Promise<{ eventId: string; }>; addTransaction_SpaceReview(chainId: number, receipt: ContractReceipt, event: SpaceReviewEventObject, spaceId: string): Promise<{ eventId: string; }>; getMiniblocks(streamId: string | Uint8Array, fromInclusive: bigint, toExclusive: bigint): Promise<{ miniblocks: ParsedMiniblock[]; terminus: boolean; }>; getMiniblockHeader(streamId: string, miniblockNum: bigint, unpackOpts?: UnpackEnvelopeOpts | undefined): Promise<MiniblockHeader>; scrollback(streamId: string): Promise<{ terminus: boolean; firstEvent?: StreamTimelineEvent; }>; /** * Get the list of active devices for all users in the room * * * @returns Promise which resolves to `null`, or an array whose * first element is a {@link DeviceInfoMap} indicating * the devices that messages should be encrypted to, and whose second * element is a map from userId to deviceId to data indicating the devices * that are in the room but that have been blocked. */ getDevicesInStream(stream_id: string): Promise<UserDeviceCollection>; getMiniblockInfo(streamId: string): Promise<{ miniblockNum: bigint; miniblockHash: Uint8Array; }>; downloadNewInboxMessages(): Promise<void>; downloadUserDeviceInfo(userIds: string[]): Promise<UserDeviceCollection>; knownDevicesForUserId(userId: string): Promise<UserDevice[]>; makeEventAndAddToStream(streamId: string | Uint8Array, payload: PlainMessage<StreamEvent>['payload'], options?: { method?: string; localId?: string; cleartext?: Uint8Array; optional?: boolean; tags?: PlainMessage<Tags>; }): Promise<{ eventId: string; error?: AddEventResponse_Error; }>; makeEventWithHashAndAddToStream(streamId: string | Uint8Array, payload: PlainMessage<StreamEvent>['payload'], prevMiniblockHash: Uint8Array, optional?: boolean, localId?: string, cleartext?: Uint8Array, tags?: PlainMessage<Tags>, retryCount?: number): Promise<{ prevMiniblockHash: Uint8Array; eventId: string; error?: AddEventResponse_Error; }>; makeMediaEventWithHashAndAddToMediaStream(creationCookie: CreationCookie, last: boolean, payload: PlainMessage<StreamEvent>['payload']): Promise<{ creationCookie: CreationCookie; }>; getStreamLastMiniblockHash(streamId: string | Uint8Array): Promise<Uint8Array>; private initCrypto; /** * Resets crypto backend and creates a new encryption account, uploading device keys to UserDeviceKey stream. */ resetCrypto(): Promise<void>; uploadDeviceKeys(): Promise<{ eventId: string; error?: AddEventResponse_Error | undefined; }>; ackInboxStream(): Promise<void>; setHighPriorityStreams(streamIds: string[]): void; ensureOutboundSession(streamId: string, opts: { awaitInitialShareSession: boolean; }): Promise<void>; /** * decrypts and updates the decrypted event */ decryptGroupEvent(streamId: string, eventId: string, kind: string, // kind of data encryptedData: EncryptedData): Promise<void>; private cleartextForGroupEvent; encryptAndShareGroupSessions(inStreamId: string | Uint8Array, sessions: GroupEncryptionSession[], toDevices: UserDeviceCollection, algorithm: GroupEncryptionAlgorithmId): Promise<void>; encryptGroupEvent(event: Uint8Array, streamId: string, algorithm: GroupEncryptionAlgorithmId): Promise<EncryptedData>; encryptWithDeviceKeys(payloadClearText: string, deviceKeys: UserDevice[]): Promise<Record<string, string>>; userDeviceKey(): UserDevice; debugForceMakeMiniblock(streamId: string, opts?: { forceSnapshot?: boolean; }): Promise<void>; debugForceAddEvent(streamId: string, event: Envelope): Promise<void>; debugDropStream(syncId: string, streamId: string): Promise<void>; } export {}; //# sourceMappingURL=client.d.ts.map