import type { IAgoraRTCClient, IAgoraRTCRemoteUser } from 'agora-rtc-sdk-ng'; import { AgoraRtcVideoCanvas } from '../../../core/rtc'; import { AgoraRtcChannelClientObserver } from '../../../core/rtc/type'; import { AgoraObservable } from 'agora-foundation/lib/utilities/observable'; import { Logger } from '../../../imports'; export declare class AgoraRtcRemoteTrackControl { private _client; private _channelObservable; private _videoSubscribeMap; private _audioSubscribeMap; private _id; private _speakerDeviceId?; private _streamVolume?; protected logger: Logger; private _isProcessing; private _user?; private _videoTrack?; private _audioTrack?; private _isUserVideoPublished; private _isUserAudioPublished; private _isFirstFrameTriggered; private _defaultView; constructor(_client: IAgoraRTCClient, _channelObservable: AgoraObservable, _videoSubscribeMap: Map, _audioSubscribeMap: Map, _id: string, _speakerDeviceId?: string | undefined, _streamVolume?: number | undefined); get id(): string; setRemoteUser(user: IAgoraRTCRemoteUser | undefined): void; setVideoPublishState(published: boolean): void; setAudioPublishState(published: boolean): void; subscribe(trackType: 'video' | 'audio'): void; unsubscribe(trackType: 'video' | 'audio'): void; addVideoCanvas(canvas: AgoraRtcVideoCanvas): void; removeVideoCanvas(canvas: AgoraRtcVideoCanvas): void; takeSnapshot(): ImageData; setSpeakerDevice(deviceId: string): void; setVolume(volume: number): void; notifyAudioVolumeChange(): void; private get _isVideoSubscribed(); private get _isAudioSubscribed(); private get _isToSubscribeVideo(); private get _isToSubscribeAudio(); private set _isToSubscribeVideo(value); private set _isToSubscribeAudio(value); private _isStateStale; private _getRenderMode; private _playTrack; private _stopTrack; private _handleFirstFrame; private _triggerFirstFrameEvent; private _syncState; }