import { PeerCall } from "../PeerCall"; import { MuteSettings } from "../common"; import type { Options as PeerCallOptions, RemoteMedia } from "../PeerCall"; import type { LocalMedia } from "../LocalMedia"; import type { HomeServerApi } from "../../net/HomeServerApi"; import type { MCallBase, MGroupCallBase, SignallingMessage, CallDeviceMembership } from "../callEventTypes"; import { RoomMember } from "../../room/members/RoomMember"; import type { EncryptedMessage } from "../../e2ee/olm/Encryption"; import type { ILogItem } from "../../../logging/types"; import type { BaseObservableValue } from "../../../observable/value"; import type { Clock } from "../../../platform/web/dom/Clock"; export type MemberUpdateEmitter = (participant: Member, params?: any) => void; export type Options = Omit & { confId: string; ownUserId: string; ownDeviceId: string; sessionId: string; hsApi: HomeServerApi; encryptDeviceMessage: (userId: string, deviceId: string, message: SignallingMessage, log: ILogItem) => Promise; emitUpdate: MemberUpdateEmitter; clock: Clock; }; export declare class Member { member: RoomMember; private callDeviceMembership; private _deviceIndex; private _eventTimestamp; private options; private connection?; private expireTimeout?; private emitMemberUpdate; private errorBoundary; constructor(member: RoomMember, callDeviceMembership: CallDeviceMembership, _deviceIndex: number, _eventTimestamp: number, options: Options, updateMemberLog: ILogItem); get error(): Error | undefined; get usesFoci(): boolean; private _renewExpireTimeout; /** * Gives access the log item for this item once joined to the group call. * The signalling for this member will be log in this item. * Can be used for call diagnostics while in the call. **/ get logItem(): ILogItem | undefined; get remoteMedia(): RemoteMedia | undefined; get isExpired(): boolean; get remoteMuteSettings(): MuteSettings | undefined; get isConnected(): boolean; get userId(): string; get deviceId(): string; /** @internal, to emulate deviceKey properties when calling formatToDeviceMessagesPayload */ get user_id(): string; /** @internal, to emulate deviceKey properties when calling formatToDeviceMessagesPayload */ get device_id(): string; /** session id of the member */ get sessionId(): string; get dataChannel(): any | undefined; get deviceIndex(): number; get eventTimestamp(): number; /** @internal */ connect(localMedia: LocalMedia, localMuteSettings: MuteSettings, turnServer: BaseObservableValue, memberLogItem: ILogItem): Promise | undefined; private callIfNeeded; /** @internal */ disconnect(hangup: boolean): Promise | undefined; /** @internal */ updateCallInfo(callDeviceMembership: CallDeviceMembership, deviceIndex: number, eventTimestamp: number, causeItem: ILogItem): void; /** @internal */ updateRoomMember(roomMember: RoomMember): void; /** @internal */ emitUpdateFromPeerCall: (peerCall: PeerCall, params: any, log: ILogItem) => Promise; /** @internal */ sendSignallingMessage: (message: SignallingMessage, log: ILogItem) => Promise; /** @internal */ handleDeviceMessage(message: SignallingMessage, syncLog: ILogItem): void; private dequeueSignallingMessages; /** @internal */ setMedia(localMedia: LocalMedia, previousMedia: LocalMedia): Promise; setMuted(muteSettings: MuteSettings): Promise; private _createPeerCall; dispose(): void; } export declare function memberExpiresAt(callDeviceMembership: CallDeviceMembership): number | undefined; export declare function isMemberExpired(callDeviceMembership: CallDeviceMembership, now: number, margin?: number): boolean; export declare function tests(): { "test queue doesn't get blocked by enqueued, then ignored device message": (assert: any) => void; };