import CallType from '../enums/CallType'; import HangupType from '../enums/HangupType'; import { ConversationData } from '../types/Conversation'; import ConversationParams from '../types/ConversationParams'; import ConversationResponse from '../types/ConversationResponse'; import { ExternalId, ExternalParticipantId, ExternalUserId } from '../types/ExternalId'; import { CompositeUserId, OkUserId, ParticipantId } from '../types/Participant'; export type ClientStats = { vcid: ConversationData['id'] | null; [k: string]: string | number | null; }; export type ClientEvent = { timestamp: number; call_topology: 'D' | 'S'; event_type: string; vcid: ConversationData['id'] | null; [k: string]: string | number | boolean | null; }; export type LogItem = { count?: number; custom: ClientStats; data?: string[]; groups?: string[]; network?: string; operation: string; time: 0; timestamp: number; type: 1; uid: OkUserId | null; }; export default abstract class BaseApi { protected _abortSignal?: AbortSignal; /** * Устанавливает сигнал прерывания для запуска звонка, если не успели отменить до установки соединения с другим участником, то он больше ни как не будет использоваться * @param signal - Сигнал прерывания или undefined для очистки */ setAbortSignal(signal: AbortSignal | undefined): void; abstract authorize(): Promise; abstract userId(participantId: ParticipantId): Promise; abstract deviceId(): string; abstract createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, createConversationParameters?: { onlyAdminCanShareMovie?: boolean; audienceMode?: boolean; audioOnly?: boolean; waitForAdmin?: boolean; closedConversation?: boolean; }, speakerIds?: OkUserId[]): Promise; abstract startConversation(conversationId: string, ids?: OkUserId[], type?: CallType, isVideo?: boolean, payload?: string, joiningAllowed?: boolean, requireAuthToJoin?: boolean, createConversationParameters?: { onlyAdminCanShareMovie?: boolean; }, externalIds?: ExternalId[]): Promise; abstract joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise; createJoinLink(conversationId: string): Promise<{ join_link: string; }>; removeJoinLink(conversationId: string): Promise<{ success: boolean; }>; getAnonymTokenByLink(joinLink: string, username?: string): Promise; abstract joinConversationByLink(joinLink: string, isVideo?: boolean, observedIds?: ExternalUserId[], payload?: string): Promise; abstract getConversationParams(conversationId?: string): Promise; abstract getUserId(): OkUserId | null; abstract setUserId(userId: OkUserId): void; /** * method: log.externalLog */ log(items: LogItem[]): void; /** * method: vchat.clientStats */ logClientStats(items: ClientStats[]): void; /** * method: vchat.clientEvents */ logClientEvents(items: ClientEvent[]): void; abstract uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise; abstract getOkIdsByExternalIds(externalIds: ExternalId[]): Promise; abstract getParticipantIdsByExternalIds(externalIds: ExternalId[]): Promise>; abstract getExternalIdsByOkIds(uids: OkUserId[]): Promise; getCachedOkIdByExternalId(externalId: ExternalId): ParticipantId | null; cacheExternalId(compositeId: OkUserId | CompositeUserId | ParticipantId, externalId: ExternalParticipantId): void; mapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId, okId: OkUserId | CompositeUserId): void; unmapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId): void; getDecorativeIdByInitialId(okId: OkUserId | CompositeUserId | ParticipantId): OkUserId | undefined; replaceByInitialIdIdIfExists(id: OkUserId | CompositeUserId | ParticipantId): OkUserId; hangupConversation(conversationId: string, reason?: HangupType): void; sendUserFeedbackStats(conversationId: string, userResponse: number, reason?: string, groupCallUsersCount?: number): void; removeHistoryRecords(recordIds: number[]): Promise; getServerTime(): Promise; cleanup(): void; }