import type { IAgoraRTCClient } from 'agora-rtc-sdk-ng'; import { AgoraRtcVideoCanvas } from '../../../core/rtc'; import { AgoraRtcChannelClientObserver, AgoraRtcStreamLayer, AgoraRtcVideoStreamType } from '../../../core/rtc/type'; import { AgoraObservable } from 'agora-foundation/lib/utilities/observable'; import { AgoraRtcDeviceManager } from './device'; import { AgoraRtcChannelSubscriber } from '../../../core/rtc/subscriber'; export declare class AgoraRtcChannelSubscriberImpl implements AgoraRtcChannelSubscriber { private _client; private _deviceManager; private _channelObservable; protected logger: import("agora-foundation/lib/logger/type").Logger; /** * 记录每个视频流最近一次订阅的层(high/low 等),用于断线重连时恢复订阅 * 多次订阅将覆盖 value,unsubscribe 时直接删除对应 key,避免旧层被恢复 */ protected _videoMapping: Map; protected _audioMapping: Map; protected _isPause: boolean; private _remoteTrackControls; private _videoSubscribeStateMap; private _audioSubscribeStateMap; private _canvasMap; private _remoteUsers; private _speakerDeviceId?; private _streamVolumeMap; private _audioVolumeIntervalTask?; private _deviceManagerObserver; constructor(_client: IAgoraRTCClient, _deviceManager: AgoraRtcDeviceManager, _channelObservable: AgoraObservable); /** * Subscribes to a remote video stream. * @param streamId The ID of the stream. * @param streamLayer The layer to subscribe (low/high, later calls overwrite earlier records). * @returns The result of the operation. */ subscribeRemoteVideoStream(streamId: string, streamLayer: AgoraRtcStreamLayer): number; /** * Unsubscribes from a remote video stream. * @param streamId The ID of the stream. * @returns The result of the operation. */ unsubscribeRemoteVideoStream(streamId: string): number; /** * Subscribes to a remote audio stream. * @param streamId The ID of the stream. * @returns The result of the operation. */ subscribeRemoteAudioStream(streamId: string): number; /** * Unsubscribes from a remote audio stream. * @param streamId The ID of the stream. * @returns The result of the operation. */ unsubscribeRemoteAudioStream(streamId: string): number; /** * resubscribe all remote streams * @returns The result of the operation. */ resume(): number; pause(): number; protected _subscribeRemoteVideoStream(streamId: string, streamType: AgoraRtcVideoStreamType): number; protected _unsubscribeRemoteVideoStream(streamId: string): number; protected _subscribeRemoteAudioStream(streamId: string): number; protected _unsubscribeRemoteAudioStream(streamId: string): number; unsubscribeVideo(streamId: string): number; addVideoCanvas(streamId: string, canvas: AgoraRtcVideoCanvas): number; removeVideoCanvas(streamId: string, canvas: AgoraRtcVideoCanvas): number; takeSnapshot(streamId: string): ImageData; setRemoteAudioStreamVolume(streamId: string, volume: number): number; release(): number; enableAudioVolumeIndication(interval: number): number; private _handleUserJoined; private _handleUserPublished; private _handleUserUnpublished; private _handleUserLeft; }