import SignalController from './signalController'; import { SignalControllerCallType } from './signalController/types'; import { NECallConfig, NECallParam, NEHangupParam, NESetupConfig, NECallEvents, NECallInfo } from './neCallTypes'; import RTCController from './rtcController/wx'; import EventEmitter from 'eventemitter3'; export interface MiniAppNECallEvents extends NECallEvents { onVideoMuteOrUnmute: [mute: boolean]; onStreamSubscribed: [url: string]; onStreamPublish: [url: string]; } declare class MiniAppNECallEngine extends EventEmitter { static instance?: MiniAppNECallEngine; signalController: SignalController; rtcController: RTCController; enableJoinRtcWhenCall: boolean; enableSubscribeVideoInAudioCall: boolean; enableSwitchVideoConfirm: boolean; enableSwitchAudioConfirm: boolean; private _unusualTimeout; private _unusualTimer?; private _callType; private _currentUserInfo; private _remoteUserInfo; private _callConnectedTime?; private _nim?; private _onKickedOfflineHandler?; 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 enabled true: 开启; false: 关闭 */ enableLocalVideo(enabled: boolean): Promise; /** * 开关本地音频 * @param enabled true: 开启; false: 关闭 */ enableLocalAudio(enabled: boolean): 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 _switchRTCCallType; private _handleCallEnd; private _rtcJoin; private _syncCurrentUserInfoBySignalControllerMembers; private _bindSignalControllerHooks; private _handleRtcEvents; private _handleWxEvents; private _shouldSubscribeRemoteVideo; private _syncRtcRemoteVideoSubscription; static getInstance(): MiniAppNECallEngine; } export default MiniAppNECallEngine;