import { EduClassroomManager, EduManager } from '../../../agora-rte-sdk/src';
import { EduScenarioAppStore } from '.';
import { IAgoraExtApp, RoomInfo, DeviceTypeEnum, UserInfo, AgoraEvent } from '../api/declare';
import { RoomApi } from '../services/room-api';
declare type SimpleRoomInfo = {
    roomId: string;
    roomName: string;
    roomPassword: string;
};
export declare enum ShareType {
    close = 0,
    screen = 1,
    board = 2
}
export declare enum RoomState {
    noStart = 0,
    open = 1,
    close = 2
}
declare type RoomProperties = {
    im: any;
    userPermission: {
        micAccess: boolean;
        cameraAccess: boolean;
    };
    roomInfo: SimpleRoomInfo;
    share: {
        type: ShareType;
        screen: {
            ownerInfo: UserInfo;
            streamInfo: any;
        };
    };
    board: {
        info: {
            boardId: string;
            boardToken: string;
            appIdentifier: string;
        };
        state: {
            follow: number;
            grantUsers: string[];
        };
        ownerInfo: UserInfo;
    };
    schedule: {
        state: RoomState;
    };
    record: {
        ownerInfo: UserInfo;
        state: number;
        recordId: string;
        recordingTime: number;
        startTime?: number;
        sid: string;
        resourceId: string;
    };
    processes: {
        micAccess: any;
        cameraAccess: any;
    };
    flexProps?: any;
};
export declare class RoomStore {
    roomApi: RoomApi;
    roomManager: EduClassroomManager;
    appStore: EduScenarioAppStore;
    _leavaReason: AgoraEvent;
    constructor(appStore: EduScenarioAppStore);
    get eduManager(): EduManager;
    roomProperties: RoomProperties;
    roomJoined: boolean;
    roomInfo: RoomInfo;
    isChangingUserPermission: boolean;
    get videoEncoderConfiguration(): import("./scene").SceneVideoConfiguration;
    get delay(): string;
    get userId(): string;
    get sceneStore(): import("./scene").SceneStore;
    get messageStore(): import("./message").MessageStore;
    get screenStore(): import("./screen").ScreenStore;
    get mediaStore(): import("./media").MediaStore;
    get renderStore(): import("./render").RenderStore;
    get boardStore(): import("./board").BoardStore;
    get hasCameraAccess(): boolean;
    get hasMicAccess(): boolean;
    get userStore(): import("./user").UserStore;
    get flexRoomProperties(): any;
    reset(): Promise<void>;
    pluginRoomProperties(extApp: IAgoraExtApp): any;
    /** 加入房间的主流程 */
    join(): Promise<void>;
    checkInitStatus(): void;
    checkHasHost(): void;
    checkScreenSharing(): void;
    checkWhiteBoard(): Promise<void>;
    checkRecord(): void;
    checkHasJoined({ roomId, userId }: any): boolean;
    listenRtmConnectionState(): void;
    initApiAndInfo(): Promise<void>;
    initRoomManager(): Promise<void>;
    handleLocalStreamUpdated(evt: any): Promise<void>;
    handleLocalStreamRemoved(evt: any): Promise<void>;
    handleRemoteStreamRemoved(evt: any): void;
    handleRemoteStreamUpdated(evt: any): void;
    handleRemoteUserAdded(evt: any): void;
    handleRemoteUserRemoved(evt: any): void;
    handleRoomMessage(evt: any): void;
    handleUserMessage(evt: any): void;
    handleLocalUserUpdated(evt: any): Promise<void>;
    handleLocalUserRemoved(evt: any): Promise<void>;
    handleRoomroomPropertyChange(evt: any): Promise<void>;
    setControllerData(): void;
    setRoomInfo(roomInfo: RoomInfo): void;
    leaveRoom(): Promise<void>;
    closeRoom(): Promise<void>;
    changeUserPermission(device: DeviceTypeEnum, access: boolean): Promise<void>;
    uploadRoomLog(): Promise<any>;
    updateFlexRoomProperties(properties?: any): Promise<any>;
}
export {};
