import { EventEmitter } from 'eventemitter3';
import { ChatRoomIndependentEnterInfo, ChatRoomAnoymityEnterInfo, ChatRoomEnterInfo, NIMChatRoomLoginState, ChatRoomMessage, ChatRoomGetMembersParameters, GetMembersCallback, GetMembersCountByTagCallback, ChatRoomGetMsgHistoryParameters, GetMsgHistoryCallback, ChatRoomSetMemberAttributeParameters, SetMemberAttributeCallback, GetChatRoomInfoCallback, KickMemberCallback, NIMChatRoomProxyType, TempMuteMemberCallback, ChatRoomInfo, UpdateRoomInfoCallback, ChatRoomMemberInfo, UpdateMyRoomRoleCallback, ChatRoomQueueElement, ChatRoomQueueOfferOption, QueueOfferCallback, QueuePollCallback, QueueListCallback, QueueHeaderCallback, QueueDropCallback, QueueBatchUpdateCallback, NIMChatRoomLocation, UpdateLocationCallback, ChatRoomUpdateTagsInfo, UpdateTagsCallback, ChatRoomNotification, NIMChatRoomEnterStep, NIMChatRoomExitReason, NIMChatRoomLinkCondition, ChatRoomGetMsgHistoryByTagsParameters, ChatRoomConfig, ChatRoomGetMembersByTagParameters, ChatRoomBatchMembers } from '../chatroom_def/chatroom_def';
import { NIMResCode } from '../nim_def/client_def';
export declare interface ChatRoomEvents {
    /** 登录 */
    enter: [number, NIMChatRoomEnterStep, number, ChatRoomInfo, ChatRoomMemberInfo];
    /** 登出、被踢 */
    exit: [number, number, NIMChatRoomExitReason];
    /** 发送消息 */
    sendMsg: [number, number, ChatRoomMessage];
    /** 接收消息 */
    receiveMsg: [number, ChatRoomMessage];
    /** 接收批量消息 */
    receiveMsgs: [number, Array<ChatRoomMessage>];
    /** 通知 */
    notification: [number, ChatRoomNotification];
    /** 服务连接情况 */
    linkCondition: [number, NIMChatRoomLinkCondition];
}
export declare class ChatRoomModule extends EventEmitter<ChatRoomEvents> {
    chatroom: any;
    constructor();
    /**
     * 初始化事件处理
     */
    initEventHandlers(): void;
    /**
     * 聊天室模块初始化(SDK初始化时调用一次)
     * @param app_install_dir Deprecated
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    init(app_install_dir: string, json_extension: string): boolean;
    /**
     * 聊天室模块清理
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    cleanup(json_extension: string): void;
    /**
     * 独立模式进入聊天室
     * @param room_id 聊天室 ID
     * @param info 聊天室进入信息
     * @param config 聊天室配置对象，可选
     */
    independentEnter(room_id: number, info: ChatRoomIndependentEnterInfo, config: ChatRoomConfig): boolean;
    /**
     * 聊天室匿名进入
     * @param room_id 聊天室 ID
     * @param anonymity_info 匿名信息
     * @param info 聊天室进入信息
     * @param config 聊天室配置对象，可选
     */
    anonymousEnter(room_id: number, anonymity_info: ChatRoomAnoymityEnterInfo, info: ChatRoomEnterInfo, config: ChatRoomConfig): boolean;
    /**
     * 进入聊天室，需要先登录 IM
     * @param room_id 聊天室 ID
     * @param request_login_data 在登录 IM 成功后，调用 plguin::chatRoomRequestEnterAsync 接口获取
     * @param info 聊天室进入信息
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    enter(room_id: number, request_login_data: string, info: ChatRoomEnterInfo, json_extension: string): boolean;
    /**
     * 聊天室登出
     * @param room_id 聊天室 ID
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    exit(room_id: number, json_extension: string): void;
    /**
     * 获取登录状态
     * @param room_id 聊天室 ID
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getLoginState(room_id: number, json_extension: string): NIMChatRoomLoginState;
    /**
     * 设置消息批量报告
     * @param set_batch 是否开启批量报告
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    setMsgsBatchReport(set_batch: boolean, json_extension: string): void;
    /**
     * 发送消息
     * @param room_id 聊天室 ID
     * @param msg 消息
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    sendMsg(room_id: number, msg: ChatRoomMessage, json_extension: string): boolean;
    /**
     * 获取聊天室成员列表
     * @param room_id 聊天室 ID
     * @param parameters 获取成员列表参数
     * @param cb 获取成员列表回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMembersOnlineAsync(room_id: number, parameters: ChatRoomGetMembersParameters, cb: GetMembersCallback | null, json_extension: string): Promise<[number, number, Array<ChatRoomMemberInfo>]>;
    /**
     * 根据 Tag 获取聊天室成员列表
     * @param room_id 聊天室 ID
     * @param parameters 获取成员列表参数
     * @param cb 获取成员列表回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMembersByTagOnlineAsync(room_id: number, parameters: ChatRoomGetMembersByTagParameters, cb: GetMembersCallback | null, json_extension: string): Promise<[number, number, Array<ChatRoomMemberInfo>]>;
    /**
     * 根据 Tag 获取在线成员数量
     * @param room_id 聊天室 ID
     * @param parameters 获取成员数量参数
     * @param cb 获取成员数量回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMembersCountByTagOnlineAsync(room_id: number, parameters: ChatRoomGetMembersParameters, cb: GetMembersCountByTagCallback | null, json_extension: string): Promise<[number, NIMResCode, number]>;
    /**
     * 获取消息历史
     * @param room_id 聊天室 ID
     * @param parameters 获取消息历史参数
     * @param cb 获取消息历史回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMessageHistoryOnlineAsync(room_id: number, parameters: ChatRoomGetMsgHistoryParameters, cb: GetMsgHistoryCallback | null, json_extension: string): Promise<[number, number, Array<ChatRoomMessage>]>;
    /**
     * 获取消息历史（根据 Tag）
     * @param room_id 聊天室 ID
     * @param parameters 获取消息历史参数
     * @param cb 获取消息历史回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMessageHistoryByTagsOnlineAsync(room_id: number, parameters: ChatRoomGetMsgHistoryByTagsParameters, cb: GetMsgHistoryCallback | null, json_extension: string): Promise<[number, number, Array<ChatRoomMessage>]>;
    /**
     * 设置成员身份标识
     * @param room_id 聊天室 ID
     * @param parameters 设置成员身份标识参数
     * @param cb 设置成员身份标识回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    setMemberAttributeOnlineAsync(room_id: number, parameters: ChatRoomSetMemberAttributeParameters, cb: SetMemberAttributeCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomMemberInfo]>;
    /**
     * 获取聊天室信息
     * @param room_id 聊天室 ID
     * @param cb 获取聊天室信息回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getInfoAsync(room_id: number, cb: GetChatRoomInfoCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomInfo]>;
    /**
     * 获取聊天室成员信息
     * @param room_id 聊天室 ID
     * @param ids 用户 ID 列表
     * @param cb 获取聊天室成员信息回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    getMemberInfoByIDsAsync(room_id: number, ids: Array<string>, cb: GetMembersCallback | null, json_extension: string): Promise<[number, NIMResCode, Array<ChatRoomMemberInfo>]>;
    /**
     * 踢人
     * @param room_id 聊天室 ID
     * @param id 用户 ID
     * @param notify_ext 通知扩展字段
     * @param cb 踢人回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    kickMemberAsync(room_id: number, id: string, notify_ext: string, cb: KickMemberCallback | null, json_extension: string): Promise<[number, NIMResCode]>;
    /**
     * 设置代理
     * @param type 代理类型
     * @param host 代理地址
     * @param port 代理端口
     * @param user 用户名
     * @param password 密码
     */
    setProxy(type: NIMChatRoomProxyType, host: string, port: number, user: string, password: string): void;
    /**
     * 临时禁言
     * @param room_id 聊天室 ID
     * @param accid 用户 ID
     * @param duration 禁言时长
     * @param need_notify 是否需要通知
     * @param notify_ext 通知扩展字段
     * @param cb 临时禁言回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    tempMuteMemberAsync(room_id: number, accid: string, duration: number, need_notify: boolean, notify_ext: string, cb: TempMuteMemberCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomMemberInfo]>;
    /**
     * 临时禁言（根据 Tag）
     * @param room_id 聊天室 ID
     * @param target_tag 用户 Tag
     * @param duration 禁言时长
     * @param need_notify 是否需要通知
     * @param notify_ext 通知扩展字段
     * @param cb 临时禁言回调
     * @param notify_tags 通知 Tag
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    tempMuteMemberByTagAsync(room_id: number, target_tag: string, duration: number, need_notify: boolean, notify_ext: string, cb: TempMuteMemberCallback | null, notify_tags: string, json_extension: string): Promise<[number, NIMResCode, ChatRoomMemberInfo]>;
    /**
     * 更新聊天室信息
     * @param room_id 聊天室 ID
     * @param room_info 聊天室信息
     * @param need_notify 是否需要通知
     * @param notify_ext 通知扩展字段
     * @param cb 更新聊天室信息回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    updateRoomInfoAsync(room_id: number, room_info: ChatRoomInfo, need_notify: boolean, notify_ext: string, cb: UpdateRoomInfoCallback | null, json_extension: string): Promise<[number, NIMResCode]>;
    /**
     * 更新我的聊天室角色
     * @param room_id 聊天室 ID
     * @param info 聊天室成员信息
     * @param need_notify 是否需要通知
     * @param notify_ext 通知扩展字段
     * @param cb 更新我的聊天室角色回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    updateMyRoomRoleAsync(room_id: number, info: ChatRoomMemberInfo, need_notify: boolean, notify_ext: string, cb: UpdateMyRoomRoleCallback | null, json_extension: string): Promise<[number, NIMResCode]>;
    /**
     * 队列元素入队
     * @param room_id 聊天室 ID
     * @param element 队列元素
     * @param option 队列元素入队选项
     * @param cb 队列元素入队回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queueOfferAsync(room_id: number, element: ChatRoomQueueElement, option: ChatRoomQueueOfferOption, cb: QueueOfferCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomQueueElement]>;
    /**
     * 队列元素出队
     * @param room_id 聊天室 ID
     * @param element_key 队列元素 key
     * @param cb 队列元素出队回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queuePollAsync(room_id: number, element_key: string, cb: QueuePollCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomQueueElement]>;
    /**
     * 获取队列列表
     * @param room_id 聊天室 ID
     * @param cb 获取队列列表回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queueListAsync(room_id: number, cb: QueueListCallback | null, json_extension: string): Promise<[number, NIMResCode, Array<ChatRoomQueueElement>]>;
    /**
     * 获取队列头元素
     * @param room_id 聊天室 ID
     * @param cb 获取队列头元素回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queueHeaderAsync(room_id: number, cb: QueueHeaderCallback | null, json_extension: string): Promise<[number, NIMResCode, ChatRoomQueueElement]>;
    /**
     * (管理员权限)删除麦序队列
     * @param room_id 聊天室 ID
     * @param cb 删除麦序队列回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queueDropAsync(room_id: number, cb: QueueDropCallback | null, json_extension: string): Promise<[number, NIMResCode]>;
    /**
     * (管理员权限)批量更新麦序队列
     * @param room_id 聊天室 ID
     * @param batch_elements 批量更新麦序队列元素
     * @param need_notify 是否需要通知
     * @param notify_ext 通知扩展字段
     * @param cb 批量更新麦序队列回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    queueBatchUpdateAsync(room_id: number, batch_elements: ChatRoomBatchMembers, need_notify: boolean, notify_ext: string, cb: QueueBatchUpdateCallback | null, json_extension: string): Promise<[number, NIMResCode, Array<string>]>;
    /**
     * 更新位置信息
     * @param room_id 聊天室 ID
     * @param location 位置信息
     * @param cb 更新位置信息回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    updateLocation(room_id: number, location: NIMChatRoomLocation, cb: UpdateLocationCallback | null, json_extension: string): Promise<[number, NIMResCode] | null>;
    /**
     * 更新标签
     * @param room_id 聊天室 ID
     * @param tags_info 标签信息
     * @param cb 更新标签回调
     * @param json_extension json 扩展参数（备用，目前不需要）
     */
    updateTags(room_id: number, tags_info: ChatRoomUpdateTagsInfo, cb: UpdateTagsCallback | null, json_extension: string): Promise<[number, NIMResCode] | null>;
}
