import { Stream } from 'nertc-web-sdk/types/stream'; import { Client } from 'nertc-web-sdk/types/client'; import { JoinOptions, StreamOptions } from 'nertc-web-sdk/types/types'; import EventEmitter from 'eventemitter3'; import { RTCControllerEvents, RTCConfig, RTCChannelInfo } from './types'; declare class RTCController extends EventEmitter { client: Client; localStream?: Stream; remoteStreams: Stream[]; private _localStreamInitTask?; private _localView?; private _remoteViews; private _rtcConfig; private _rtcSDK; private _inTheRoom; private _remoteVideoSubscriptionEnabled; constructor({ appkey, rtcConfig, debug, remoteVideoSubscriptionEnabled, }: { appkey: string; rtcConfig?: RTCConfig; debug?: boolean; remoteVideoSubscriptionEnabled?: boolean; }); getChannelInfo(): RTCChannelInfo; initLocalStream(options: StreamOptions): Promise; leaveRTCChannel(): Promise; joinRTCChannel(options: JoinOptions): Promise; publishLocalStream(): Promise; enableLocalVideo(enabled: boolean, deviceId?: string, videoSource?: MediaStreamTrack): Promise; enableLocalAudio(enabled: boolean, deviceId?: string): Promise; muteLocalVideo(mute: boolean): Promise; muteLocalAudio(mute: boolean): Promise; playLocalStream(view?: HTMLElement): Promise; setLocalView(view: HTMLElement): void; setRemoteView(view: HTMLElement, uid: string | number): void; playRemoteStream(stream: Stream): Promise; resetState(): void; destroy(): void; setRemoteVideoSubscriptionEnabled(enabled: boolean): Promise; /** * 播放流 * @param stream * @param type * @param view */ private _startStreamPreview; /** * 新增流,如果以存在,则更新流 * @param stream */ private _addStream; /** * 更新流 * @param stream */ private _updateStream; private _getRemoteSubscribeConfig; private _refreshRemoteStreamSubscriptions; private _resubscribeRemoteStream; private _addRtcEventListener; private _isLocalStreamDestroyedError; } export default RTCController;