import { Member } from "./Member"; import { LocalMedia } from "../LocalMedia"; import { MuteSettings } from "../common"; import { MemberChange, RoomMember } from "../../room/members/RoomMember"; import { EventEmitter } from "../../../utils/EventEmitter"; import { CallIntent, CallType } from "../callEventTypes"; import type { Options as MemberOptions } from "./Member"; import type { TurnServerSource } from "../TurnServerSource"; import type { BaseObservableMap } from "../../../observable/map"; import type { SignallingMessage, MGroupCallBase, CallMembership } from "../callEventTypes"; import type { StateEvent } from "../../storage/types"; import type { EncryptedMessage } from "../../e2ee/olm/Encryption"; import type { ILogItem, ILogger } from "../../../logging/types"; import type { Storage } from "../../storage/idb/Storage"; export declare enum GroupCallState { Fledgling = "fledgling", Creating = "creating", Created = "created", Joining = "joining", Joined = "joined" } export type Options = Omit & { emitUpdate: (call: GroupCall, params?: any) => void; encryptDeviceMessage: (roomId: string, userId: string, deviceId: string, message: SignallingMessage, log: ILogItem) => Promise; storage: Storage; random: () => number; logger: ILogger; turnServerSource: TurnServerSource; }; export declare class GroupCall extends EventEmitter<{ change: never; }> { readonly id: string; readonly isLoadedFromStorage: boolean; private startTime; private callContent; readonly roomId: string; private readonly options; private readonly _members; private _memberOptions; private _state; private bufferedDeviceMessages; /** Set between calling join and leave. */ private joinedData?; private errorBoundary; private _deviceIndex?; private _eventTimestamp?; constructor(id: string, isLoadedFromStorage: boolean, newCall: boolean, startTime: number | undefined, callContent: Record, roomId: string, options: Options); get localMedia(): LocalMedia | undefined; get localPreviewMedia(): LocalMedia | undefined; get members(): BaseObservableMap; get isTerminated(): boolean; get usesFoci(): boolean; get duration(): number | undefined; get isRinging(): boolean; get name(): string; get intent(): CallIntent; get deviceIndex(): number | undefined; get eventTimestamp(): number | undefined; get type(): CallType; /** * Gives access the log item for this call while joined. * Can be used for call diagnostics while in the call. **/ get logItem(): ILogItem | undefined; get error(): Error | undefined; join(localMedia: LocalMedia, log?: ILogItem): Promise; setMedia(localMedia: LocalMedia): Promise; setMuted(muteSettings: MuteSettings): Promise; get muteSettings(): MuteSettings | undefined; get hasJoined(): boolean; leave(log?: ILogItem): Promise; private terminate; /** @internal */ create(type: CallType, log: ILogItem): Promise; /** @internal */ updateCallEvent(event: StateEvent, syncLog: ILogItem): void; /** @internal */ updateRoomMembers(memberChanges: Map): void; /** @internal */ updateMembership(userId: string, roomMember: RoomMember, callMembership: CallMembership, eventTimestamp: number, syncLog: ILogItem): void; /** @internal */ removeMembership(userId: string, syncLog: ILogItem): void; private flushPendingIncomingDeviceMessages; private getDeviceIdsForUserId; private isMember; private removeOwnDevice; /** @internal */ disconnect(log: ILogItem): Promise | true; /** @internal */ private removeMemberDevice; /** @internal */ handleDeviceMessage(message: SignallingMessage, userId: string, deviceId: string, syncLog: ILogItem): void; private _createMemberPayload; private connectToMember; protected emitChange(): void; private _setupRenewMembershipTimeout; dispose(): void; }