import { AgoraMediaControl, AgoraRteScene, AgoraStream, AGRtcChannel, AGRtcConnectionType, Logger } from 'agora-rte-sdk';
import { IReactionDisposer } from 'mobx';
import { Getters } from '../getters';
import { RemoteStreamMuteStatus } from './type';
export declare abstract class SceneSubscription {
    protected scene: AgoraRteScene;
    protected getters: Getters;
    logger: Logger;
    protected _disposers: IReactionDisposer[];
    protected _active: boolean;
    protected _rtcChannel: AGRtcChannel;
    protected _mediaControl: AgoraMediaControl;
    protected _muteRegistry: Map<string, {
        muteVideo: boolean;
        muteAudio: boolean;
    }>;
    get active(): boolean;
    get subscribeAll(): boolean;
    constructor(scene: AgoraRteScene, getters: Getters);
    protected abstract handleLocalStreamAdded(streams: AgoraStream[]): void;
    protected abstract handleLocalStreamUpdated(streams: AgoraStream[]): void;
    protected abstract handleLocalStreamRemoved(streams: AgoraStream[]): void;
    protected abstract handleRemoteStreamAdded(streams: AgoraStream[]): void;
    protected abstract handleRemoteStreamUpdated(streams: AgoraStream[]): void;
    protected abstract handleRemoteStreamRemoved(streams: AgoraStream[]): void;
    setActive(active: boolean): void;
    destroy(): void;
    printStat(): void;
    private _handleUserRemoved;
    protected putRegistry(streamUuid: string, { muteVideo, muteAudio }: {
        muteVideo?: boolean;
        muteAudio?: boolean;
    }): void;
    protected removeRegistry(streamUuid: string): void;
    protected isMuted(stream: AgoraStream): {
        muteVideo: boolean;
        muteAudio: boolean;
    };
    protected muteRemoteStream(scene: AgoraRteScene, stream: AgoraStream, muteStatus: RemoteStreamMuteStatus): RemoteStreamMuteStatus;
    protected getStreamConnType(stream: AgoraStream): AGRtcConnectionType;
    protected muteLocalStream(scene: AgoraRteScene, stream: AgoraStream): void;
    protected muteRemoteStreams(scene: AgoraRteScene, streams: AgoraStream[]): void;
}
