import { EventEmitter } from 'eventemitter3';
import { IMMessage } from '../nim_def/msglog_def';
import { NIMTeamAPI, TeamInfo, TeamEventCallback, QueryAllMyTeamsCallback, QueryAllMyTeamsInfoCallback, QueryTeamMyAllMemberInfosCallback, QueryTeamMembersCallback, QueryTeamMemberCallback, QueryTeamInfoCallback, QueryTeamMembersOnlineCallback, TeamMsgAckReadCallback, QueryTeamMembersInvitorCallback, QueryTeamsInfoCallback, UpdateTInfoLocalCallback, GetTeamInfoBatchSFTransCallback, GetTeamInfoListCallback, TeamMemberProperty, TeamEvent, TeamMemberRoleTypeSearchOption, TeamMemberSerachResult } from '../nim_def/team_def';
import { NIMResCode } from '../nim_def/client_def';
export declare interface NIMTeamEvents {
    /** 群事件 */
    teamEvent: [TeamEvent];
}
export declare class NIMTeam extends EventEmitter<NIMTeamEvents> {
    team: NIMTeamAPI;
    constructor();
    /** 注册全局回调 */
    initEventHandlers(): void;
    /** 创建群组
     * @param team_info 群组信息
     * @param ids    邀请对象id
     * @param invitation_postscript 邀请附言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    群通知的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @deprecated 该接口已过时，请使用 createTeamAsyncEx 创建群组
     * @note
     * <pre>
     * 200:成功
     * 810:如果创建的是高级群，返回810表示邀请成功并带上tinfo
     * 414:成员不足
     * 801:成员数超限制
     * 404:成员中有非法用户
     * </pre>
     */
    createTeamAsync(info: TeamInfo, ids: Array<string>, invitationPostscript: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 创建群组
     * @param team_info 群组信息
     * @param ids    邀请对象id
     * @param invitation_postscript 邀请附言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    群通知的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 810:如果创建的是高级群，返回810表示邀请成功并带上tinfo
     * 414:成员不足
     * 801:成员数超限制
     * 404:成员中有非法用户
     * </pre>
     */
    createTeamAsyncEx(info: TeamInfo, ids: Array<string>, invitationPostscript: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 解散群
     * @param tid    群组id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    解散群的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * </pre>
     */
    dismissAsync(tid: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 邀请
     * @param tid    群组id
     * @param ids    邀请对象id
     * @param invitation_postscript 邀请附言
     * @param invitation_attachment 用户可自定义的补充邀请信息
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    邀请的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 810:如果是高级群，返回810表示邀请成功并带上timetag
     * 404:非法用户
     * 801:群人数超限
     * 802:没有权限
     * 803:群不存在
     * </pre>
     */
    inviteAsync(tid: string, ids: Array<string>, invitationPostscript: string, invitationAttachment: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 踢人
     * @param tid    群组id
     * @param ids    被踢对象id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    踢人的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 403:无超大群功能
     * 414:踢人数量超限
     * 802:群人数超限、不能踢自己
     * 803:群不存在
     * 804:用户不在群里面
     * </pre>
     */
    kickAsync(tid: string, ids: Array<string>, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 离开群
     * @param tid    群组id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    离开群的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 403:无超大群功能
     * 802:没有群权限、群主不能退群
     * 803:群不存在
     * 804:用户不在群里
     * </pre>
     */
    leaveAsync(tid: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 更新群信息
     * @param tid    群组id
     * @param team_info  群组信息
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    更新群信息的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有群权限、群主不能退群
     * 803:群不存在
     * </pre>
     */
    updateTeamInfoAsync(tid: string, info: TeamInfo, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 申请入群
     * @param tid    群组id
     * @param reason    附言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    申请入群的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:群验证方式为拒绝所有人申请
     * 808:申请成功，等待验证
     * 809:已经在群里
     * 801:人数限制
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    applyJoinAsync(tid: string, reason: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 同意入群申请
     * @param tid      群组id
     * @param applicant_id  申请者id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb        同意入群申请的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 509:操作已失效
     * 809:已经在群里
     * 801:人数限制
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    passJoinApplyAsync(tid: string, applicantId: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 拒绝入群申请
     * @param tid      群组id
     * @param applicant_id  申请者id
     * @param reason      附言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb        拒绝入群申请的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功，如果用户处于申请状态则会通知申请用户被拒绝
     * 509:操作已失效
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    rejectJoinApplyAsync(tid: string, applicantId: string, reason: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 添加管理员
     * @param tid  群组id
     * @param ids  管理员id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    添加管理员的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    addManagersAsync(tid: string, ids: Array<string>, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 删除管理员
     * @param tid  群组id
     * @param ids  管理员id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    删除管理员的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    removeManagersAsync(tid: string, ids: Array<string>, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 移交群主
     * @param tid      群组id
     * @param new_owner_id  移交对象id
     * @param is_leave    是否同时退出群
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    移交群主的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * 806:群数量上限
     * </pre>
     */
    transferTeamAsync(tid: string, newOwnerId: string, isLeave: boolean, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 更新自己的群属性
     * @param prop  群成员属性
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    更新自己的群属性的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 803:群不存在
     * 804:不在群里
     * 805:群类型不对
     * </pre>
     */
    updateMyPropertyAsync(prop: TeamMemberProperty, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** @fn boolean addTeamMembersFollow(tid: string, account_ids: Array<string>, cb: TeamEventCallback)
     * 添加群成员特别通知
     * @param[in] tid    群组id
     * @param[in] account_ids    群成员id
     * @param[in] cb        添加群成员特别通知的回调函数
     */
    addTeamMembersFollow(tid: string, account_ids: Array<string>, cb: TeamEventCallback): Promise<[TeamEvent] | null>;
    /** @fn boolean removeTeamMembersFollow(tid: string, account_ids: Array<string>, TeamEventCallback
     * cb) 移除群成员特别通知
     * @param[in] tid    群组id
     * @param[in] account_ids    群成员id
     * @param[in] cb        移除群成员特别通知的回调函数
     */
    removeTeamMembersFollow(tid: string, account_ids: Array<string>, cb: TeamEventCallback): Promise<[TeamEvent] | null>;
    /** 修改别人的群昵称
     * @param prop  群成员属性
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    修改别人的群昵称的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 804:不在群里
     * 805:群类型不对
     * </pre>
     */
    updateOtherNickAsync(prop: TeamMemberProperty, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 接受邀请
     * @param tid    群组id
     * @param invitor_id  邀请者id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    接受邀请的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    acceptInvitationAsync(tid: string, inviterId: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 拒绝邀请
     * @param tid    群组id
     * @param invitor_id  邀请者id
     * @param reason  附言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    拒绝邀请的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * 805:群类型不对
     * </pre>
     */
    rejectInvitationAsync(tid: string, inviterId: string, reason: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 查询所有群
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询所有群的回调函数
     * @return void 无返回值
     */
    queryAllMyTeamsAsync(cb: QueryAllMyTeamsCallback | null, jsonExtension: string): Promise<[number, Array<string>]>;
    /** 查询所有群信息
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询所有群信息的回调函数
     * @return void 无返回值
     */
    queryAllMyTeamsInfoAsync(cb: QueryAllMyTeamsInfoCallback | null, jsonExtension: string): Promise<[number, Array<TeamInfo>]>;
    /** 查询所有群里我的成员信息（使用场景：获取了所有群列表后，需要查询自己在每个群里自己的成员信息，使用成员信息里的bits字段，可以判断当某个群发来消息后，是否做消息通知）
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询所有群里我的成员信息的回调函数
     * @return void 无返回值
     */
    queryMyAllMemberInfosAsync(cb: QueryTeamMyAllMemberInfosCallback | null, jsonExtension: string): Promise<[number, Array<TeamMemberProperty>]>;
    /** 查询群成员
     * @param tid    群组id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询群成员的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 406:没有变化
     * 802:没有权限
     * </pre>
     */
    queryTeamMembersAsync(tid: string, cb: QueryTeamMembersCallback | null, jsonExtension: string): Promise<[string, number, Array<TeamMemberProperty>] | null>;
    /** 查询(单个)群成员信息
     * @param tid    群组id
     * @param id        群成员id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询群成员的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     */
    queryTeamMemberAsync(tid: string, id: string, cb: QueryTeamMemberCallback | null, jsonExtension: string): Promise<[TeamMemberProperty]>;
    /** 查询群信息
     * @param tid    群组id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    查询群信息的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     */
    queryTeamInfoAsync(tid: string, cb: QueryTeamInfoCallback | null, jsonExtension: string): Promise<[string, TeamInfo] | null>;
    /** 获取群信息（从服务器获取）
     * @param tid    群组id
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    获取群信息的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 803:群不存在
     * </pre>
     */
    queryTeamInfoOnlineAsync(tid: string, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /**  禁言/解除禁言
     * @param tid    群组id
     * @param member_id  操作对象id
     * @param set_mute  禁言/解除禁言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    踢人的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 404:禁言对象不存在
     * 414:参数错误
     * 803:群不存在
     * 802:没有权限
     * </pre>
     */
    muteMemberAsync(tid: string, member_id: string, set_mute: boolean, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 群禁言/解除群禁言
     * @param tid    群组id
     * @param set_mute  禁言/解除禁言
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    踢人的回调函数
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 414:参数错误
     * </pre>
     */
    muteAsync(tid: string, set_mute: boolean, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent] | null>;
    /** 获取群禁言成员列表
     * @param tid  群组id
     * @param cb    回调函数
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 802:没有权限
     * 803:群不存在
     * </pre>
     */
    queryMuteListOnlineAsync(tid: string, cb: QueryTeamMembersOnlineCallback | null, jsonExtension: string): Promise<[NIMResCode, number, Array<TeamMemberProperty>] | null>;
    /** 群消息回执
     * @param tid    群组id
     * @param msgs    需要发送消息回执的群消息
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @param cb    回调函数
     * @return void 无返回值
     * @note
     * <pre>
     * 200:成功
     * 414:参数错误
     * </pre>
     */
    teamMsgAckRead(tid: string, msgs: Array<IMMessage>, cb: TeamMsgAckReadCallback | null, jsonExtension: string): Promise<[string, Array<string>, Array<string>, Array<string>]>;
    /** 获取群消息未读成员列表
     * @param[in] tid		群组id
     * @param[in] msg		群消息
     * @param[in] jsonExtension json扩展参数（备用，目前不需要）
     * @param[in] cb		回调函数
     * @return void 无返回值
     * @note
     * <pre>
     * 200:成功
     * 414:参数错误
     * </pre>
     */
    teamMsgQueryAllUnreadList(tid: string, msg: IMMessage, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent]>;
    /** 根据指定 ID 获取群组消息已读未读情况
     * @param[in] tid		群组id
     * @param[in] msg		群消息
     * @param[in] accids    要查询的 ID 列表
     * @param[in] jsonExtension json扩展参数（备用，目前不需要）
     * @param[in] cb		回调函数
     * @return void 无返回值
     * @note
     * <pre>
     * 200:成功
     * 414:参数错误
     * </pre>
     */
    teamMsgQueryUnreadList(tid: string, msg: IMMessage, accids: Array<string>, cb: TeamEventCallback | null, jsonExtension: string): Promise<[TeamEvent]>;
    /** 查询群成员的邀请人 accid 由接口 原 TeamQueryTeamMembersInvitor方法
     * @param tid    群组id
     * @param members    要查询 的群成员accid列表
     * @param cb    回调函数
     * @return void 无返回值
     * @note
     * <pre>
     * 200:成功
     * </pre>
     */
    queryTeamMembersInvitor(tid: string, members: Array<string>, cb: QueryTeamMembersInvitorCallback | null): Promise<[NIMResCode, number, Map<string, string>]>;
    /** 查询群信息
     * @param keyword    要查询的关键字
     * @param cb        查询群信息的回调函数
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @return boolean 检查参数如果不符合要求则返回失败
     */
    queryTeamInfoByKeywordAsync(keyword: string, cb: QueryTeamsInfoCallback | null, jsonExtension: string): Promise<[number, Array<TeamInfo>]>;
    /** 更新群信息
     * @param tid    群组id
     * @param team_infos  群组信息
     * @param notify_event  更新后是否触发事件以通知应用层
     * @param cb    更新群信息的回调函数,回调中会指明更新成功与失败的群ID
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @return void
     */
    updateTInfoLocal(infos: Array<TeamInfo>, cb: UpdateTInfoLocalCallback | null, jsonExtension: string): Promise<[Array<string>, Array<string>]>;
    /** 查询所有群
     * @param cb    查询所有群的回调函数
     * @param time_tag  时间戳，没有特殊需求此参数赋0
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @return void 无返回值
     */
    getTeamInfoBatchTrans(cb: GetTeamInfoBatchSFTransCallback | null, time_tag: number, jsonExtension: string): Promise<[number, Array<TeamInfo>]>;
    /** 查询给定的一组群ID详细信息
     * @param tid_list   群组id列表，最多10个
     * @param cb  查询给定的一组群ID详细信息的回调模板
     * @return void 无返回值
     * @note
     * <pre>
     * 200:成功
     * 414:参数错误
     * 816:部分成功
     * </pre>
     */
    getTeaminfoList(tids: Array<string>, cb: GetTeamInfoListCallback | null): Promise<[NIMResCode, Array<TeamInfo>, Array<string>]>;
    /** 根据成员类型获取群成员
     * @param tid    群组id
     * @param option 获取群成员选项
     * @return boolean 检查参数如果不符合要求则返回失败
     */
    getTeamMemberList(tid: string, option: TeamMemberRoleTypeSearchOption): Promise<[TeamMemberSerachResult]>;
}
