import { AgoraObservable } from '../../imports'; import { AgoraRtmClient } from '../rtm'; import { AgoraRtmChannelClient } from '../rtm/channel'; import { AgoraRteMediaStreamInfo, AgoraRteUserInfo } from '../scene/type'; import { AgoraRteServiceApi } from '../services/api'; import { AgoraRteMediaStream, AgoraRteSyncSnapshotData, AgoraRteUser } from './struct'; import { AgoraRteExDataSyncTypeInfo, AgoraRteMessageHandlerObserver, AgoraRteSequenceMessage, AgoraRteSequenceMessageInUser, AgoraRteSequenceMessageOutUser, AgoraRteUserDesyncedEvent, AgoraRteUserSyncedEvent } from './type'; export declare class AgoraRteMessageHandle { protected readonly logger: import("agora-foundation/lib/logger/type").Logger; protected readonly observable: AgoraObservable void; onUserPropertyListUpdated: (changedProperties: { userUuid: string; userProperties: Record; }[], operator: AgoraRteUserInfo, cause: { cmd: number; }) => void; onRoomPropertyUpdated: (changeProperties: Record, changedKeys: string[], operator: AgoraRteUserInfo, cause: { cmd: number; }) => void; onRoomPropertyDeleted: (changedKeys: string[], operator: AgoraRteUserInfo, cause: { cmd: number; }) => void; onRemoteUsersAdded: (users: AgoraRteSequenceMessageInUser[]) => void; onUserUpdated: (user: AgoraRteUserInfo, operator?: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onRemoteUsersRemoved: (removedUsers: AgoraRteSequenceMessageOutUser[], removedStreamsData: AgoraRteMediaStreamInfo[]) => void; onLocalUserRemoved: (user: AgoraRteSequenceMessageOutUser) => void; onLocalUserAdded: (user: AgoraRteSequenceMessageInUser, addedStreamsData: AgoraRteMediaStreamInfo[], removedStreamsData: AgoraRteMediaStreamInfo[], updatedStreamsData: AgoraRteMediaStreamInfo[]) => void; onUserSubscribe: (changedUsers: AgoraRteUserInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onUserCountUpdated: (total: number) => void; onUserPropertyUpdated: (userUuid: string, userProperties: Record, operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onUserPropertyDeleted: (userUuid: string, changedKeys: string[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onLocalStreamAdded: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onLocalStreamUpdated: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onLocalStreamRemoved: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onRemoteStreamAdded: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onRemoteStreamUpdated: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onRemoteStreamRemoved: (streams: AgoraRteMediaStreamInfo[], operator: AgoraRteUserInfo, cause?: import("./type").AgoraRteOperatCause) => void; onTimeStampGapUpdate: (gap: number) => void; onCustomChannelMessageRecieved: (message: import("../../type").AgoraRteMessage) => void; onPublishStreamLayerChanged(sceneId: string, events: import("./type").AgoraRteMessageHandlerStreamLayerEvent[]): void; onLocalExDataSyncTypeAdded(sceneId: string, info: AgoraRteExDataSyncTypeInfo): void; onLocalExDataSyncTypeRemoved(sceneId: string, info: AgoraRteExDataSyncTypeInfo): void; onRemoteUsersSynced(sceneId: string, events: AgoraRteUserSyncedEvent[], addedStreams: AgoraRteMediaStreamInfo[]): void; onRemoteUsersDesynced(sceneId: string, events: AgoraRteUserDesyncedEvent[], removedStreams: AgoraRteMediaStreamInfo[]): void; onUserCountUpdatedByRole(sceneId: string, userRole: string, count: number): void; }>>; private _dataStore; private _timestampGap; private _channelMessageSynchronizer; private _peerMessageSynchronizer; private _rtmClient; private _rtmChannelClients; private _rtmConnectionState; sceneId: string; userId?: string; constructor({ sceneId, apiService, rtmClient, userId, }: { sceneId: string; apiService: AgoraRteServiceApi; rtmClient: AgoraRtmClient; userId: string; }); setUserId(userId: string): void; private _addMessageEventListeners; private _removeMessageEventListeners; private _addConnectionEventListeners; private _removeConnectionEventListeners; private _onConnectionStateUpdated; addRtmChannelClient(channelId: string, rtmChannelClient: AgoraRtmChannelClient): void; stop(): void; start(): void; private _addRtmChannelMessageEventListeners; private _fillWithSnapshot; private _handleSequenceMessagePacket; private _onPeerMessage; private _handleSimpleMessage; private _handleBatchMessage; private _handleUserPropertyList; private _mergeProperties; private _handleRoomProperties; private _handleUserSubscribe; private _handleUserInOut; private _handleUserCountByRole; /** * 分离本地用户和远程用户 */ private _separateLocalAndRemoteUsers; /** * 处理远程用户变化 */ private _processRemoteUsers; /** * 处理本地用户变化 */ private _processLocalUsers; /** * 在用户列表中查找当前用户 */ private _findCurrentUserInList; /** * 通知远端用户变化事件 */ private _notifyRemoteUserChanges; private _handleUserInfo; private _handleUserProperty; private _handleUserProperties; private _processStreamEvent; private _handleStreamInOut; private _handleStreamsInOut; private _handleStreamLayerEvent; private _handleCustomMessage; private _syncTsGapWithServerAndLocal; setSnapshot(snapshot: AgoraRteSyncSnapshotData, channelSequence: number, peerSequence: number): void; updateWithEvent(message: AgoraRteSequenceMessage): void; getUsers(): import("immutable").Map; getStreams(): import("immutable").Map; getStreamsByUserId(userId: string): AgoraRteMediaStream[]; getRoomProperties(): Record; getRoomPropertiesDeepCloneByKeyPath(keyPath: string): unknown; getLocalExDataSyncTypeList(): AgoraRteExDataSyncTypeInfo[] | undefined; getUserListByRole(userRole: string): AgoraRteUserInfo[] | undefined; getUserCountByRole(role: string): number; findUser(userUuid: string): AgoraRteUser | undefined; findUserStreams(userId: string): AgoraRteMediaStream[]; getUserPropertiesDeepCloneByKeyPath(userId: string, keyPath: string): unknown; getPublishStreamLayersByStreamId(key: string): number; addObserver(observer: AgoraRteMessageHandlerObserver): void; removeObserver(observer: AgoraRteMessageHandlerObserver): void; private _handleStreamLayerHide; private _handleUserSyncInfo; private _shouldNotifyForSyncScope; release(): void; private _resolveSyncScopeForUser; private _resolveLayerBySyncScope; }