import { NIMResCode } from './client_def';
/** @enum NIMFriendFlag 好友类型  */
export declare enum NIMFriendFlag {
    /** 陌生人 */
    kNIMFriendFlagNotFriend = 0,
    /** 普通好友 */
    kNIMFriendFlagNormal = 1
}
/** @enum NIMFriendSource 好友来源 */
export declare enum NIMFriendSource {
    /** 默认 */
    kNIMFriendSourceDefault = 0
}
/** @enum NIMVerifyType 好友验证方式 */
export declare enum NIMVerifyType {
    /** 直接加好友 */
    kNIMVerifyTypeAdd = 1,
    /** 请求加好友 */
    kNIMVerifyTypeAsk = 2,
    /** 同意 */
    kNIMVerifyTypeAgree = 3,
    /** 拒绝 */
    kNIMVerifyTypeReject = 4
}
/** @enum NIMFriendQueryType 查询好友信息的依据条件 */
export declare enum NIMFriendQueryType {
    /** 同时匹配账户ID和备注名 */
    kNIMFriendQueryDefault = 0,
    /** 仅匹配账户ID */
    kNIMFriendQueryByAccId = 1,
    /** 仅匹配备注名 */
    kNIMFriendQueryByAlias = 2
}
/** @enum NIMFriendChangeType 好友数据变化类型 */
export declare enum NIMFriendChangeType {
    /** 加好友/处理好友请求 */
    kNIMFriendChangeTypeRequest = 1,
    /** 删除好友 */
    kNIMFriendChangeTypeDel = 2,
    /** 更新好友 */
    kNIMFriendChangeTypeUpdate = 3,
    /** 好友列表同步与更新 */
    kNIMFriendChangeTypeSyncList = 5
}
/** @brief 删除好有拓展选项 */
export interface DeleteFriendOption {
    delete_alias_?: boolean;
}
/** @brief 云信好友 */
export interface FriendProfile {
    /** 用户账号 */
    accid?: string;
    /** 主动的好友关系 */
    flag?: NIMFriendFlag;
    /** 被动的好友关系 */
    beflag?: NIMFriendFlag;
    /** 好友来源 */
    source?: NIMFriendSource;
    /** 好友别名 */
    alias?: string;
    /** 扩展数据 */
    bits?: number;
    /** 扩展数据 */
    ex?: string;
    /** 扩展数据 */
    server_ex?: string;
    /** 好友创建时间戳（毫秒） */
    create_timetag?: number;
    /** 好友更新时间戳（毫秒） */
    update_timetag?: number;
}
/** @brief 云信好友变更事件 */
export interface FriendChangeEvent {
    /** 事件类型 */
    type_?: NIMFriendChangeType;
    /** 事件内容，根据事件类型通过提供的 ParsexxxEvent 接口(nim_cpp_friend.h)解析该内容 */
    content_?: string;
}
export type FriendChangeCallback = (result: FriendChangeEvent) => void;
export type FriendOptCallback = (rescode: NIMResCode) => void;
export type GetFriendsListCallback = (rescode: NIMResCode, result: Array<FriendProfile>) => void;
export type GetFriendProfileCallback = (accid: string, result: FriendProfile) => void;
export interface NIMFriendAPI {
    InitEventHandlers(): void;
    Request(accid: string, verify_type: NIMVerifyType, msg: string, cb: FriendOptCallback | null, jsonExtension: string): boolean;
    Delete(accid: string, option: DeleteFriendOption, cb: FriendOptCallback | null): boolean;
    Update(profile: FriendProfile, cb: FriendOptCallback | null, jsonExtension: string): boolean;
    GetList(cb: GetFriendsListCallback | null, jsonExtension: string): void;
    GetFriendProfile(accid: string, cb: GetFriendProfileCallback | null, jsonExtension: string): void;
    QueryFriendListByKeyword(keyword: string, cb: GetFriendsListCallback | null, jsonExtension: string): boolean;
}
