import { V2NIMCreateTeamParams, V2NIMAntispamConfig, V2NIMCreateTeamResult, V2NIMError, V2NIMUpdateTeamInfoParams, V2NIMTeam, V2NIMUpdateSelfMemberInfoParams, V2NIMTeamMemberQueryOption, V2NIMTeamMemberListResult, V2NIMTeamMember, V2NIMTeamInviteParams, V2NIMTeamJoinActionInfo, V2NIMTeamJoinActionInfoResult, V2NIMTeamJoinActionInfoQueryOption, V2NIMTeamMemberSearchOption, V2NIMUpdateMemberNickParams, V2NIMTeamSearchParams, V2NIMSearchTeamMemberParams, V2NIMTeamRefer, V2NIMTeamClearJoinActionInfoOption } from '../v2_def/v2_nim_struct_def';
import { EventEmitter } from 'eventemitter3';
import { V2NIMTeamChatBannedMode, V2NIMTeamMemberRole, V2NIMTeamType } from '../v2_def/v2_nim_enum_def';
export declare interface V2NIMTeamListener {
    /** 群组信息同步开始 */
    syncStarted: [];
    /** 群组信息同步完成 */
    syncFinished: [];
    /** 群组信息同步失败 */
    syncFailed: [V2NIMError];
    /** 群组创建 */
    teamCreated: [V2NIMTeam];
    /** 群组解散 */
    teamDismissed: [V2NIMTeam];
    /** 加入群组 */
    teamJoined: [V2NIMTeam];
    /** 离开群组 */
    teamLeft: [team: V2NIMTeam, isKicked: boolean];
    /** 群组信息更新 */
    teamInfoUpdated: [V2NIMTeam];
    /** 群组成员加入 */
    teamMemberJoined: [Array<V2NIMTeamMember>];
    /** 群组成员被踢 */
    teamMemberKicked: [operateAccountId: string, teamMembers: Array<V2NIMTeamMember>];
    /** 群组成员退出群组 */
    teamMemberLeft: [Array<V2NIMTeamMember>];
    /** 群组成员信息变更 */
    teamMemberInfoUpdated: [Array<V2NIMTeamMember>];
    /** 收到入群信息 */
    receiveTeamJoinActionInfo: [V2NIMTeamJoinActionInfo];
}
/** @brief 群组服务 */
export declare class V2NIMTeamService extends EventEmitter<V2NIMTeamListener> {
    instance: any;
    constructor();
    /**
     * @brief 创建群组
     * @param createTeamParams 创建群组参数
     * @param inviteeAccountIds 群组创建时, 同时被邀请加入群的成员列表
     * @param postscript 群组创建时, 邀请入群的附言
     * @param antispamConfig 反垃圾配置
     * @returns Promise<V2NIMCreateTeamResult>
     * @example
     * ```javascript
     * const result = await v2.teamService.createTeam({
     *     name: 'team1',
     *     teamType: 0,
     * }, inviteeAccountIds, postscript, antispamConfig)
     * ```
     */
    createTeam(createTeamParams: V2NIMCreateTeamParams, inviteeAccountIds: Array<string>, postscript: string, antispamConfig: V2NIMAntispamConfig): Promise<V2NIMCreateTeamResult>;
    /**
     * @brief 修改群组信息
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param updateTeamInfoParams 修改群组信息参数
     * @param antispamConfig 反垃圾配置
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.updateTeamInfo(teamId, teamType, {
     *     name: 'team1',
     * }, antispamConfig)
     * ```
     */
    updateTeamInfo(teamId: string, teamType: V2NIMTeamType, updateTeamInfoParams: V2NIMUpdateTeamInfoParams, antispamConfig: V2NIMAntispamConfig): Promise<void>;
    /**
     * @brief 退出群组
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.leaveTeam(teamId, teamType)
     * ```
     */
    leaveTeam(teamId: string, teamType: V2NIMTeamType): Promise<void>;
    /**
     * @brief 获取群组信息
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @returns Promise<V2NIMTeam>
     * @example
     * ```javascript
     * const team = await v2.teamService.getTeamInfo(teamId, teamType)
     * ```
     */
    getTeamInfo(teamId: string, teamType: V2NIMTeamType): Promise<V2NIMTeam>;
    /**
     * @brief 根据群组 ID 获取群组信息
     * @param teamIds 群组 id 列表
     * @param teamType 群组类型
     * @returns Promise<Array<V2NIMTeam>>
     * @example
     * ```javascript
     * const teams = await v2.teamService.getTeamInfoByIds(teamIds, teamType)
     * ```
     */
    getTeamInfoByIds(teamIds: Array<string>, teamType: V2NIMTeamType): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 从云端获取群组信息
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @returns Promise<V2NIMTeam>
     * @since v10.9.60
     * @example
     * ```javascript
     * const team = await v2.teamService.getTeamInfoFromCloud(teamId, teamType)
     * ```
     */
    getTeamInfoFromCloud(teamId: string, teamType: V2NIMTeamType): Promise<V2NIMTeam>;
    /**
     * @brief 解散群组
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.dismissTeam(teamId, teamType)
     * ```
     */
    dismissTeam(teamId: string, teamType: V2NIMTeamType): Promise<void>;
    /**
     * @brief 邀请成员加入群组
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param inviteeAccountIds 被邀请人 id 列表
     * @param postscript 邀请附言
     * @returns Promise<Array<string>>
     * @example
     * ```javascript
     * const accountIds = await v2.teamService.inviteMember(teamId, teamType, inviteeAccountIds, postscript)
     * ```
     */
    inviteMember(teamId: string, teamType: V2NIMTeamType, inviteeAccountIds: Array<string>, postscript: string): Promise<Array<string>>;
    /**
     * @brief 邀请成员加入群组
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param inviteeParams 被邀请加入群的参数
     * @returns Promise<Array<string>>
     * @example
     * ```javascript
     * const accountIds = await v2.teamService.inviteMemberEx(teamId, teamType, inviteeParams)
     * ```
     */
    inviteMemberEx(teamId: string, teamType: V2NIMTeamType, inviteeParams: V2NIMTeamInviteParams): Promise<Array<string>>;
    /**
     * @brief 同意邀请入群
     * @param invitationInfo 邀请信息
     * @returns Promise<V2NIMTeam>
     * @example
     * ```javascript
     * const team = await v2.teamService.acceptInvitation(invitationInfo)
     * ```
     */
    acceptInvitation(invitationInfo: V2NIMTeamJoinActionInfo): Promise<V2NIMTeam>;
    /**
     * @brief 拒绝邀请入群
     * @param invitationInfo 邀请信息
     * @param postscript 拒绝邀请的理由附言
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.rejectInvitation(invitationInfo, postscript)
     * ```
     */
    rejectInvitation(invitationInfo: V2NIMTeamJoinActionInfo, postscript: string): Promise<void>;
    /**
     * @brief 踢出群组成员
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param memberAccountIds 踢出群组的成员账号列表
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.kickMember(teamId, teamType, memberAccountIds)
     * ```
     */
    kickMember(teamId: string, teamType: V2NIMTeamType, memberAccountIds: Array<string>): Promise<void>;
    /**
     * @brief 申请加入群组
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param postscript 申请入群的附言
     * @returns Promise<V2NIMTeam>
     * @example
     * ```javascript
     * const team = await v2.teamService.applyJoinTeam(teamId, teamType, postscript)
     * ```
     */
    applyJoinTeam(teamId: string, teamType: V2NIMTeamType, postscript: string | null): Promise<V2NIMTeam>;
    /**
     * @brief 接受入群申请
     * @param applicationInfo 申请信息
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.acceptJoinApplication(applicationInfo)
     * ```
     */
    acceptJoinApplication(applicationInfo: V2NIMTeamJoinActionInfo): Promise<void>;
    /**
     * @brief 拒绝入群申请
     * @param applicationInfo 申请信息
     * @param postscript 拒绝入群申请的附言
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.rejectJoinApplication(applicationInfo, postscript)
     * ```
     */
    rejectJoinApplication(applicationInfo: V2NIMTeamJoinActionInfo, postscript: string): Promise<void>;
    /**
     * @brief 设置成员角色
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param memberAccountIds 成员 id 列表
     * @param memberRole 设置新的角色类型
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.updateTeamMemberRole(teamId, teamType, memberAccountIds, memberRole)
     * ```
     */
    updateTeamMemberRole(teamId: string, teamType: V2NIMTeamType, memberAccountIds: Array<string>, memberRole: V2NIMTeamMemberRole): Promise<void>;
    /**
     * @brief 移交群主
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountId 新群主 id
     * @param leave 是否同时退出群组
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.transferTeamOwner(teamId, teamType, accountId, leave)
     * ```
     */
    transferTeamOwner(teamId: string, teamType: V2NIMTeamType, accountId: string, leave: boolean): Promise<void>;
    /**
     * @brief 修改自己的群成员信息
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param memberInfoParams 修改群成员信息参数
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.updateSelfTeamMemberInfo(teamId, teamType, memberInfoParams)
     * ```
     */
    updateSelfTeamMemberInfo(teamId: string, teamType: V2NIMTeamType, memberInfoParams: V2NIMUpdateSelfMemberInfoParams): Promise<void>;
    /**
     * @brief 修改群成员昵称
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountId 群成员 id
     * @param teamNick 群成员昵称
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.updateTeamMemberNick(teamId, teamType, accountId, teamNick)
     * ```
     */
    updateTeamMemberNick(teamId: string, teamType: V2NIMTeamType, accountId: string, teamNick: string): Promise<void>;
    /**
     * @brief 修改群成员昵称
     * @param teamId 群组 ID
     * @param teamType 群组类型
     * @param nickParams 修改群成员昵称参数
     * @returns void
     * @since v10.9.30
     * @example
     * ```javascript
     * await v2.teamService.updateTeamMemberNickEx(teamId, teamType, {
     *    accountId: 'member1',
     *    teamNick: 'newNick',
     * })
     * ```
     */
    updateTeamMemberNickEx(teamId: string, teamType: V2NIMTeamType, nickParams: V2NIMUpdateMemberNickParams): Promise<void>;
    /**
     * @brief 设置群组禁言模式
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param chatBannedMode 群组禁言模式
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.setTeamChatBannedMode(teamId, teamType, chatBannedMode)
     * ```
     */
    setTeamChatBannedMode(teamId: string, teamType: V2NIMTeamType, chatBannedMode: V2NIMTeamChatBannedMode): Promise<void>;
    /**
     * @brief 设置群组成员聊天禁言状态
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountId 群成员 id
     * @param chatBanned 是否禁言
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.setTeamMemberChatBannedStatus(teamId, teamType, accountId, chatBanned)
     * ```
     */
    setTeamMemberChatBannedStatus(teamId: string, teamType: V2NIMTeamType, accountId: string, chatBanned: boolean): Promise<void>;
    /**
     * @brief 获取当前已经加入的群组列表
     * @param teamTypes 群组类型
     * @returns Promise<Array<V2NIMTeam>>
     * @example
     * ```javascript
     * const teams = await v2.teamService.getJoinedTeamList(teamTypes)
     * ```
     */
    getJoinedTeamList(teamTypes: Array<V2NIMTeamType>): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 获取当前已经加入的群组数量
     * @param teamTypes 群组类型列表, 为空表示查询所有群类型
     * @returns number
     * @example
     * ```javascript
     * const count = v2.teamService.getJoinedTeamCount(teamTypes)
     * ```
     */
    getJoinedTeamCount(teamTypes: Array<V2NIMTeamType>): number;
    /**
     * @brief 获取当前自己为群主的群组列表
     * @param teamTypes 群组类型
     * @returns Promise<Array<V2NIMTeam>>
     * @since v10.9.60
     * @example
     * ```javascript
     * const teams = await v2.teamService.getOwnerTeamList(teamTypes)
     * ```
     */
    getOwnerTeamList(teamTypes: Array<V2NIMTeamType>): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 获取当前自己为管理员的群组列表（包括自己是群主的群）
     * @param teamTypes 群组类型
     * @returns Promise<Array<V2NIMTeam>>
     * @since v10.9.60
     * @example
     * ```javascript
     * const teams = await v2.teamService.getManagerTeamList(teamTypes)
     * ```
     */
    getManagerTeamList(teamTypes: Array<V2NIMTeamType>): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 获取群组成员列表
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param queryOption 群组成员查询选项
     * @returns Promise<V2NIMTeamMemberListResult>
     * @example
     * ```javascript
     * const result = await v2.teamService.getTeamMemberList(teamId, teamType, {
     *     limit: 10,
     *     nextToken: ''
     * })
     * ```
     */
    getTeamMemberList(teamId: string, teamType: V2NIMTeamType, queryOption: V2NIMTeamMemberQueryOption): Promise<V2NIMTeamMemberListResult>;
    /**
     * @brief 根据账号 ID 列表获取群组成员列表
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountIds 账号 ID 列表
     * @returns Promise<Array<V2NIMTeamMember>>
     * @example
     * ```javascript
     * const members = await v2.teamService.getTeamMemberListByIds(teamId, teamType, accountIds)
     * ```
     */
    getTeamMemberListByIds(teamId: string, teamType: V2NIMTeamType, accountIds: Array<string>): Promise<Array<V2NIMTeamMember>>;
    /**
     * @brief 根据账号 ID 列表获取群组成员邀请人
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountIds 账号 ID 列表
     * @returns Promise<Map<string, string>>
     * @example
     * ```javascript
     * const invitorMap = await v2.teamService.getTeamMemberInvitor(teamId, teamType, accountIds)
     * ```
     */
    getTeamMemberInvitor(teamId: string, teamType: V2NIMTeamType, accountIds: Array<string>): Promise<Map<string, string>>;
    /**
     * @brief 获取群加入相关信息
     * @param option 查询参数
     * @returns Promise<V2NIMTeamJoinActionInfoResult>
     * @example
     * ```javascript
     * const result = await v2.teamService.getTeamJoinActionInfoList(option)
     * ```
     */
    getTeamJoinActionInfoList(option: V2NIMTeamJoinActionInfoQueryOption): Promise<V2NIMTeamJoinActionInfoResult>;
    /**
     * @brief 根据关键字搜索群组，混合搜索高级群和超大群，使用 LIKE 方式匹配，只搜索群名称
     * @param keyword 关键字
     * @returns Promise<Array<V2NIMTeam>>
     * @example
     * ```javascript
     * const teams = await v2.teamService.searchTeamByKeyword(keyword)
     * ```
     */
    searchTeamByKeyword(keyword: string): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 本地搜索群组，混合搜索高级群和超大群，使用 FTS 方式匹配，搜索群名称
     * @param params 群信息检索参数
     * @returns Promise<Array<V2NIMTeam>>
     * @example
     * ```javascript
     * const teams = await v2.teamService.searchTeams(params)
     * ```
     */
    searchTeams(params: V2NIMTeamSearchParams): Promise<Array<V2NIMTeam>>;
    /**
     * @brief 根据关键字搜索群组成员
     * @param option 搜索选项
     * @returns Promise<V2NIMTeamMemberListResult>
     * @example
     * ```javascript
     * const result = await v2.teamService.searchTeamMembers(option)
     * ```
     */
    searchTeamMembers(option: V2NIMTeamMemberSearchOption): Promise<V2NIMTeamMemberListResult>;
    /**
     * @brief 本地全文检索群成员信息，可以指定是否检索群成员ID或者群成员昵称
     * @param params 群成员检索参数
     * @returns Promise<Map<V2NIMTeamRefer, Array<V2NIMTeamMember>>>
     * @example
     * ```javascript
     * const teams = await v2.teamService.searchTeamMembersEx(params)
     * ```
     */
    searchTeamMembersEx(params: V2NIMSearchTeamMemberParams): Promise<Map<V2NIMTeamRefer, Array<V2NIMTeamMember>>>;
    /**
     * @brief 添加特别关注群成员列表
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountIds 账号 id 列表
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.addTeamMembersFollow(teamId, teamType, accountIds)
     * ```
     */
    addTeamMembersFollow(teamId: string, teamType: V2NIMTeamType, accountIds: Array<string>): Promise<void>;
    /**
     * @brief 移除特别关注群成员列表
     * @param teamId 群组 id
     * @param teamType 群组类型
     * @param accountIds 账号 id 列表
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.removeTeamMembersFollow(teamId, teamType, accountIds)
     * ```
     */
    removeTeamMembersFollow(teamId: string, teamType: V2NIMTeamType, accountIds: Array<string>): Promise<void>;
    /**
     * @brief 清空所有群申请
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.clearAllTeamJoinActionInfo()
     * ```
     */
    clearAllTeamJoinActionInfo(): Promise<void>;
    /**
    * @brief 按条件清空请申请通知
    * @param option 清空条件
    * @returns Promise<void>
    * @example
    * ```javascript
    * await v2.teamService.clearAllTeamJoinActionInfoEx({}})
    * ```
    * @since v10.9.70
    *
    */
    clearAllTeamJoinActionInfoEx(option: V2NIMTeamClearJoinActionInfoOption): Promise<void>;
    /**
     * @brief 删除群申请
     * @param applicationInfo 群申请信息
     * @returns void
     * @example
     * ```javascript
     * await v2.teamService.deleteTeamJoinActionInfo(applicationInfo)
     * ```
     */
    deleteTeamJoinActionInfo(applicationInfo: V2NIMTeamJoinActionInfo): Promise<void>;
    /**
     * @brief 获取自己所有加入的群的自己群成员信息
     * @param teamTypes 群组类型列表, 为空表示查询所有群类型
     * @returns Promise<Array<V2NIMTeamMember>>
     * @example
     * ```javascript
     * const members = await v2.teamService.getJoinedTeamMembers(teamTypes)
     * ```
     */
    getJoinedTeamMembers(teamTypes: Array<V2NIMTeamType>): Promise<Array<V2NIMTeamMember>>;
    /**
     * @brief 获取群申请/邀请未读数量
     * @returns Promise<number>
     * @since v10.9.20
     * @example
     * ```javascript
     * const count = await v2.teamService.getTeamJoinActionInfoUnreadCount()
     * ```
     */
    getTeamJoinActionInfoUnreadCount(): Promise<number>;
    setTeamJoinActionInfoRead(applicationInfo: V2NIMTeamJoinActionInfo): Promise<void>;
}
