import { SignalControllerCallType } from './signalController/types'; import { NECallConfig, NECallParam, NEHangupParam, NEAudioCallPlaceholderImageConfig, NESetupConfig, NECallEvents, NECallInfo } from './neCallTypes'; import EventEmitter from 'eventemitter3'; import SignalController from './signalController'; import RTCController from './rtcController'; /** * Documentation for the Dog class. * @noInheritDoc */ declare class NECallEngine extends EventEmitter { static instance?: NECallEngine; signalController: SignalController; rtcController: RTCController; enableJoinRtcWhenCall: boolean; enableSubscribeVideoInAudioCall: boolean; enableSwitchVideoConfirm: boolean; enableSwitchAudioConfirm: boolean; private _unusualTimeout; private _unusualTimer?; private _callType; private _currentUserInfo; private _remoteUserInfo; private _remoteView?; private _connectRateData; private _nim?; private _onKickedOfflineHandler?; private _audioCallPlaceholderImageConfig?; private _audioCallPlaceholderImageElement?; private _audioCallPlaceholderCanvas?; private _audioCallPlaceholderStream?; private _audioCallPlaceholderVideoTrack?; private _audioCallPlaceholderRenderTimer?; constructor(); /** * 设置呼叫组件 * @param params 初始化参数 */ setup(params: NESetupConfig): void; /** * 发起呼叫 * @param params 呼叫参数 */ call(params: NECallParam): Promise; /** * 接收呼叫 */ accept(): Promise; /** * 拒绝呼叫,包含主叫取消,被叫拒绝(reason: 3,主叫接受到繁忙),通话中挂断。 * @param params 挂断参数 */ hangup(params?: NEHangupParam): Promise; /** * 切换呼叫类型 * @param params.callType 呼叫类型 * @param params.state 1: 邀请; 2:同意; 3:拒绝 */ switchCallType(params: { callType: SignalControllerCallType; state: number; }): Promise; /** * 设置本地视图 * @param view 视图dom */ setLocalView(view: HTMLElement): void; /** * 设置远端视图 * @param view 视图dom * @param uid 远端用户accId */ setRemoteView(view: HTMLElement): void; /** * 开关本地视频 * @param enabled true: 开启; false: 关闭 */ enableLocalVideo(enabled: boolean): Promise; /** * 开关本地视频 * @param mute true: 停止采集; false: 开始采集 */ muteLocalVideo(mute: boolean): Promise; /** * 开启或关闭麦克风静音 * @param mute true: 静音; false: 关闭静音 */ muteLocalAudio(mute: boolean): Promise; /** * 设置音频通话占位图。配置后,音频呼叫会以自定义视频流的形式发布该图片。 * 接收端是否订阅该占位视频,由 enableSubscribeVideoInAudioCall 控制。 */ setAudioCallPlaceholderImage(params: NEAudioCallPlaceholderImageConfig): Promise; /** * 初始并播放本地视频 * @param view 视图dom */ initAndPlayLocalSteam(view?: HTMLElement): Promise; /** * 设置超时时间 * @param time 超时取消,单位:秒 */ setTimeout(time: number): void; /** * 根据accId获取rtc uid * @param accId 用户 im 的 accId */ setCallConfig(params: NECallConfig): void; /** * 根据accId获取rtc uid * @param accId 用户 im 的 accId */ getUidByAccId(accId: string): string | undefined; /** * 通话中获取通话信息 */ getCallInfo(): NECallInfo | undefined; /** * 获取呼叫时的配置参数 */ getCallConfig(): NECallConfig; /** * 重连,im 重连成功后调用 */ reconnect(): void; /** * 销毁 */ destroy(): void; private _handleCallEnd; private _rtcJoin; private _syncCurrentUserInfoBySignalControllerMembers; private _bindSignalControllerHooks; private _handleRtcEvents; private _getCurrentCallId; private _getCurrentRtcCid; private _createApiEvent; private _shouldSubscribeRemoteVideo; private _shouldPublishAudioCallPlaceholderVideo; private _syncRtcRemoteVideoSubscription; private _ensureAudioCallPlaceholderVideoTrack; private _buildAudioCallPlaceholderResources; private _normalizeAudioCallPlaceholderLayout; private _loadAudioCallPlaceholderImage; private _drawAudioCallPlaceholderFrame; private _disposeAudioCallPlaceholderResources; /** * 获取呼叫组件单例 */ static getInstance(): NECallEngine; } export default NECallEngine;