import { EduClassroomDataController } from './edu-classroom-data-controller';
import { EduUserService } from '../user/edu-user-service';
import { AgoraEduApi } from '../core/services/edu-api';
import { EduManager } from '../manager';
import { EduClassroomManagerEventHandlers, ListenerCallbackType } from './types';
import { EduStreamData, EduUserData, EduUser, EduStream, EduClassroom } from '../interfaces';
export declare type EduClassroomInitParams = {
    eduManager: EduManager;
    roomUuid: string;
    roomName: string;
    apiService: AgoraEduApi;
};
export declare class EduClassroomManager {
    private _roomUuid;
    private rawRoomUuid;
    private _roomName;
    private eduManager;
    private _apiService?;
    private _userService?;
    private _rtmObserver?;
    private bus;
    constructor(payload: EduClassroomInitParams);
    on<EventName extends keyof EduClassroomManagerEventHandlers>(eventName: EventName, listener: (args: ListenerCallbackType<EduClassroomManagerEventHandlers[EventName]>) => any): void;
    off<EventName extends keyof EduClassroomManagerEventHandlers>(eventName: EventName, listener: (args: ListenerCallbackType<EduClassroomManagerEventHandlers[EventName]>) => any): void;
    removeAllEventListener(): void;
    emit(eventName: string, args: any): void;
    get syncingData(): boolean;
    get roomName(): string;
    get roomUuid(): string;
    get apiService(): AgoraEduApi;
    get localUser(): EduUserData;
    get userService(): EduUserService;
    get data(): EduClassroomDataController;
    private prepareRoomJoin;
    private get rtmWrapper();
    join(params: any): Promise<import("..").JoinRoomResponseData | undefined>;
    private _join;
    leave(): Promise<void>;
    get userToken(): string;
    joinRTC(params: any): Promise<void>;
    leaveRTC(): Promise<void>;
    getLocalStreamData(): EduStreamData;
    getLocalScreenData(): EduStreamData;
    getLocalUser(): EduUserData;
    getFullUserList(): EduUser[];
    getFullStreamList(): EduStream[];
    private get classroom();
    getClassroomInfo(): EduClassroom;
    getStudentCount(): number;
    getTeacherCount(): number;
    get studentList(): EduUser[];
    get teacherList(): EduUser[];
    getTeacherList(): EduUser[];
    getStudentList(): EduUser[];
    syncStreamCoordinator(): void;
}
