import MediaOption from '../enums/MediaOption'; import UserRole from '../enums/UserRole'; import { ParticipantStatus } from '../static/External'; import MediaSettings from './MediaSettings'; import { ISharedMovieInfo } from './MovieShare'; import MuteStates from './MuteStates'; import { ParticipantListMarker, ParticipantListType, ParticipantStateMapped } from './Participant'; import SignalingMessage from './SignalingMessage'; /** * Тип внешнего пользователя */ export declare enum ExternalIdType { USER = "USER", ANONYM = "ANONYM", GROUP = "GROUP" } export type ExternalUserId = string; export declare namespace ExternalIdUtils { function fromIds(ids: ExternalUserId[] | ExternalId[]): ExternalId[]; function fromId(id: ExternalUserId, type?: ExternalIdType, deviceIdx?: number): ExternalParticipantId; function fromSignalingParticipant(participant: SignalingMessage.Participant, useDecorative?: boolean): ExternalParticipantId | undefined; function fromSignaling(signalingId: SignalingMessage.ExternalId, deviceIdx?: number): ExternalParticipantId; function toSignaling(externalId: ExternalId): string; function toString(externalId: ExternalId): ExternalIdString; function fromIdToString(id: ExternalUserId, type?: ExternalIdType, deviceIdx?: number): ExternalIdString; function fromString(stringId: ExternalIdString): ExternalParticipantId; function compare(id1: ExternalParticipantId, id2: ExternalParticipantId): boolean; function getDeviceIdx(externalId: ExternalId | null): number; } export type ExternalIdString = string; /** * Идентификатор внешнего пользователя */ export interface ExternalId { /** * ID пользователя */ id: ExternalUserId; /** * Тип пользователя */ type: ExternalIdType; /** * Пользователь является наблюдателем звонка * @hidden */ observer?: boolean; /** * Индекс устройства (позволяет отличать участников, которые присоединяются к звонку под одной учётной записью с разных устройств) */ deviceIdx?: number; } /** * Идентификатор участника звонка */ export interface ExternalParticipantId extends ExternalId { /** * Индекс устройства (позволяет отличать участников, которые присоединяются к звонку под одной учётной записью с разных устройств) */ deviceIdx: number; } /** * Маркер определяющий положение участника в списке */ export type ExternalParticipantListMarker = Required; /** * Словарь сопоставляющий тип списка участников с маркером (положением участника в списке) */ export type ExternalParticipantListMarkers = Record; /** * Участник звонка */ export interface ExternalParticipant { /** * Идентификатор пользователя */ uid: ExternalParticipantId; /** * Данные стрима */ mediaSettings: MediaSettings; /** * Статус соединения */ status: ParticipantStatus; /** * Клиентское состояние */ participantState?: ParticipantStateMapped; /** * Состояние устройств пользователя установленное админом звонка */ muteStates: MuteStates; /** * Разрешения на включение устройств */ unmuteOptions: MediaOption[]; markers: ExternalParticipantListMarkers | null; movieShareInfos?: ISharedMovieInfo[]; roles: UserRole[]; } /** * Позиция в чанке */ export interface ExternalParticipantListChunk { participants: ExternalParticipant[]; countBefore: number; countAfter: number; markerFound: boolean; }