/// <reference types="node" />
import { LocalUserRenderer, VideoRenderState, RemoteUserRenderer } from './renderer/index';
import { EventEmitter } from 'events';
import { IMediaService, RTCWrapperProvider, RTCProviderInitParams, PrepareScreenShareParams, StartScreenShareParams, JoinOption, MediaEncryptionConfig } 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;
    private eduManager;
    encoderConfig: any;
    rtcProvider: RTCProviderInitParams;
    constructor(rtcProvider: RTCProviderInitParams);
    setRtcRole(roleType: string): Promise<void>;
    muteLocalVideo(val: boolean, deviceId?: string): Promise<any>;
    muteLocalAudio(val: boolean, deviceId?: string): Promise<any>;
    disableLocalAudio(): void;
    disableLocalVideo(): void;
    enableLocalVideo(val: boolean): Promise<any>;
    enableLocalAudio(val: boolean): Promise<any>;
    setCameraDevice(deviceId: string): Promise<any>;
    setMicrophoneDevice(deviceId: string): Promise<any>;
    private fire;
    fireLocalVideoStateUpdated(state: VideoRenderState): void;
    fireRemoteVideoStateUpdated(state: VideoRenderState, uid: string): void;
    get isWeb(): boolean;
    get isElectron(): boolean;
    get sessionId(): string;
    private getNativeCurrentVideoDevice;
    private getNativeVideoDevices;
    private getNativeCurrentAudioDevice;
    private getNativeAudioDevices;
    getTestCameraLabel(): string;
    getTestMicrophoneLabel(): string;
    getCameraLabel(): string;
    private getNativeSpeakerLabel;
    getSpeakerLabel(): string;
    getMicrophoneLabel(): string;
    changePlaybackVolume(volume: number): void;
    muteRemoteVideo(uid: any, val: boolean): Promise<any>;
    muteRemoteAudio(uid: any, val: boolean): Promise<any>;
    get web(): AgoraWebRtcWrapper;
    get electron(): AgoraElectronRTCWrapper;
    init(): void;
    release(): void;
    prepare(): import("agora-electron-sdk/types/Api").default | import("agora-rtc-sdk-ng").IAgoraRTCClient;
    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>;
    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;
    enableMediaEncryptionConfig(enabled: boolean, config: MediaEncryptionConfig): number;
    reset(): void;
    setBeautyEffectOptions({ lighteningLevel, rednessLevel, smoothnessLevel, isBeauty, }: {
        lighteningLevel: number;
        rednessLevel: number;
        smoothnessLevel: number;
        isBeauty?: boolean;
    }): number | undefined;
}
