import { AgoraRteScene } from 'agora-rte-sdk';
import { EduStoreBase } from '../base';
import { EduUserStruct } from './struct';
import { FetchUserParam } from './type';
/**
 * `UserStore` 类用于管理用户。
 */
/** @en
 * The `UserStore` class is used for managing users.
 */
export declare class UserStore extends EduStoreBase {
    private _disposers;
    private _dataStore;
    /**
     * @internal
     *
     * 主房间数据信息
     **/
    /** @en
     * @internal
     *
     * Main room datastore
     */
    get mainRoomDataStore(): DataStore;
    /**
     * @internal
     *
     * 分组房间数据信息
     **/
    /** @en
     * @internal
     *
     * Sub room datastore
     */
    get subRoomDataStore(): DataStore;
    /**
     * 本地用户
     **/
    /** @en
     * Local user
     */
    get localUser(): EduUserStruct | undefined;
    /**
     * 房间内所有用户
     **/
    /** @en
     * All users in the room
     */
    get users(): Map<string, EduUserStruct>;
    /**
     * 房间内用户数
     */
    /** @en
     * Number of users in the room
     */
    get userCount(): number;
    /**
     * 老师列表
     **/
    /** @en
     * Teacher list
     */
    get teacherList(): Map<string, EduUserStruct>;
    /**
     * 学生列表
     **/
    /** @en
     * Student list
     */
    get studentList(): Map<string, EduUserStruct>;
    /**
     * 助教列表
     **/
    /** @en
     * Assistant list
     */
    get assistantList(): Map<string, EduUserStruct>;
    /**
     * 奖励信息字典
     * key: 用户UUID
     * value: 用户获得的奖励数
     **/
    /** @en
     * Rewards info map
     * key: User UUID
     * value: The number of rewards the user gets
     */
    get rewards(): Map<string, number>;
    /**
     * 获取用户列表
     * @param params 查询条件
     * @returns 用户列表
     *
     **/
    /** @en
     * Gets the user list
     * @param params Search conditions
     * @returns User list
     */
    fetchUserList(params: FetchUserParam): Promise<{
        total: any;
        count: any;
        nextId: any;
        list: any;
    }>;
    /**
     * 将用户踢出房间
     * @param userUuid 用户 ID
     * @param isBan 是否永久封禁该用户
     *
     **/
    /** @en
     * Kicks a user out of the room
     * @param userUuid The user ID
     * @param isBan Whether to ban the user
     */
    kickOutOnceOrBan(userUuid: string, isBan: boolean): Promise<undefined>;
    private _setEventHandler;
    /**
     * 更新用户自定属性
     * @param users 要更新的用户属性信息
     * @param fromScene 要更新的用户所在的房间对象，不传默认为当前房间
     */
    /** @en
     * Updates users properties
     * @param users Information about the user properties to be updated
     * @param fromScene The room object in which the user resides. If not passed, defaults to the current room
     */
    updateUserProperties(users: {
        userUuid: string;
        properties: any;
        cause?: any;
    }[], fromScene?: AgoraRteScene): Promise<void>;
    /**
     * @internal
     */
    /** @en
     * @internal
     */
    onInstall(): void;
    /**
     * @internal
     */
    /** @en
     * @internal
     */
    onDestroy(): void;
}
declare type DataStore = {
    users: Map<string, EduUserStruct>;
    teacherList: Map<string, EduUserStruct>;
    studentList: Map<string, EduUserStruct>;
    assistantList: Map<string, EduUserStruct>;
    rewards: Map<string, number>;
    userCount: number;
};
export {};
