import { V2NIMFriend, V2NIMFriendAddApplication, V2NIMFriendAddApplicationQueryOption, V2NIMFriendAddApplicationResult, V2NIMFriendAddParams, V2NIMFriendDeleteParams, V2NIMFriendSearchOption, V2NIMFriendSetParams } from 'ts/v2_def/v2_nim_struct_def';
import { EventEmitter } from 'eventemitter3';
import { V2NIMFriendDeletionType } from 'ts/v2_def/v2_nim_enum_def';
export declare interface V2NIMFriendListener {
    /** 添加好友 */
    friendAdded: [V2NIMFriend];
    /** 删除好友 */
    friendDeleted: [string, V2NIMFriendDeletionType];
    /** 添加好友申请 */
    friendAddApplication: [V2NIMFriendAddApplication];
    /** 添加好友申请被拒绝 */
    friendAddRejected: [V2NIMFriendAddApplication];
    /** 更新好友信息 */
    friendInfoChanged: [V2NIMFriend];
}
/** @brief 好友服务 */
export declare class V2NIMFriendService extends EventEmitter<V2NIMFriendListener> {
    instance: any;
    constructor();
    /**
     * @brief 添加好友
     * @param accountId 账号 ID
     * @param params 添加好友参数
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.addFriend('accountId', {
     *     addMode: 1
     * })
     * ```
     */
    addFriend(accountId: string, params: V2NIMFriendAddParams): Promise<void>;
    /**
     * @brief 删除好友
     * @param accountId 账号 ID
     * @param params 删除好友参数
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.deleteFriend('accountId', {
     *     deleteAlias: true
     * })
     * ```
     */
    deleteFriend(accountId: string, params: V2NIMFriendDeleteParams): Promise<void>;
    /**
     * @brief 接受好友申请
     * @param application 好友申请
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.acceptAddApplication(application)
     * ```
     */
    acceptAddApplication(application: V2NIMFriendAddApplication): Promise<void>;
    /**
     * @brief 拒绝好友申请
     * @param application 好友申请
     * @param postscript 拒绝理由
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.rejectAddApplication(application, 'reason')
     * ```
     */
    rejectAddApplication(application: V2NIMFriendAddApplication, postscript: String): Promise<void>;
    /**
     * @brief 设置好友信息
     * @param accountId 账号 ID
     * @param params 设置好友信息参数
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.setFriendInfo('accountId', {
     *     alias: 'alias'
     * })
     * ```
     */
    setFriendInfo(accountId: string, params: V2NIMFriendSetParams): Promise<void>;
    /**
     * @brief 获取好友列表
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.getFriendList()
     * ```
     */
    getFriendList(): Promise<Array<V2NIMFriend>>;
    /**
     * @brief 根据账号 ID 获取好友信息
     * @param accountIds 账号 ID 列表
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.getFriendByIds(['accountId1', 'accountId2'])
     * ```
     */
    getFriendByIds(accountIds: Array<string>): Promise<Array<V2NIMFriend>>;
    /**
     * @brief 根据账号 ID 检查好友状态
     * @param accountIds 账号 ID 列表
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.checkFriend(['accountId1', 'accountId2'])
     * ```
     */
    checkFriend(accountIds: Array<string>): Promise<Map<string, boolean>>;
    /**
     * @brief 获取申请添加好友信息列表
     * @param option 查询申请添加好友相关信息参数
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.getAddApplicationList({
     *     offset: 0,
     *     limit: 10
     * })
     * ```
     */
    getAddApplicationList(option: V2NIMFriendAddApplicationQueryOption): Promise<V2NIMFriendAddApplicationResult>;
    /**
     * @brief 获取申请添加好友未读数量
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.getAddApplicationUnreadCount()
     * ```
     */
    getAddApplicationUnreadCount(): Promise<number>;
    /**
     * @brief 设置申请添加好友已读
     * @returns void
     * @example
     * ```javascript
     * await v2.friendService.setAddApplicationRead()
     * ```
     */
    setAddApplicationRead(): Promise<void>;
    /**
     * @brief 根据关键字搜索用户信息
     * @param option 搜索选项 @see V2NIMFriendSearchOption
     * @returns Promise<Array<V2NIMFriend>>
     * @example
     * ```javascript
     * await v2.friendService.searchFriendByOption({
     *     keyword: 'keyword'
     * })
     * ```
     */
    searchFriendByOption(option: V2NIMFriendSearchOption): Promise<Array<V2NIMFriend>>;
    /**
     * @brief 清空所有添加好友申请
     * @returns Promise<void>
     * @example
     * ```javascript
     * await v2.friendService.clearAllAddApplication()
     * ```
     */
    clearAllAddApplication(): Promise<void>;
    /**
     * @brief 删除添加好友申请
     * @param application 添加好友申请
     * @returns Promise<void>
     * @example
     * ```javascript
     * await v2.friendService.deleteAddApplication(application)
     * ```
     */
    deleteAddApplication(application: V2NIMFriendAddApplication): Promise<void>;
}
