/// <reference types="node" />
import { LocalUserRenderer, RemoteUserRenderer } from './renderer/index';
import { EventEmitter } from 'events';
import { IMediaService, RTCWrapperProvider, RTCProviderInitParams, CameraOption, MicrophoneOption, PrepareScreenShareParams, StartScreenShareParams, JoinOption } from './interfaces';
import { AgoraElectronRTCWrapper } from './electron';
import { AgoraWebRtcWrapper } from './web';
import { ILocalTrack } from 'agora-rtc-sdk-ng';
export declare class MediaService extends EventEmitter implements IMediaService {
    sdkWrapper: RTCWrapperProvider;
    cameraTestRenderer?: LocalUserRenderer;
    cameraRenderer?: LocalUserRenderer;
    microphoneTrack?: ILocalTrack;
    screenRenderer?: LocalUserRenderer;
    remoteUsersRenderer: RemoteUserRenderer[];
    screenShareIds: any[];
    readonly _id: string;
    constructor(rtcProvider: RTCProviderInitParams);
    private fire;
    get isWeb(): boolean;
    get isElectron(): boolean;
    private getNativeCurrentVideoDevice;
    private getNativeVideoDevices;
    private getNativeCurrentAudioDevice;
    private getNativeAudioDevices;
    getTestCameraLabel(): string;
    getTestMicrophoneLabel(): string;
    getCameraLabel(): string;
    private getNativeSpeakerLabel;
    getSpeakerLabel(): string;
    getMicrophoneLabel(): string;
    changePlaybackVolume(volume: number): void;
    muteLocalVideo(val: boolean): Promise<any>;
    muteLocalAudio(val: boolean): Promise<any>;
    muteRemoteVideo(uid: any, val: boolean): Promise<any>;
    muteRemoteAudio(uid: any, val: boolean): Promise<any>;
    get web(): AgoraWebRtcWrapper;
    get electron(): AgoraElectronRTCWrapper;
    init(): void;
    release(): void;
    join(option: JoinOption): Promise<any>;
    _join(option: JoinOption): Promise<any>;
    private destroyAllRenderers;
    leave(): Promise<any>;
    joinSubChannel(option: JoinOption): Promise<any>;
    leaveSubChannel(channelName: string): Promise<any>;
    publish(): Promise<any>;
    unpublish(): Promise<any>;
    openCamera(option?: CameraOption): Promise<any>;
    changeCamera(deviceId: string): Promise<any>;
    closeCamera(): Promise<void>;
    openMicrophone(option?: MicrophoneOption): Promise<any>;
    changeMicrophone(deviceId: string): Promise<any>;
    closeMicrophone(): Promise<void>;
    openTestCamera(option: CameraOption): Promise<any>;
    closeTestCamera(): void;
    changeTestCamera(deviceId: string): Promise<any>;
    changeTestResolution(config: any): Promise<void>;
    openTestMicrophone(option?: MicrophoneOption): Promise<any>;
    closeTestMicrophone(): void;
    changeTestMicrophone(id: string): Promise<any>;
    getCameras(): Promise<any>;
    getMicrophones(): Promise<any>;
    prepareScreenShare(params?: PrepareScreenShareParams): Promise<any>;
    startScreenShare(option: StartScreenShareParams): Promise<any>;
    stopScreenShare(): Promise<any>;
    changeResolution(config: any): Promise<void>;
    getPlaybackVolume(): number;
    reset(): void;
}
