/// <reference types="node" />
import { EduStream, EduUser } from './../../interfaces/index';
import { EventEmitter } from 'events';
import AgoraRTM from 'agora-rtm-sdk';
import { RtmLogLevel } from './constants';
export declare enum StepPhase {
    isFinished = 1
}
interface RTMWrapperInitConfig {
    logLevel: typeof RtmLogLevel[0];
    uploadLog: boolean;
    appId: string;
    channelName: string;
    uid: string;
    token: string;
}
export declare class RTMWrapper extends EventEmitter {
    readonly agoraRtm: typeof AgoraRTM;
    localUid?: string;
    logged?: boolean;
    connectionState: string;
    prevConnectionState: string;
    channels: Record<string, any>;
    _client?: ReturnType<typeof AgoraRTM.createInstance>;
    _streamList: EduStream[];
    _userList: EduUser[];
    constructor(agoraRtm: typeof AgoraRTM);
    get client(): ReturnType<typeof AgoraRTM.createInstance>;
    get sessionId(): string;
    private releaseChannels;
    private releaseClient;
    reset(): void;
    addStream(stream: EduStream): void;
    updateStream(stream: EduStream): void;
    resetDataList(): void;
    release(eventClient: any): void;
    login(config: any): Promise<void>;
    init(config: RTMWrapperInitConfig): Promise<void>;
    createObserverChannel(config: any): any[];
    private _channels;
    join(channel: any, bus: any, config: any): Promise<void>;
    private _join;
    leave(config: any): Promise<void>;
    destroyRtm(): Promise<void>;
    sendChannelMessage(channelName: string, message: any, options: any): Promise<void>;
    sendPeerMessage(peerId: string, message: any, options: any): Promise<boolean>;
}
export { RtmLogLevel } from './constants';
