import { AgoraRteMediaPublishState, AgoraRteMediaSourceState, ApiBase } from 'agora-rte-sdk';
import { CloudDriveResourceInfo, ConversionOption } from '../stores/domain/common/cloud-drive/type';
import { EduSessionInfo, EduRoleTypeEnum, AgoraStreamStates } from '../type';
import { ClassState } from '../stores/domain/common/room/type';
import { BroadcastMessageRange, BroadcastMessageType, GroupDetail, PatchGroup } from '../stores/domain/common/group/type';
import { GroupState } from '../stores/domain/common/group/type';
export declare class EduApiService extends ApiBase {
    /**
     * 预检
     * @param session
     * @param handsUpLimit
     * @param stream
     * @returns
     */
    checkIn(session: Partial<EduSessionInfo>, handsUpLimit?: {
        maxAccept: number;
        maxWait: number;
        type: number;
        timeout: number;
    }, stream?: {
        videoState?: AgoraRteMediaPublishState;
        audioState?: AgoraRteMediaPublishState;
        videoSourceState?: AgoraRteMediaSourceState;
        audioSourceState?: AgoraRteMediaSourceState;
    }): Promise<any>;
    /**
     * 进入房间
     * @param session
     * @param handsUpLimit
     * @param stream
     * @returns
     */
    entry(session: Partial<EduSessionInfo>, stream?: {
        videoState?: AgoraRteMediaPublishState;
        audioState?: AgoraRteMediaPublishState;
        videoSourceState?: AgoraRteMediaSourceState;
        audioSourceState?: AgoraRteMediaSourceState;
    }): Promise<any>;
    /**
     * 获取个人资源列表
     * @param userUuid
     * @param options
     * @returns
     */
    fetchPersonalResources(userUuid: string, options: {
        nextId?: string;
        tags?: string[];
        resourceName?: string;
        limit?: number;
        pageSize?: number;
        pageNo?: number;
        converted?: number;
        orderBy?: string;
        parentResourceUuid?: string;
    }): Promise<any>;
    /**
     * 删除个人资源
     * @param resourceUuids
     * @param userUuid
     * @returns
     */
    removeMaterials(resourceUuids: string[], userUuid: string): Promise<any>;
    /**
     * 获取上传信息
     * @param param0
     * @returns
     */
    fetchFileUploadSts({ userUuid, resourceName, contentType, ext, size, conversion, }: Partial<{
        userUuid: string;
        resourceName: string;
        contentType: string;
        ext: string;
        size: number;
        conversion?: Partial<ConversionOption>;
    }>): Promise<any>;
    /**
     * 新增云盘资源
     * @param resourceUuid
     * @param userUuid
     * @param resourceInfo
     * @returns
     */
    addCloudDriveFile(resourceUuid: string, userUuid: string, resourceInfo: CloudDriveResourceInfo): Promise<any>;
    /**
     * 修改云盘资源
     * @param resourceUuid
     * @param userUuid
     * @param resourceInfo
     * @returns
     */
    updateCloudDriveFile(resourceUuid: string, userUuid: string, resourceInfo: Pick<CloudDriveResourceInfo, 'resourceName'>): Promise<any>;
    /**
     * @deprecated This API will be removed in near future.
     * 新增云盘资源
     * @param resourceUuid
     * @param userUuid
     * @param resourceInfo
     * @returns
     */
    addCloudDriveFileV3(resourceUuid: string, userUuid: string, resourceInfo: CloudDriveResourceInfo): Promise<any>;
    /**
     * 获取聊天历史记录
     * @param params
     * @returns
     */
    getHistoryChatMessage(params: {
        roomUuid: string;
        userUuid: string;
        data: {
            nextId: string;
            sort: number;
        };
    }): Promise<any>;
    /**
     * 获取聊天历史会话信息
     * @param params
     * @returns
     */
    getConversationHistoryChatMessage(params: {
        roomUuid: string;
        data: {
            nextId: string;
            sort: number;
            studentUuid: string;
        };
    }): Promise<any>;
    /**
     * 获取聊天会话列表
     * @param params
     * @returns
     */
    getConversationList(params: {
        roomUuid: string;
        data: {
            nextId: string;
        };
    }): Promise<any>;
    /**
     * 发送聊天信息
     * @param params
     * @returns
     */
    sendChat(params: {
        roomUuid: string;
        userUuid: string;
        data: {
            message: string;
            type: number;
        };
    }): Promise<any>;
    /**
     * 开启轮播
     * @param payload
     * @returns
     */
    startCarousel(payload: {
        roomUuid: string;
        range?: number;
        type?: number;
        interval?: number;
        count?: number;
    }): Promise<any>;
    /**
     * 发送聊天会话信息
     * @param params
     * @returns
     */
    sendConversationChat(params: {
        roomUuid: string;
        userUuid: string;
        data: {
            message: string;
            type: number;
        };
    }): Promise<any>;
    /**
     * 关闭轮播
     * @param payload
     * @returns
     */
    stopCarousel(payload: {
        roomUuid: string;
    }): Promise<any>;
    /**
     * 踢出房间
     * @param userUuid
     * @param isBan
     * @param roomUuid
     * @returns
     */
    kickOutOnceOrBan(userUuid: string, isBan: boolean, roomUuid: string): Promise<any>;
    /**
     * 聊天禁言
     * @param params
     * @returns
     */
    muteChat(params: {
        roomUuid: string;
        muteChat: number;
    }): Promise<any>;
    /**
     * 发送奖励
     * @param params
     * @param isBatch
     * @returns
     */
    sendRewards(params: {
        roomUuid: string;
        rewards: Array<{
            userUuid: string;
            changeReward: number;
        }>;
    }, isBatch?: boolean): Promise<any>;
    /**
     * 允许举手上台申请
     * @param params
     * @returns
     */
    allowHandsUp(params: {
        roomUuid: string;
        state: number;
        defaultAcceptRole?: 'audience' | '';
    }): Promise<any>;
    /**
     * 举手
     * @param params
     * @returns
     */
    handsUp(params: {
        roomUuid: string;
        toUserUuid: string;
        timout?: number;
        retry?: boolean;
        payload?: unknown;
    }): Promise<any>;
    /**
     * 挥手
     * @param params
     * @returns
     */
    handsWave(params: {
        roomUuid: string;
        toUserUuid: string;
        timout?: number;
        retry?: boolean;
        payload?: unknown;
    }): Promise<any>;
    /**
     * 接受举手上台请求
     * @param params
     * @returns
     */
    acceptHandsUp(params: {
        roomUuid: string;
        toUserUuid?: string;
    }): Promise<any>;
    /**
     * 取消举手
     * @param params
     * @returns
     */
    cancelHandsUp(params: {
        roomUuid: string;
        toUserUuid?: string;
    }): Promise<any>;
    /**
     * 取消挥手
     * @param params
     * @returns
     */
    cancelHandsWave(params: {
        roomUuid: string;
        toUserUuid?: string;
    }): Promise<any>;
    /**
     * 下台，停止连麦
     * @param params
     * @returns
     */
    revokeCoVideo(params: {
        roomUuid: string;
        toUserUuid?: string;
    }): Promise<any>;
    /**
     * 所有成员下台，停止连麦
     * @param params
     * @returns
     */
    revokeAllCoVideo(params: {
        roomUuid: string;
    }): Promise<any>;
    /**
     * 更新录制状态
     * @param params
     * @returns
     */
    updateRecordingState(params: {
        roomUuid: string;
        state: number;
        args?: unknown;
        backupCount?: number;
    }): Promise<any>;
    /**
     * 更新录制状态(录制中)
     * @param params
     * @returns
     */
    updateRecordingStateOngoing(params: {
        roomUuid: string;
        opts: {
            onHold: boolean;
        };
    }): Promise<any>;
    /**
     * 更新教室状态
     * @param params
     * @returns
     */
    updateClassState(params: {
        roomUuid: string;
        state: ClassState;
    }): Promise<any>;
    /**
     * 开启屏幕共享
     * @param roomId
     * @param userUuid
     * @returns
     */
    startShareScreen(roomId: string, userUuid: string, audioOptions?: Partial<AgoraStreamStates>): Promise<any>;
    /**
     * 停止屏幕共享
     * @param roomId
     * @param userUuid
     * @returns
     */
    stopShareScreen(roomId: string, userUuid: string): Promise<any>;
    /**
     * 开启屏幕共享
     * @param roomId
     * @param userUuid
     * @returns
     */
    startShareScreenStateless(roomId: string, userUuid: string): Promise<any>;
    /**
     * 停止屏幕共享
     * @param roomId
     * @param userUuid
     * @returns
     */
    stopShareScreenStateless(roomId: string, userUuid: string): Promise<any>;
    /**
     * 更新房间 widget 属性
     * @param roomUuid
     * @param widgetUuid
     * @param properties
     * @returns
     */
    updateWidgetProperties(roomUuid: string, widgetUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 删除房间 widget
     * @param roomUuid
     * @param widgetUuid
     * @returns
     */
    deleteWidget(roomUuid: string, widgetUuid: string): Promise<{
        data: any;
    }>;
    /**
     * 移除 extra 中的属性
     * @param roomUuid
     * @param widgetUuid
     * @param properties
     * @returns
     */
    removeWidgetExtraProperties(roomUuid: string, widgetUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 设置用户 widget 属性
     * @param roomUuid
     * @param widgetUuid
     * @param userUuid
     * @param properties
     * @returns
     */
    updateWidgetUserProperties(roomUuid: string, widgetUuid: string, userUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 移除用户 widget 属性
     * @param roomUuid
     * @param widgetUuid
     * @param userUuid
     * @param properties
     * @returns
     */
    removeWidgetUserProperties(roomUuid: string, widgetUuid: string, userUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 开启选择题
     * @param roomUuid
     * @param properties
     * @returns
     */
    startAnswer(roomUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 停止选择
     * @param roomUuid
     * @param popupQuizId
     * @returns
     */
    stopAnswer(roomUuid: string, popupQuizId: string): Promise<{
        data: any;
    }>;
    /**
     * 修改答题正确选项
     * @param roomUuid
     * @param popupQuizId
     * @param correctItems
     * @returns
     */
    updateAnswerCorrectItems(roomUuid: string, popupQuizId: string, correctItems: string[]): Promise<{
        data: any;
    }>;
    /**
     * 获取答题列表
     * @param roomUuid
     * @param popupQuizId
     * @param query
     * @returns
     */
    getAnswerList(roomUuid: string, popupQuizId: string, query: {
        nextId: number;
        count: number;
    }): Promise<{
        data: any;
    }>;
    /**
     * 提交答案
     * @param roomUuid
     * @param properties
     * @returns
     */
    submitAnswer(roomUuid: string, popupQuizId: string, userUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 开启投票
     * @param roomUuid
     * @param properties
     * @returns
     */
    startPolling(roomUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 投票
     * @param roomUuid
     * @param pollId 投票id
     * @param userUuid 用户ID
     * @param properties
     * @returns
     */
    submitResult(roomUuid: string, pollId: string, userUuid: string, properties: unknown): Promise<{
        data: any;
    }>;
    /**
     * 结束投票
     * @param roomUuid
     * @param pollId
     * @returns
     */
    stopPolling(roomUuid: string, pollId: string): Promise<{
        data: any;
    }>;
    /**
     * 开启倒计时
     * @param roomUuid
     * @param duration
     * @returns
     */
    startCountdownTimer(roomUuid: string, duration: number): Promise<{
        data: any;
    }>;
    /**
     * 暂停倒计时
     * @param roomUuid
     * @param countdownTimerId
     * @returns
     */
    pauseCountdownTimer(roomUuid: string, countdownTimerId: string): Promise<{
        data: any;
    }>;
    /**
     * 恢复倒计时
     * @param roomUuid
     * @param countdownTimerId
     * @returns
     */
    resumeCountdownTimer(roomUuid: string, countdownTimerId: string): Promise<{
        data: any;
    }>;
    /**
     * 结束倒计时
     * @param roomUuid
     * @param countdownTimerId
     * @returns
     */
    stopCountdownTimer(roomUuid: string, countdownTimerId: string): Promise<{
        data: any;
    }>;
    /**
     * 更新用户属性
     * @param roomUuid
     * @param properties
     * @param cause
     * @returns
     */
    updateFlexProperties(roomUuid: string, params: {
        properties?: unknown;
        increments?: unknown;
        cause?: unknown;
        throttleTime?: number;
    }): Promise<any>;
    /**
     * 上报麦克风设备状态（兼容历史版本）
     * @param payload
     * @returns
     */
    reportMicCameraStateLeagcy(payload: {
        roomUuid: string;
        userUuid: string;
        data: unknown;
    }): Promise<any>;
    /**
     * 获取房间内用户列表
     * @param roomId
     * @param params
     * @returns
     */
    fetchUserList(roomId: string, params: {
        role: EduRoleTypeEnum;
        type?: '0' | '1';
        nextId: string | number | null | undefined;
        count?: number;
        userName?: string;
    }): Promise<any>;
    /**
     * 新增组
     * @param roomUuid
     * @param data
     * @returns
     */
    addGroup(roomUuid: string, data: {
        groups: GroupDetail[];
        inProgress: boolean;
    }): Promise<any>;
    /**
     * 开启/关闭分组
     * @param roomUuid
     * @param state
     * @param data
     * @returns
     */
    updateGroupState(roomUuid: string, data: {
        groups: GroupDetail[];
        inProgress?: boolean;
        syncBoardScenes?: boolean;
    }, state?: GroupState): Promise<any>;
    /**
     * 删除分组
     * @param roomUuid
     * @param data
     * @returns
     */
    removeGroup(roomUuid: string, data: {
        removeGroupUuids: string[];
    }): Promise<any>;
    /**
     * 接受分组邀请
     * @param roomUuid
     * @param groupUuid
     */
    acceptGroupInvite(roomUuid: string, groupUuid: string, data?: {
        leaveGroupUuids: string[];
    }): Promise<any>;
    /**
     * 拒绝进入分组邀请
     * @param roomUuid
     * @param groupUuid
     * @returns
     */
    rejectGroupInvite(roomUuid: string, groupUuid: string): Promise<any>;
    /**
     * 更新分组成员
     * @param roomUuid
     * @param data  🔢 inProgress 是否邀请，true 发送邀请 false 直接加入
     * @returns
     */
    updateGroupUsers(roomUuid: string, data: {
        groups: PatchGroup[];
        inProgress: boolean;
    }): Promise<any>;
    /**
     * 发送全体消息
     * @param roomUuid
     * @param data
     * rang: 1.大房间 2.指定组 3.全体（大房间+所有组）
     * toGroupUuids: 当type=2时，传入指定小组id
     * type: 消息类型；txt:文本消息，img：图片消息，loc：位置消息，audio：语音消息，video：视频消息，file：文件消息
     * msg: 消息
     * @returns
     */
    sendNotificationMessage(roomUuid: string, data: {
        rang: number;
        toGroupUuids: string[];
        type: string;
        msg: string;
    }): Promise<any>;
    /**
     * 修改分组信息
     * @param roomUuid
     * @param data
     * @returns
     */
    updateGroupInfo(roomUuid: string, data: {
        groups: PatchGroup[];
    }): Promise<any>;
    /**
     * 发送全体消息(根据区域判断)
     * @param roomUuid
     * @param data
     * @returns
     */
    broadcastMessage(roomUuid: string, data: {
        range: BroadcastMessageRange;
        type: BroadcastMessageType;
        msg: string;
        toGroupUuids?: string[];
    }): Promise<any>;
    /**
     * 发送全体消息(AgoraChat)
     * @param roomUuid
     * @param data
     * @returns
     */
    broadcastHxChatMessage(roomUuid: string, data: {
        range: BroadcastMessageRange;
        type: BroadcastMessageType;
        msg: string;
        toGroupUuids?: string[];
    }): Promise<any>;
    /**
     * 发送全体消息(RTM)
     * @param roomUuid
     * @param data
     * @returns
     */
    broadcastRtmChatMessage(roomUuid: string, data: {
        range: BroadcastMessageRange;
        type: BroadcastMessageType;
        msg: string;
        toGroupUuids?: string[];
    }): Promise<any>;
    /**
     * 保存白板windowManager属性（课件）
     * @param roomUuid
     * @param data
     * @returns
     */
    setWindowManagerAttributes(roomUuid: string, data: unknown): Promise<any>;
    /**
     * 远程控制授权
     * @param roomUuid
     * @param userUuid
     * @returns
     */
    remoteControlTeacherAuthorization(roomUuid: string, userUuid: string): Promise<any>;
    /**
     * 获取白板windowManager属性（课件）
     * @param roomUuid
     * @returns
     */
    getWindowManagerAttributes(roomUuid: string): Promise<any>;
    /**
     * 复制房间笔迹
     * @param roomUuid
     * @param fromRoomUuid
     * @returns
     */
    copyScenes(roomUuid: string, fromRoomUuid: string): Promise<any>;
    /**
     * 远程控制取消授权
     * @param roomUuid
     * @param userUuid
     * @returns
     */
    remoteControlTeacherUnauthorization(roomUuid: string, userUuid: string): Promise<any>;
    /**
     * 远程控制-老师发起邀请
     * @param roomUuid
     * @param data
     * @returns
     */
    remoteControlTeacherInvite(roomUuid: string, data: {
        toUserUuid: string;
    }): Promise<any>;
    /**
     * 远程控制-老师结束邀请
     * @param roomUuid
     * @param toUserUuid
     * @returns
     */
    remoteControlTeacherStopInvite(roomUuid: string, toUserUuid: string): Promise<any>;
    /**
     * 远程控制-学生同意邀请
     * @param roomUuid
     * @param userUuid
     * @returns
     */
    remoteControlStudentAcceptInvite(roomUuid: string, userUuid: string): Promise<any>;
    /**
     * 远程控制-获取远程控制需要的token
     * @param roomUuid
     * @param userUuid
     * @returns
     */
    remoteControlGetTokens(roomUuid: string, userUuid: string): Promise<any>;
    /**
     * 更新视频墙开关状态和发流用户列表
     * @param roomUuid 课堂 ID
     * @param state ：视频墙开关状态
     * - 1：开启视频墙功能
     * - 0：关闭视频墙功能
     * @param data 想要控制发流权限的用户 ID 列表
     * @returns
     */
    updateExpandedScopeAndStreams(roomUuid: string, state: 1 | 0, data: {
        userUuids: string[];
    }): Promise<any>;
    /**
     * 批量更新用户属性
     * @param param0
     * @returns
     */
    updateBatchUserProperties({ roomUuid, data, }: {
        data: {
            userUuid: string;
            properties: unknown;
            cause?: unknown;
        }[];
        roomUuid: string;
    }): Promise<any>;
    /**
     * 批量删除用户属性
     * @param param0
     * @returns
     */
    deleteBatchUserProperties({ roomUuid, data, }: {
        roomUuid: string;
        data: {
            properties: string[];
            userUuid: string;
            cause?: unknown;
        }[];
    }): Promise<any>;
    /**
     * 更新用户tag属性
     * @param param0
     * @returns
     */
    updateUserTags({ key, data, roomUuid, userUuid, }: {
        key: string;
        data: unknown;
        roomUuid: string;
        userUuid: string;
    }): Promise<any>;
    /**
     * 查询房间sequences事件
     * @param param0
     * @returns
     */
    getRoomEvents({ roomUuid, userUuid, nextId, cmd, causeDataFilterKeys, causeDataFilterValues, }: {
        roomUuid: string;
        userUuid?: string;
        nextId?: number;
        cmd?: number;
        causeDataFilterKeys?: string;
        causeDataFilterValues?: string;
    }): Promise<any>;
    /**
     * 查询房间录制列表
     * @param param0
     * @returns
     */
    getRecordList({ roomUuid, nextId }: {
        roomUuid: string;
        nextId?: number;
    }): Promise<any>;
    /**
     * 获取 AgoraChat 用户登录 Token
     * @param param0
     * @returns
     */
    getAgoraChatToken({ roomUuid, userUuid }: {
        roomUuid: string;
        userUuid: string;
    }): Promise<any>;
}
