import { Observable } from "rxjs";
import { AgoraConfig } from "./agora-config";
import { IAudioTrack, INgxAgoraSdkNgService, IJoinChannel, IMediaTrack, IVideoTrack, IVideoJoinChannel, IAudioJoinChannel } from "./core/interfaces";
import { IRemoteUser, UserState } from "./types";
export declare class NgxAgoraSdkNgService implements INgxAgoraSdkNgService {
    private config;
    private agoraClient;
    constructor(config: AgoraConfig);
    join(channelName: string, token: string, uid?: string): IJoinChannel<IMediaTrack>;
    joinVideo(channelName: string, token: string, uid?: string): IVideoJoinChannel<IVideoTrack>;
    joinAudio(channelName: string, token: string, uid?: string): IAudioJoinChannel<IAudioTrack>;
    leave(): Promise<any>;
    getCameras(): Promise<MediaDeviceInfo[]>;
    getMicrophones(): Promise<MediaDeviceInfo[]>;
    getDevices(): Promise<MediaDeviceInfo[]>;
    onRemoteUsersStatusChange(): Observable<UserState>;
    onRemoteUserJoined(): Observable<IRemoteUser>;
    onRemoteUserLeft(): Observable<{
        user: IRemoteUser;
        reason: string;
    }>;
    onRemoteVolumeIndicator(): Observable<Array<{
        level: number;
        uid: number | string;
    }>>;
    onLocalUserJoined(): Observable<{
        track: IMediaTrack;
    }>;
    onLocalUserLeft(): Observable<{
        user: IRemoteUser;
        reason: string;
    }>;
    onLocalNetworkQualityChange(): Observable<any>;
    private _onRemoteUserStateEvent;
    private _onRemoteUserJoinedEvent;
    private _onRemoteUserLeftEvent;
    private _onRemoteVolumeIndicatorEvent;
    private _onLocalUserJoinedEvent;
    private _onLocalUserLeftEvent;
    private _onLocalNetworkQualityChangeEvent;
}
//# sourceMappingURL=ngx-agora-sdk-ng.service.d.ts.map