export class WfcManager {
    /**
     * 事件通知，{@link EventType}中定义的事件，都会采用本{@link eventEmitter} 通知
     * @type {module:events.internal.EventEmitter}
     */
    eventEmitter: any;
    /**
     * 初始化，请参考本demo的用法
     * 只可以在主窗口调用，其他窗口调用应当调用{@link attach}
     * @param {[]} args，pc 时，传入[node实例]; web 时，可以传入Config配置对象，配置项，请参考{@link Config}
     */
    init(args?: []): void;
    /**
     * 注册新的自定义消息
     *
     * @param {string} name
     * @param {number} flag 用来标识本消息是否需要存储、计数等，{@link PersistFlag}
     * @param {number} type 消息类型，{@link MessageContentType}
     * @param {class} clazz 消息对应的class
     */
    registerMessageContent(name: string, flag: number, type: number, clazz: class): void;
    /**
     * 获取clientId，获取用户token时，一定要通过调用此方法获取clientId，否则会连接失败。
     * @returns {string} clientId
     */
    getClientId(): string;
    /**
     * 获取协议栈版本号
     */
    getProtoRevision(): any;
    useSM4(): void;
    /**
     * 连接服务器
     * @param {string} userId 用户id
     * @param {string} token 用户token，生成token时，所使用的clientId，一定要通过{@link getClientId}获取
     * @return {number} 返回上一次活动时间。如果间隔时间较长，可以加个第一次登录的等待提示界面，在等待时同步所有的用户信息/群组信息/频道信息等。
     */
    connect(userId: string, token: string): number;
    /**
     * 设置第三方推送设备token
     * @param {number} pushType 推送类型，0-5 移动端已经使用了。
     * @param {String} token 设备token
     */
    setDeviceToken(pushType: number, token: string): void;
    /**
     * 断开连接。当切换用户时，需要先断开连接，等待几秒钟后再调用connect连接新用户。
     */
    disconnect(): void;
    /**
     * 设置包名。
     * @param {String} packageName 包名
     *
     */
    setPackageName(packageName: string): void;
    /**
     * 获取当前用户的id
     * @returns {string} 当前用户的id
     */
    getUserId(): string;
    /**
     * 服务器时间和本地时间的差值
     * @returns {number} 服务器时间和本地时间的差值
     */
    getServerDeltaTime(): number;
    /**
     * 截图，
     * @returns {string} 成功返回'done'，同时，图片保存到了系统剪贴板
     */
    screenShot(): string;
    /**
     * 是否成功登录
     * @returns {boolean}
     */
    isLogin(): boolean;
    /**
     * 获取连接状态
     * @returns {number} 连接状态，参考{@link ConnectionStatus}
     */
    getConnectionStatus(): number;
    /**
     * 设置网络策略，仅专业版支持
     * @param {int} strategy 网络策略。0 是自动选择；1 选择主网络；2选择备用网络
     *
     */
    setBackupAddressStrategy(strategy: int): void;
    /**
     * 设置备选网络信息，仅专业版支持
     * @param {String} backupHost 备选网络主机地址
     * @param {int} backupPort 备选网络主机端口
     */
    setBackupAddress(backupHost: string, backupPort: int): void;
    /**
     * 已废弃，请使用{@link getFavGroupList}
     * 获取我保存到通讯录的群组信息列表
     * @returns {[GroupInfo]} 参考{@link GroupInfo}
     */
    getMyGroupList(): [GroupInfo];
    /**
     * 获取我保存到通讯录的群组信息列表
     * @returns {[GroupInfo]} 参考{@link GroupInfo}
     */
    getFavGroupList(): [GroupInfo];
    /**
     * 获取用户的displayName
     * @param {string} userId 用户id
     * @returns {string} 用户displayName
     */
    getUserDisplayName(userId: string): string;
    /**
     * 获取用户在群里面的displayName
     * @param {string} groupId 群id
     * @param {string} userId 用户id
     * @param {boolean} ignoreFriendAlias 是否忽略好友备注
     * @returns {string} 用户在群里面的displayName
     */
    getGroupMemberDisplayName(groupId: string, userId: string, ignoreFriendAlias?: boolean): string;
    /**
     * 获取用户的displayName
     * @param {UserInfo} userInfo 用户信息
     * @returns {string} 用户的displayName
     */
    getUserDisplayNameEx(userInfo: UserInfo): string;
    /**
     * 获取用户的displayName
     * @param {UserInfo} userInfo 用户信息
     * @param {boolean} ignoreFriendAlias 是否忽略好友备注。
     * @returns {string} 用户的displayName
     */
    getGroupMemberDisplayNameEx(userInfo: UserInfo, ignoreFriendAlias?: boolean): string;
    /**
     * 获取用户信息
     * @param {string} userId 用户id
     * @param {boolean} refresh 是否刷新用户信息，如果刷新的话，且用户信息有更新，会通过{@link eventEmitter}进行通知，事件的名字是{@link EventType.UserInfosUpdate }
     * @param {string} groupId
     * @returns {UserInfo}
     */
    getUserInfo(userId: string, refresh?: boolean, groupId?: string): UserInfo;
    /**
     * 获取用户信息
     * @param {string} userId 用户ID
     * @param {boolean} refresh 是否强制从服务器更新，如果本地没有或者强制，会从服务器刷新
     * @param {function (UserInfo)} success 成功回调，如果本地有该用户信息，则通过回调返回本地的用户信息；如果本地没有，则从服务端拉取该用户信息，并通过回调返回
     * @param {function (number)} fail 失败回调
     */
    getUserInfoEx(userId: string, refresh: boolean, success: (arg0: UserInfo) => any, fail: (arg0: number) => any): void;
    /**
     * 批量从服务端拉取用户信息
     * @param {[string]} userIds 用户ids
     * @param {function ([UserInfo])} successCB 成功回调
     * @param {function (Number)} failCB 失败回调
     */
    getUserInfosEx(userIds: [string], successCB: (arg0: [UserInfo]) => any, failCB: (arg0: number) => any): void;
    /**
     * 批量获取用户信息
     * @param {[string]} userIds 用户ids
     * @param {string} groupId 群组id
     * @returns {[UserInfo]}
     */
    getUserInfos(userIds: [string], groupId: string): [UserInfo];
    /**
     * 服务端搜索用户
     * @param {string} keyword 搜索关键字
     * @param {number} searchType 搜索类型，可选值参考{@link SearchType}
     * @param {number} page 页数，如果searchType是0，每次搜索20个，可以指定page。如果searchType非0，只能搜索一个，page无意义
     * @param {function (keyword, [UserInfo])} successCB
     * @param {function (number)}failCB
     * @returns {Promise<void>}
     */
    searchUser(keyword: string, searchType: number, page: number, successCB: (arg0: string, arg1: [UserInfo]) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 服务端搜索用户
     * @param {string} domainId 域ID
     * @param {string} keyword 搜索关键字
     * @param {number} searchType 搜索类型，可选值参考{@link SearchType}
     * @param {number} page 页数，如果searchType是0，每次搜索20个，可以指定page。如果searchType非0，只能搜索一个，page无意义
     * @param {function (keyword, [UserInfo])} successCB
     * @param {function (number)}failCB
     * @returns {Promise<void>}
     */
    searchUserEx(domainId: string, keyword: string, searchType: number, page: number, successCB: (arg0: string, arg1: [UserInfo]) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 本地搜索好友
     * @param keyword 搜索关键字
     * @returns {[UserInfo]}
     */
    searchFriends(keyword: any): [UserInfo];
    /**
     * web 端，只匹配群名称和群备注名
     * 本地搜索群组
     * @param keyword 搜索关键字
     * @returns {[GroupSearchResult]}
     */
    searchGroups(keyword: any): [GroupSearchResult];
    /**
     * 获取收到的好友请求
     * @returns {[FriendRequest]}
     */
    getIncommingFriendRequest(): [FriendRequest];
    /**
     * 获取发送出去的好友请求
     * @returns {[FriendRequest]}
     */
    getOutgoingFriendRequest(): [FriendRequest];
    /**
     * 获取单条好友请求
     * @param {string} userId 对方的用户id
     * @param {boolean} incoming 是否是收到的好友请求
     * @return {FriendRequest|null}
     */
    getOneFriendRequest(userId: string, incoming?: boolean): FriendRequest | null;
    /**
     * 从服务端加载好友请求，如果有更新，会通过{@link eventEmitter}通知
     */
    loadFriendRequestFromRemote(): void;
    /**
     * 获取未读的好友请求数
     * @returns {number}
     */
    getUnreadFriendRequestCount(): number;
    /**
     * 清除好友请求未读状态
     */
    clearUnreadFriendRequestStatus(): void;
    /**
     * 删除好友
     * @param {string} userId 好友id
     * @param {function ()} successCB
     * @param {function (number) }failCB
     * @returns {Promise<void>}
     */
    deleteFriend(userId: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 处理好友请求
     * @param {string} userId 发送好友请求的用户的id
     * @param {boolean} accept true，接受好友请求；false，拒绝好友请求
     * @param {string} extra 一些额外信息，可用来实现好友来源等，推荐使用json格式
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    handleFriendRequest(userId: string, accept: boolean, extra: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 判断用户是否被加入了黑名单
     * @param userId
     * @returns {boolean}
     */
    isBlackListed(userId: any): boolean;
    /**
     * 获取黑名单
     * @returns {[string]}
     */
    getBlackList(): [string];
    /**
     * 设置黑名单
     * @param {string} userId 用户id
     * @param {boolean} block true，加入黑名单；false，移除黑名单
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    setBlackList(userId: string, block: boolean, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 获取好友列表，返回的时好友id数组
     * @param {boolean} fresh 是否刷新好友信息，如果刷新，且有更新的话，会通过{@link eventEmitter}通知
     * @returns {[string]}
     */
    getMyFriendList(fresh?: boolean): [string];
    /**
     * 好友列表
     * @returns {[Friend]}
     */
    getFriendList(fresh?: boolean): [Friend];
    /**
     * 获取好友别名
     * @param {string} userId
     * @returns {string}
     */
    getFriendAlias(userId: string): string;
    /**
     * 获取好友的Extra信息。
     * @param {string} userId
     * @returns {string}
     */
    getFriendExtra(userId: string): string;
    /**
     * 设置好友别名
     * @param {string} userId 用户id
     * @param {string} alias 别名
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setFriendAlias(userId: string, alias: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 创建群组
     * @param {string | null} groupId 群组id，一般情况下，传null；如果有自己的用户系统，自己维护群信息，那么可以传群id
     * @param {number} groupType 群类型，可参考 {@link GroupType }
     * @param {string} name 群名称
     * @param {string} portrait 群头像的链接
     * @param {string} groupExtra 群组扩展信息
     * @param {[string]} memberIds 群成员id列表
     * @param {string} memberExtra 群组成员扩展信息
     * @param {[number]} lines 会话线路，默认传[0]即可
     * @param {CreateGroupNotification} notifyContent 通知信息，默认传null，服务端会生成默认通知
     * @param {function (string)} successCB 回调通知群id
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    createGroup(groupId: string | null, groupType: number, name: string, portrait: string, groupExtra: string, memberIds: [string], memberExtra: string, lines: [number], notifyContent: CreateGroupNotification, successCB: (arg0: string) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 设置群管理员
     * @param {string} groupId 群id
     * @param {boolean} isSet true，设置；false，取消设置
     * @param {[string]} memberIds 将被设置为管理或取消管理远的群成员的用户id
     * @param {[number]} lines 默认传[0]即可
     * @param {Object} notifyContent 默认传null即可
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setGroupManager(groupId: string, isSet: boolean, memberIds: [string], lines: [number], notifyContent: any, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取群信息
     * @param {string} groupId 群id
     * @param {boolean} refresh 是否刷新，如果刷新，且有更新的话，会通过{@link eventEmitter}通知
     * @returns {GroupInfo}
     */
    getGroupInfo(groupId: string, refresh?: boolean): GroupInfo;
    /**
     * 批量获取群信息
     * @param {[string]} groupIds 群id
     * @param {boolean} refresh 是否刷新，如果刷新，且有更新的话，会通过{@link eventEmitter}通知
     * @returns {[GroupInfo]}
     */
    getGroupInfos(groupIds: [string], refresh?: boolean): [GroupInfo];
    /**
     * 获取群信息
     * @param {string} groupId 群id
     * @param {boolean} refresh 是否刷新，如果刷新，且有更新的话，会通过{@link eventEmitter}通知
     * @param {function (GroupInfo)} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    getGroupInfoEx(groupId: string, refresh: boolean, successCB: (arg0: GroupInfo) => any, failCB: (arg0: number) => any): void;
    /**
     * 添加群成员
     * @param  {string} groupId 群组id
     * @param {[string]} memberIds 新添加的群成员id
     * @param  {string} extra 群成员扩展信息
     * @param {[number]} notifyLines
     * @param {AddGroupMemberNotification} notifyMessageContent
     * @param successCB
     * @param failCB
     */
    addGroupMembers(groupId: string, memberIds: [string], extra: string, notifyLines: [number], notifyMessageContent: AddGroupMemberNotification, successCB: any, failCB: any): void;
    /**
     * 获取群成员id列表
     * @param {string} groupId 群id
     * @param {boolean} fresh 是否刷新，刷新时，如果有更新，会通过{@link eventEmitter}通知
     * @returns {[string]} 群成员用户id列表
     */
    getGroupMemberIds(groupId: string, fresh?: boolean): [string];
    /**
     * 获取群成员信息
     * @param {string} groupId 群id
     * @param {boolean} fresh 是否刷新
     * @returns {[GroupMember]} 群成员信息
     */
    getGroupMembers(groupId: string, fresh?: boolean): [GroupMember];
    /**
     * 根据群成员类型获取群成员列表
     * @param {string} groupId
     * @param {number} memberType，可选值参考{@link GroupMemberType}
     * @return {[GroupMember]} 群成员列表
     */
    getGroupMembersByType(groupId: string, memberType: number): [GroupMember];
    /**
     * 获取群成员信息
     * @param {string} groupId 群id
     * @param {boolean} fresh 是否强制从服务器更新，如果不刷新则从本地缓存中读取
     * @param {function ([GroupMember])} successCB
     * @param {function (number)} failCB
     */
    getGroupMembersEx(groupId: string, fresh: boolean, successCB: (arg0: [GroupMember]) => any, failCB: (arg0: number) => any): void;
    /**
     * 获取单个群成员信息
     * @param {string} groupId 群id
     * @param {string} memberId 群成员id
     * @returns {GroupMember} 群成员信息
     */
    getGroupMember(groupId: string, memberId: string): GroupMember;
    /**
     * 将用户从群里移除
     * @param {string} groupId 群id
     * @param {[string]} memberIds 将要被移除的群成员id列表
     * @param {[]} notifyLines 默认传[0]即可
     * @param {KickoffGroupMemberNotification} notifyMsg 默认传null即可
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    kickoffGroupMembers(groupId: string, memberIds: [string], notifyLines: [], notifyMsg: KickoffGroupMemberNotification, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 对群成员禁言
     * @param {string} groupId 群id
     * @param {boolean} isSet true，禁言；false，取消禁言
     * @param {[string]} memberIds 群成员id列表
     * @param {[number]} notifyLines 默认传[0]即可
     * @param {MessageContent} notifyMsg 默认传null即可
     * @param {function ()} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    muteGroupMembers(groupId: string, isSet: boolean, memberIds: [string], notifyLines: [number], notifyMsg: MessageContent, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 群全局禁言之后，允许白名单成员发言
     * @param {string} groupId 群id
     * @param {boolean} isSet true，加入白名单，允许发言；false，移除白名单，禁止发言
     * @param {[string]} memberIds 群成员id列表
     * @param {[number]} notifyLines 默认传[0]即可
     * @param {MessageContent} notifyMsg 默认传null即可
     * @param {function ()} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    allowGroupMembers(groupId: string, isSet: boolean, memberIds: [string], notifyLines: [number], notifyMsg: MessageContent, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 退出群组
     * @param groupId 群id
     * @param {[]} lines 默认传[0]即可
     * @param {KickoffGroupMemberNotification} notifyMessageContent 默认传null即可
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    quitGroup(groupId: any, lines: [], notifyMessageContent: KickoffGroupMemberNotification, successCB: any, failCB: any): Promise<void>;
    /**
     * 解散群组
     * @param {string} groupId 群组id
     * @param {[]} lines 默认传[0]即可
     * @param {KickoffGroupMemberNotification} notifyMessageContent 默认传null即可
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    dismissGroup(groupId: string, lines: [], notifyMessageContent: KickoffGroupMemberNotification, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 修改群信息
     * @param {string} groupId 群id
     * @param {number} type 修改信息所属类型，可选值参考{@link ModifyGroupInfoType}
     * @param {string} newValue 准备修改成什么
     * @param {[number]} lines
     * @param {GroupNotificationContent} notifyMessageContent
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    modifyGroupInfo(groupId: string, type: number, newValue: string, lines: [number], notifyMessageContent: GroupNotificationContent, successCB: any, failCB: any): Promise<void>;
    /**
     * 修改我在群组的别名
     * @param {string} groupId 群id
     * @param {string} alias 别名
     * @param lines
     * @param notifyMessageContent
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    modifyGroupAlias(groupId: string, alias: string, lines: any, notifyMessageContent: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 修改群成员在群组的别名
     * @param {string} groupId 群id
     * @param {string} memberId 群成员id
     * @param {string} alias 别名
     * @param lines
     * @param notifyMessageContent
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    modifyGroupMemberAlias(groupId: string, memberId: string, alias: string, lines: any, notifyMessageContent: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 修改群成员在群组的附加信息
     * @param {string} groupId 群id
     * @param {string} memberId 群成员id
     * @param {string} extra 群成员附加信息
     * @param lines
     * @param notifyMessageContent
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    modifyGroupMemberExtra(groupId: string, memberId: string, extra: string, lines: any, notifyMessageContent: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 转移群主
     * @param {string} groupId 群id
     * @param {string} newOwner 新群主的id
     * @param lines
     * @param notifyMessageContent
     * @param successCB
     * @param failCB
     */
    transferGroup(groupId: string, newOwner: string, lines: any, notifyMessageContent: any, successCB: any, failCB: any): void;
    /**
     * 设置群备注
     * @param {string} groupId 群id
     * @param {string} remark 群备注
     * @param successCB
     * @param failCB
     */
    setGroupRemark(groupId: string, remark: string, successCB: any, failCB: any): Promise<void>;
    /**
     *  获取群备注
     * @param {string} groupId 群id
     * @return 群备注
     */
    getGroupRemark(groupId: string): any;
    /**
     * 获取保存到通讯录的群id列表
     * @returns {[string]}
     */
    getFavGroups(): [string];
    /**
     *  判断群是否保存到了通讯录
     * @param {string} groupId
     * @returns {boolean}
     */
    isFavGroup(groupId: string): boolean;
    /**
     * 将群保存到通讯录或移除通讯录
     * @param {string} groupId 群id
     * @param {boolean} fav true，保存到通讯录；false，从通讯录移除
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setFavGroup(groupId: string, fav: boolean, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取当前用户所有群组ID，此方法消耗资源较大，不建议高频使用。
     *
     * @param {function ([string])} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    getMyGroups(successCB: (arg0: [string]) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取用户共同群组ID
     *
     * @param {string} userId
     * @param {function ([string])} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    getCommonGroups(userId: string, successCB: (arg0: [string]) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取用户设置，保存格式可以理解为：scope + key => value
     * @param {number} scope 命名空间，可选值参考{@link UserSettingScope}
     * @param {string} key key
     * @returns {string} 设置的key对应的value
     */
    getUserSetting(scope: number, key: string): string;
    /**
     * 获取某个命名空间下的所有设置
     * @param scope 命名空间，可选值参考{@link UserSettingScope}
     * @returns {Map} key-value
     */
    getUserSettings(scope: any): Map<any, any>;
    /**
     * 设置或更新用户设置
     * @param {number} scope 命名空间
     * @param {string} key 设置的key
     * @param {string} value 设置的value
     * @param {function ()} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     * @returns {Promise<void>}
     */
    setUserSetting(scope: number, key: string, value: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 修改个人信息
     * @param {[ModifyMyInfoEntry]} modifyMyInfoEntries 需要修改的信息列表，pc端，一次只允许修改一个项。
     * @param successCB
     * @param failCB
     */
    modifyMyInfo(modifyMyInfoEntries: [ModifyMyInfoEntry], successCB: any, failCB: any): void;
    /**
     * 是否全局免打扰
     * @returns {boolean}
     */
    isGlobalSlient(): boolean;
    /**
     * 设置全局免打扰
     * @param {boolean} silent
     * @param {function ()} successCB
     * @param failCB
     */
    setGlobalSlient(silent: boolean, successCB: () => any, failCB: any): void;
    /**
     * 是否隐藏通知详情
     * @returns {boolean}
     */
    isHiddenNotificationDetail(): boolean;
    /**
     * 设置或取消设置隐藏通知详情
     * @param {boolean} hide 是否隐藏通知详情
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setHiddenNotificationDetail(hide: boolean, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 是否隐藏群成员昵称
     * @param {string} groupId 群id
     * @returns {boolean}
     */
    isHiddenGroupMemberName(groupId: string): boolean;
    /**
     * 设置或取消设置隐藏群成员昵称
     * @param {string} groupId 群id
     * @param {boolean} hide 是否隐藏
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setHiddenGroupMemberName(groupId: string, hide: boolean, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 加入聊天室
     * @param {string} chatroomId 聊天室id
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    joinChatroom(chatroomId: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 退出聊天室
     * @param {string} chatroomId 聊天室id
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    quitChatroom(chatroomId: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取聊天室信息
     * @param {string} chatroomId 聊天是id
     * @param {number} updateDt 传当前时间对应的毫秒数
     * @param {function (ChatRoomInfo)} successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    getChatroomInfo(chatroomId: string, updateDt: number, successCB: (arg0: ChatRoomInfo) => any, failCB: any): Promise<void>;
    /**
     * 获取聊天室成员信息
     * @param {string} chatroomId 聊天室id
     * @param {number} maxCount 最多获取多少个聊天室成员信息
     * @param {function (ChatRoomMemberInfo)} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    getChatroomMemberInfo(chatroomId: string, maxCount: number, successCB: (arg0: ChatRoomMemberInfo) => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 创建频道
     * @param {string} name 频道名称
     * @param {string} portrait 频道头像的链接地址
     * @param {string} desc 描述
     * @param {string} extra 额外信息
     * @param {function (string)} successCB 创建成功，会回调通知channelId
     * @param {function (number)} failCB
     */
    createChannel(name: string, portrait: string, desc: string, extra: string, successCB: (arg0: string) => any, failCB: (arg0: number) => any): void;
    /**
     * 获取频道信息
     * @param {string} channelId 频道id
     * @param {boolean} refresh 是否强制刷新
     * @returns {ChannelInfo|NullChannelInfo}
     */
    getChannelInfo(channelId: string, refresh: boolean): ChannelInfo | NullChannelInfo;
    isEnableSecretChat(): boolean;
    isUserEnableSecretChat(): boolean;
    setUserEnableSecretChat(enable: any, successCB: any, failCB: any): void;
    /**
     * 修改频道信息
     * @param {string} channelId 频道id
     * @param {number} type 修改什么，可选值参考{@link ModifyChannelInfoType}
     * @param {string} newValue 修改后的值
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    modifyChannelInfo(channelId: string, type: number, newValue: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 搜索频道
     * @param {string} keyword 关键字
     * @param {boolean} fuzzy 是否模糊搜索
     * @param {function (keyword, [ChannelInfo])} successCB
     * @param {function (number)} failCB
     */
    searchChannel(keyword: string, fuzzy: boolean, successCB: (arg0: string, arg1: [ChannelInfo]) => any, failCB: (arg0: number) => any): void;
    /**
     * 是否已收听/关注某个频道
     * @param {string} channelId 频道id
     * @returns {boolean}
     */
    isListenedChannel(channelId: string): boolean;
    /**
     * 收听或取消收听频道
     * @param {string} channelId 频道id
     * @param {boolean} listen true，收听；false，取消收听
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    listenChannel(channelId: string, listen: boolean, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取自己创建的频道id列表
     * @returns {[string]}
     */
    getMyChannels(): [string];
    /**
     * @deprecated 已废弃，请使用{@link getRemoteListenedChannels}
     * 获取所收听的频道id列表
     * @returns {[string]}
     */
    getListenedChannels(): [string];
    /**
     * 从服务端获取所收听的频道id列表
     * @param {function([String])} successCB
     * @param {function(number)} failCB
     *
     */
    getRemoteListenedChannels(successCB: (arg0: [string]) => any, failCB: (arg0: number) => any): void;
    /**
     * 销毁频道
     * @param {string} channelId 频道id
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    destoryChannel(channelId: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取会话列表
     * @param {[number]} types 想获取的会话类型，可选值参考{@link ConversationType}
     * @param {[0]} lines 想获取哪些会话线路的会话，默认传[0]即可
     * @returns {[ConversationInfo]}
     */
    getConversationList(types: [number], lines: [0]): [ConversationInfo];
    /**
     * 获取会话详情
     * @param {Conversation} conversation
     * @returns {ConversationInfo}
     */
    getConversationInfo(conversation: Conversation): ConversationInfo;
    /**
     * 搜索会话
     * @param {string} keyword 关键字
     * @param {[number]} types 从哪些类型的会话中进行搜索，可选值可参考{@link ConversationType}
     * @param {[number]} lines 从哪些会话线路进行搜索，默认传[0]即可
     * @returns {[ConversationSearchResult]}
     */
    searchConversation(keyword: string, types?: [number], lines?: [number]): [ConversationSearchResult];
    /**
     * 删除会话
     * @param {Conversation} conversation 想删除的目标会话
     * @param {boolean} clearMsg 是否已删除的会话的消息
     * @returns {Promise<void>}
     */
    removeConversation(conversation: Conversation, clearMsg: boolean): Promise<void>;
    /**
     * 会话置顶或取消置顶
     * @param {Conversation} conversation 需要置顶或取消置顶的会话
     * @param {number} top > 0, 置顶，可以根据这个值进行置顶排序；0，取消置顶
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    setConversationTop(conversation: Conversation, top: number, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 会话免打扰或取消免打扰
     * @param {Conversation} conversation 目标会话
     * @param {boolean} silent true，设置为免打扰；false，取消免打扰
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    setConversationSlient(conversation: Conversation, silent: boolean, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 保存会话草稿
     * @param {Conversation} conversation 目标会话
     * @param {string} draft 草稿，传''时，相当于清楚会话草稿
     */
    setConversationDraft(conversation: Conversation, draft?: string): void;
    /**
     * 设置会话时间错，当会话不存在时，会创建一个新的会话。
     * @param {Conversation} conversation
     * @param {number} timestamp
     */
    setConversationTimestamp(conversation: Conversation, timestamp: number): void;
    /**
     * 获取未读消息数
     * @param {[number]} types 获取未读数时，包含哪些类型的会话，可选值参考{@link ConversationType}
     * @param {[number]} lines 获取未读数时，包含哪些会话线路，默认传[0]即可
     * @returns {UnreadCount}
     */
    getUnreadCount(types?: [number], lines?: [number]): UnreadCount;
    /**
     * 获取某个会话的未读消息数
     * @param {Conversation} conversation 目标会话
     * @returns {UnreadCount}
     */
    getConversationUnreadCount(conversation: Conversation): UnreadCount;
    /**
     * 清楚会话消息未读状态
     * @param {Conversation} conversation 目标会话
     */
    clearConversationUnreadStatus(conversation: Conversation): void;
    /**
     * 清楚会话消息中指定消息id之前的消息（包含）未读状态
     * @param {Conversation} conversation 目标会话
     * @param {int} messageId 消息id
     */
    clearUnreadStatusBeforeMessage(conversation: Conversation, messageId: int): void;
    /**
     * 将会话最后一条消息置为未读
     * @param {Conversation} conversation 会话
     * @param {boolean} syncToOtherClient 是否同步给其他端
     * @return {boolean} 是否操作成功
     */
    markConversationAsUnread(conversation: Conversation, syncToOtherClient: boolean): boolean;
    /**
     * 清除单条消息的未读状态
     * @param messageId
     */
    clearMessageUnreadStatus(messageId: any): void;
    /**
     * 清除所有消息的未读状态
     *
     * 特别注意1：本方法只清除了底层数据库中的未读状态，并未清理 UI 层会话列表中的未读状态，UI 层会话列表中的未读状态，需要手动重置。
     * 特别注意2：本方法不会触发{@link ConversationInfoUpdate} 事件
     */
    clearAllUnreadStatus(): void;
    /**
     * 设置媒体消息的状态为已播放
     * @param {number} messageId 消息id，不是消息uid!
     */
    setMediaMessagePlayed(messageId: number): void;
    /**
     * 设置消息本地扩展信息
     * @param {number} messageId 消息id，不是消息uid!
     * @param {string} extra 扩展信息
     */
    setMessageLocalExtra(messageId: number, extra: string): void;
    /**
     * 判断是否是好友
     * @param {string} userId 用户id
     * @returns {boolean}
     */
    isMyFriend(userId: string): boolean;
    /**
     * 获取星标用户id列表
     * @returns {[string]}
     */
    getFavUsers(): [string];
    /**
     *  判断用户是否是星标用户
     * @param {string} userId
     * @returns {boolean}
     */
    isFavUser(userId: string): boolean;
    /**
     * 设置或取消星标用户
     * @param {string} userId 用户id
     * @param {boolean} fav true，保存到通讯录；false，从通讯录移除
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    setFavUser(userId: string, fav: boolean, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 发送好友请求
     * @param {string} userId 目标用户id
     * @param {string} reason 发送好友请求的原因
     * @param {string} extra 请求的扩展信息
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    sendFriendRequest(userId: string, reason: string, extra: string, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 获取会话消息
     * @deprecated 请使用{@link getMessagesV2}
     * @param {Conversation} conversation 目标会话
     * @param {number} fromIndex messageId，表示从那一条消息开始获取
     * @param {boolean} before true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @return {[Message]} 会话消息列表，参考{@link Message}
     */
    getMessages(conversation: Conversation, fromIndex?: number, before?: boolean, count?: number, withUser?: string): [Message];
    /**
     * 获取消息
     * @deprecated 请使用{@link getMessagesExV2}
     * @param {[number]} conversationTypes 会话类型列表，可选值参考{@link  ConversationType}
     * @param {[number]} lines 会话线路列表
     * @param {number} fromIndex 本参数暂时无效! messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效! true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @return {[Message]} 会话消息列表，参考{@link Message}
     */
    getMessagesEx(conversationTypes: [number], lines: [number], fromIndex?: number, before?: boolean, count?: number, withUser?: string, contentTypes?: [number]): [Message];
    /**
     * 获取消息
     * @deprecated 请使用{@link getMessagesEx2V2}
     * @param {[number]} conversationTypes 会话类型列表，可选值参考{@link  ConversationType}
     * @param {[number]} lines 会话线路列表
     * @param {[number]} messageStatus 消息状态，可选值参考{@link MessageStatus}
     * @param {number} fromIndex 本参数暂时无效! messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效! true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @return {[Message]} 会话消息列表，参考{@link Message}
     */
    getMessagesEx2(conversationTypes: [number], lines: [number], messageStatus: [number], fromIndex?: number, before?: boolean, count?: number, withUser?: string): [Message];
    /**
     * 获取会话消息
     * @deprecated 请使用{@link getMessagesByTimestampV2}
     * @param {Conversation} conversation 目标会话
     * @param {[number]} contentTypes 消息类型，可选值参考{@link MessageContentType}
     * @param {number} timestamp 时间戳
     * @param {boolean} before true, 获取timestamp之前的消息，即更旧的消息；false，获取timestamp之后的消息，即更新的消息。都不包含timestamp对应的消息
     * @param {number} count 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @return {[Message]} 会话消息列表，参考{@link Message}
     */
    getMessagesByTimestamp(conversation: Conversation, contentTypes: [number], timestamp: number, before?: boolean, count?: number, withUser?: string): [Message];
    /**
     * 获取用户会话消息
     * @deprecated 请使用{@link getUserMessagesV2}
     * @param {string} userId 用户id
     * @param {Conversation} conversation 目标会话
     * @param {number} fromIndex 本参数暂时无效！ messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效！ true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @return
     */
    getUserMessages(userId: string, conversation: Conversation, fromIndex: number, before?: boolean, count?: number): any;
    /**
     * 获取用户消息
     * @deprecated 请使用{@link getUserMessagesExV2}
     * @param {string} userId 用户id
     * @param {[number]} conversationTypes 想获取的会话类型，可选值参考{@link ConversationType}
     * @param {[0]} lines 想获取哪些会话线路的会话，默认传[0]即可
     * @param {number} fromIndex 本参数暂时无效！ messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效！ true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效！ 获取多少条消息
     * @param {[number]} contentTypes 消息类型，可选值参考{@link MessageContentType}
     * @return
     */
    getUserMessagesEx(userId: string, conversationTypes: [number], lines: [0], fromIndex: number, before?: boolean, count?: number, contentTypes?: [number]): any;
    /**
     * 获取会话消息
     * @param {Conversation} conversation 目标会话
     * @param {number} fromIndex messageId，表示从那一条消息开始获取
     * @param {boolean} before true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @param {function (Message)} successCB
     * @param failCB
     */
    getMessagesV2(conversation: Conversation, fromIndex: number, before: boolean, count: number, withUser: string, successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取消息
     * @param {[number]} conversationTypes 会话类型列表，可选值参考{@link  ConversationType}
     * @param {[number]} lines 会话线路列表
     * @param {number} fromIndex 本参数暂时无效! messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效! true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {function (Message)} successCB
     * @param failCB
     */
    getMessagesExV2(conversationTypes: [number], lines: [number], fromIndex: number, before: boolean, count: number, withUser: string, contentTypes: [number], successCB: (arg0: Message) => any, failCB: any): void;
    /**
     *
     * @param {[number]} conversationTypes 会话类型列表，可选值参考{@link  ConversationType}
     * @param {[number]} lines 会话线路列表
     * @param {[number]} messageStatus 消息状态，可选值参考{@link MessageStatus}
     * @param {number} fromIndex 本参数暂时无效! messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效! true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @param {function (Message)} successCB
     * @param failCB
     */
    getMessagesEx2V2(conversationTypes: [number], lines: [number], messageStatus: [number], fromIndex: number, before: boolean, count: number, withUser: string, successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取会话消息
     * @param {Conversation} conversation 目标会话
     * @param {[number]} contentTypes 消息类型，可选值参考{@link MessageContentType}
     * @param {number} timestamp 时间戳
     * @param {boolean} before true, 获取timestamp之前的消息，即更旧的消息；false，获取timestamp之后的消息，即更新的消息。都不包含timestamp对应的消息
     * @param {number} count 获取多少条消息
     * @param {string} withUser 只有会话类型为{@link ConversationType#Channel}时生效, channel主用来查询和某个用户的所有消息
     * @param {function ([Message])} successCB
     * @param failCB
     */
    getMessagesByTimestampV2(conversation: Conversation, contentTypes: [number], timestamp: number, before: boolean, count: number, withUser: string, successCB: (arg0: [Message]) => any, failCB: any): void;
    /**
     * 获取用户会话消息
     * @param {string} userId 用户id
     * @param {Conversation} conversation 目标会话
     * @param {number} fromIndex 本参数暂时无效！ messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效！ true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效! 获取多少条消息
     * @param {function (Message)} successCB
     * @param failCB
     */
    getUserMessagesV2(userId: string, conversation: Conversation, fromIndex: number, before: boolean, count: number, successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取用户消息
     * @param {string} userId 用户id
     * @param {[number]} conversationTypes 想获取的会话类型，可选值参考{@link ConversationType}
     * @param {[0]} lines 想获取哪些会话线路的会话，默认传[0]即可
     * @param {number} fromIndex 本参数暂时无效！ messageId，表示从那一条消息开始获取
     * @param {boolean} before 本参数暂时无效！ true, 获取fromIndex之前的消息，即更旧的消息；false，获取fromIndex之后的消息，即更新的消息。都不包含fromIndex对应的消息
     * @param {number} count 本参数暂时无效！ 获取多少条消息
     * @param {[number]} contentTypes 消息类型，可选值参考{@link MessageContentType}
     * @param {function (Message)} successCB
     * @param failCB
     */
    getUserMessagesExV2(userId: string, conversationTypes: [number], lines: [0], fromIndex: number, before: boolean, count: number, contentTypes: [number], successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取会话第一条未读消息的消息id
     * @param {Conversation} conversation
     * @return {number}
     */
    getFirstUnreadMessageId(conversation: Conversation): number;
    /**
     * 已废弃，请使用{@link loadRemoteConversationMessages}
     * 获取会还的远程历史消息
     * @param {Conversation} conversation 目标会话
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {number | Long} beforeUid 消息uid，表示拉取本条消息之前的消息
     * @param {number} count
     * @param {function (Message)} successCB
     * @param failCB
     */
    loadRemoteMessages(conversation: Conversation, contentTypes: [number], beforeUid: number | Long, count: number, successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取会话的远程历史消息
     * @param {Conversation} conversation 目标会话
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {number | Long} beforeUid 消息uid，表示拉取本条消息之前的消息
     * @param {number} count
     * @param {function ([Message])} successCB
     * @param failCB
     */
    loadRemoteConversationMessages(conversation: Conversation, contentTypes: [number], beforeUid: number | Long, count: number, successCB: (arg0: [Message]) => any, failCB: any): void;
    /**
     * 获取会话的远程历史消息，仅 web 有效
     * @param {Conversation} conversation 目标会话
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {number | Long} beforeUid 消息uid，表示拉取本条消息之前的消息
     * @param {number} count
     * @param {boolean} filterLocalMessage 是否过滤本地已经存在的消息
     * @param {function ([Message])} successCB
     * @param failCB
     */
    loadRemoteConversationMessagesEx(conversation: Conversation, contentTypes: [number], beforeUid: number | Long, count: number, filterLocalMessage: boolean, successCB: (arg0: [Message]) => any, failCB: any): void;
    /**
     * 根据会话线路，获取远程历史消息
     * @param {number} line 会话线路
     * @param {number | Long} beforeUid 消息uid，表示拉取本条消息之前的消息
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {number} count
     * @param {function ([Message])} successCB
     * @param failCB
     */
    loadRemoteLineMessages(line: number, contentTypes: [number], beforeUid: number | Long, count: number, successCB: (arg0: [Message]) => any, failCB: any): void;
    /**
     * 根据消息 uid，获取远程消息
     * @param {Long |String} messageUid 消息uid
     * @param {function (Message)} successCB
     * @param failCB
     */
    loadRemoteMessage(messageUid: Long | string, successCB: (arg0: Message) => any, failCB: any): void;
    /**
     * 获取消息
     * @param {number} messageId 消息id
     * @returns {null|Message}
     */
    getMessageById(messageId: number): null | Message;
    /**
     * 获取消息
     * @param {Long|string|number} messageUid
     * @returns {null|Message}
     */
    getMessageByUid(messageUid: Long | string | number): null | Message;
    /**
     * 搜索消息
     * @param {Conversation} conversation 目标会话
     * @param {string} keyword 关键字
     * @param {string} withUser 目标用户
     * @returns {[Message]}
     */
    searchMessage(conversation: Conversation, keyword: string, withUser?: string): [Message];
    /**
     * 搜索消息
     * @param {Conversation} conversation 目标会话，如果为空搜索所有会话
     * @param {string} keyword 关键字
     * @param {boolean} desc 逆序排列
     * @param {int} limit 返回数量
     * @param {int} offset 偏移
     * @param {string} withUser 目标用户
     * @returns {Message[]}
     */
    searchMessageEx(conversation: Conversation, keyword: string, desc: boolean, limit: int, offset: int, withUser?: string): Message[];
    /**
     * 搜索消息
     * @param {Conversation} conversation 目标会话，如果为空搜索所有会话
     * @param {string} keyword 关键字
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {boolean} desc 逆序排列
     * @param {int} limit 返回数量
     * @param {int} offset 偏移
     * @param {string} withUser 目标用户
     * @returns {Message[]}
     */
    searchMessageByTypes(conversation: Conversation, keyword: string, contentTypes: [number], desc: boolean, limit: int, offset: int, withUser?: string): Message[];
    /**
     * 搜索消息
     * @param {Conversation} conversation 目标会话，如果为空搜索所有会话
     * @param {string} keyword 关键字
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {Long} 消息起始时间，如果为0，则忽略起始时间。
     * @param {Long} 消息结束时间，如果为0，测忽略结束时间。
     * @param {boolean} desc 逆序排列
     * @param {int} limit 返回数量
     * @param {int} offset 偏移
     * @param {string} withUser 目标用户
     * @returns {Message[]}
     */
    searchMessageByTypesAndTimes(conversation: Conversation, keyword: string, contentTypes: [number], startTime: any, endTime: any, desc: boolean, limit: int, offset: int, withUser?: string): Message[];
    /**
     * 搜索消息
     * @param {[number]} conversationTypes 会话类型列表，可选值参考{@link  ConversationType}
     * @param {[number]} lines 会话线路列表
     * @param {[number]} contentTypes 消息类型列表，可选值参考{@link MessageContentType}
     * @param {string} keyword 关键字
     * @param {number} fromIndex messageId，表示从那一条消息开始获取
     * @param {boolean} desc 逆序排列
     * @param {number} count 最大数量
     * @param {string} withUser 目标用户
     * @returns {[Message]}
     */
    searchMessageEx2(conversationTypes: [number], lines: [number], contentTypes: [number], keyword: string, fromIndex: number, desc: boolean, count: number, withUser?: string): [Message];
    /**
     * 发送消息
     * @param {Conversation} conversation 目标会话
     * @param {MessageContent} messageContent 具体的消息内容，一定要求是{@link MessageContent} 的子类，不能是普通的object
     * @param {[string]} toUsers 定向发送给会话中的某些用户；为空，则发给所有人；另外对单聊会话，本参数无效
     * @param {function (number, number)} preparedCB 消息已插入本地数据的回调，回调的两个参数表示：messageId, timestamp
     * @param {function (number, number)} progressCB 媒体上传进度回调，针对媒体消息，且媒体大于100K时有效，回调参数表示：uploaded, total
     * @param {function (number, number)} successCB 发送成功回调，回调参数表示：messageUid, timestamp
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    sendConversationMessage(conversation: Conversation, messageContent: MessageContent, toUsers?: [string], preparedCB?: (arg0: number, arg1: number) => any, progressCB?: (arg0: number, arg1: number) => any, successCB?: (arg0: number, arg1: number) => any, failCB?: (arg0: number) => any): Promise<void>;
    /**
     * 发送消息，参考{@link sendConversationMessage}
     * @param {Message} message 一定要求是{@link Message}类型
     * @param preparedCB
     * @param progressCB
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    sendMessage(message: Message, preparedCB: any, progressCB: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 发送消息，参考{@link sendMessage}
     * @param message
     * @param toUsers
     * @param preparedCB
     * @param progressCB
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    sendMessageEx(message: any, toUsers: any[], preparedCB: any, progressCB: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 发送已经保存的消息，参考{@link sendMessage}
     * @param message
     * @param expireDuration
     * @param successCB
     * @param failCB
     * @returns {Promise<void>}
     */
    sendSavedMessage(message: any, expireDuration: any, successCB: any, failCB: any): Promise<void>;
    /**
     * 取消发送消息，仅媒体类消息可以取消
     * @param messageId 消息ID
     * @returns 是否取消成功
     */
    cancelSendingMessage(messageId: any): any;
    /**
     * 撤回消息
     * @param {Long} messageUid
     * @param {function ()} successCB
     * @param {function (number)} failCB
     * @returns {Promise<void>}
     */
    recallMessage(messageUid: Long, successCB: () => any, failCB: (arg0: number) => any): Promise<void>;
    /**
     * 删除消息
     * @param {number} messageId 消息id
     * @returns {*}
     */
    deleteMessage(messageId: number): any;
    /**
     * 删除远程消息
     * @param {Long | string} msgUid 消息uid
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    deleteRemoteMessageByUid(msgUid: Long | string, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 更新远程消息消息内容，只有专业版支持。客户端仅能更新自己发送的消息，更新的消息类型不能变，更新的消息类型是服务配置允许更新的内容。Server API更新则没有限制。
     * @param {Long | string} msgUid 消息uid
     * @param {MessageContent} messageContent 具体的消息内容，一定要求是{@link MessageContent} 的子类，不能是普通的object
     * @param {boolean} distribute 是否重新分发给其他客户端
     * @param {boolean} updateLocal 是否更新本地消息内容
     * @param {function ()} successCB
     * @param {function (number)} failCB
     */
    updateRemoteMessageContent(msgUid: Long | string, messageContent: MessageContent, distribute: boolean, updateLocal: boolean, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 清除会话消息
     * @param {Conversation} conversation 目标会话
     * @returns {Promise<void>}
     */
    clearMessages(conversation: Conversation): Promise<void>;
    /**
     * 清除远程会话消息
     * @param {Conversation} conversation
     * @param {function ()} successCB
     * @param {function (error)} failCB
     * @return {Promise<void>}
     */
    clearRemoteConversationMessages(conversation: Conversation, successCB: () => any, failCB: (arg0: error) => any): Promise<void>;
    /**
     * 插入消息
     * @param {Conversation} conversation 目标会话
     * @param {MessageContent} messageContent 具体的消息内容，一定要求是{@link MessageContent} 的子类，不能是普通的object
     * @param {number} status 消息状态，可选值参考{@link MessageStatus}
     * @param {boolean} notify 是否触发onReceiveMessage
     * @param {Number} serverTime 服务器时间，精度到毫秒
     *
     * @return {Message} 插入的消息
     */
    insertMessage(conversation: Conversation, messageContent: MessageContent, status: number, notify?: boolean, serverTime?: number): Message;
    /**
     * 更新消息
     * @param {number} messageId 消息id
     * @param {MessageContent} messageContent 具体的消息内容，一定要求是{@link MessageContent} 的子类，不能是普通的object
     * @returns {Promise<void>}
     */
    updateMessageContent(messageId: number, messageContent: MessageContent): Promise<void>;
    /**
     * 更新消息状态
     * @param {number} messageId 消息id
     * @param {MessageStatus} status 消息状态，可选值参考{@link MessageStatus}
     */
    updateMessageStatus(messageId: number, status: MessageStatus): Promise<void>;
    /**
     * 上传媒体文件
     * @param {string} fileName
     * @param {string | File} fileOrData base64格式的dataUri 或者 File
     * @param {number} mediaType 媒体类型，可选值参考{@link MessageContentMediaType}
     * @param {function (string)} successCB 回调通知上传成功之后的url
     * @param {function (number)} failCB
     * @param {function (number, number)} progressCB
     * @returns {Promise<void>}
     */
    uploadMedia(fileName: string, fileOrData: string | File, mediaType: number, successCB: (arg0: string) => any, failCB: (arg0: number) => any, progressCB: (arg0: number, arg1: number) => any): Promise<void>;
    /**
     * 获取协议栈版本
     * @returns {String} 协议栈版本
     */
    getVersion(): string;
    /**
     * 获取经过认证的下载地址。
     */
    getAuthorizedMediaUrl(messageUid: any, mediaType: any, mediaPath: any, successCB: any, failCB: any): void;
    /**
     * 是否支持上传大文件上传。只有专业版才支持此功能。当支持大文件上传时，调用getUploadMediaUrl获取上传url，然后在应用层上传
     */
    isSupportBigFilesUpload(): any;
    /**
     * 获取上传链接。一般用户大文件上传。
     * @param {string} fileName
     * @param {number} mediaType 媒体类型，可选值参考{@link MessageContentMediaType}
     * @param {string} contentType HTTP请求的ContentType header，为空时默认为"application/octet-stream"
     * @param {function (string, string)} successCB 回调通知上传成功之后的url
     * @param {function (number)} failCB
     */
    getUploadMediaUrl(fileName: string, mediaType: number, contentType: string, successCB: (arg0: string, arg1: string) => any, failCB: (arg0: number) => any): void;
    /**
     * 微信小程序切到前台时调用应用切到了前台
     *
     */
    onForeground(): void;
    /**
     *
     * 是否开启了已读报告功能
     * @return {boolean}
     */
    isReceiptEnabled(): boolean;
    /**
     *
     * 是否开启了群组已读报告功能
     * @return {boolean}
     */
    isGroupReceiptEnabled(): boolean;
    /**
     * 当前用户是否开启消息回执
     * @return {boolean}
     */
    isUserReceiptEnabled(): boolean;
    /**
     * 判断是否是专业版IM服务
     * @return {boolean}
     */
    isCommercialServer(): boolean;
    /**
     * 判断是否应用禁止草稿同步
     * @return {boolean}
     */
    isGlobalDisableSyncDraft(): boolean;
    /**
     * 设置是否禁止草稿多端同步。
     * @param disable
     * @param successCB
     * @param failCB
     */
    setDisableSyncDraft(disable: any, successCB: any, failCB: any): void;
    /**
     * 是否禁止草稿同步。
     * @returns {boolean} 是否草稿同步。
     */
    isDisableSyncDraft(): boolean;
    /**
     * 设置当前用户是否开启消息回执
     * @param enable
     * @param successCB
     * @param failCB
     */
    setUserEnableReceipt(enable: any, successCB: any, failCB: any): void;
    /**
     * 获取会话的阅读状态。
     * @param conversation
     * @return {Map<string, Long>}
     */
    getConversationRead(conversation: any): Map<string, Long>;
    /**
     * 获取会话中的文件记录
     * @param {Conversation} conversation 会话
     * @param {String} fromUser 来源用户
     * @param {Long} beforeMessageUid 消息uid，表示获取此消息uid之前的文件记录
     * @param {int} order 排序。0 按照时间逆序；1 按照时间顺序；2 按照大小逆序；3 按照大小顺序。
     * @param {number} count 数量
     * @param {function (FileRecord[])} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    getConversationFileRecords(conversation: Conversation, fromUser: string, beforeMessageUid: Long, order: int, count: number, successCB: (arg0: FileRecord[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 获取我发送的文件记录
     * @param {Long} beforeMessageUid 消息uid，表示获取此消息uid之前的文件记录
     * @param {int} order 排序。0 按照时间逆序；1 按照时间顺序；2 按照大小逆序；3 按照大小顺序。
     * @param {number} count 数量
     * @param {function (FileRecord[])} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    getMyFileRecords(beforeMessageUid: Long, order: int, count: number, successCB: (arg0: FileRecord[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 删除文件记录
     * @param {Long} messageUid 文件对应的消息的uid
     * @param {function ()} successCB 成功回调
     * @param {function (number)} failCB 失败回调
     */
    deleteFileRecord(messageUid: Long, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 搜索远程文件记录
     * @param {string} keyword
     * @param {Conversation} conversation 会话，如果为空则获取当前用户所有收到和发出的文件记录
     * @param {string} fromUser 文件发送用户，如果为空则获取该用户发出的文件记录
     * @param {Long | string} beforeMessageId 起始消息的消息id
     * @param {int} order 排序。0 按照时间逆序；1 按照时间顺序；2 按照大小逆序；3 按照大小顺序。
     * @param {number} count
     * @param {function (FileRecord[])} successCB
     * @param {function (number)} failCB
     */
    searchFiles(keyword: string, conversation: Conversation, fromUser: string, beforeMessageId: Long | string, order: int, count: number, successCB: (arg0: FileRecord[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 搜索我自己的远程文件记录
     * @param keyword
     * @param beforeMessageUid
     * @param {int} order 排序。0 按照时间逆序；1 按照时间顺序；2 按照大小逆序；3 按照大小顺序。
     * @param count
     * @param successCB
     * @param failCB
     */
    searchMyFiles(keyword: any, beforeMessageUid: any, order: int, count: any, successCB: any, failCB: any): void;
    /**
     * 获取host
     */
    getHost(): any;
    /**
     * 获取加密后的clientId
     */
    getEncodedClientId(): any;
    /**
     *  加密数据。
     * @param {string} data 将要编码的数据
     * @returns {string} 编码结果，base64格式
     */
    encodeData(data: string): string;
    /**
     * 解密数据。
     * @param {string} encodedData 将要解码的数据，base64格式
     * @returns {null | string} 解码之后的数据
     */
    decodeData(encodedData: string): null | string;
    /**
     * 发送会议相关请求
     * @param sessionId
     * @param roomId
     * @param request
     * @param data
     * @param callback
     */
    sendConferenceRequest(sessionId: any, roomId: any, request: any, data: any, callback: any): void;
    /**
     * 发送会议相关请求
     * @param sessionId
     * @param roomId
     * @param request
     * @param data
     * @param advance
     * @param callback
     */
    sendConferenceRequestEx(sessionId: any, roomId: any, request: any, data: any, advance: any, callback: any): void;
    /**
     * 是否开启在线状态
     * @returns {boolean}
     */
    isUserOnlineStateEnabled(): boolean;
    /**
     * 订阅目标的在线状态。
     * @param {number} type 会话类型， 支持{@link ConversationType.Single}和{@link ConversationType.Group}
     * @param {string[]} targets 会话类型为单聊时，是用户 id列表；会话类型为群组时，是群组 id 列表
     * @param {number} duration 关注时间长度，单位是秒
     * @param {function(UserOnlineState[])} successCB
     * @param {function(number)} failCB
     */
    watchOnlineState(type: number, targets: string[], duration: number, successCB: (arg0: UserOnlineState[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 取消订阅目标的在线状态。
     * @param {number} type 会话类型， 支持{@link ConversationType.Single}和{@link ConversationType.Group}
     * @param {string[]} targets 会话类型为单聊时，是用户 id列表；会话类型为群组时，是群组 id 列表
     * @param {function(UserOnlineState[])} successCB
     * @param {function(number)} failCB
     */
    unwatchOnlineState(type: number, targets: string[], successCB: (arg0: UserOnlineState[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 设置当前用户的自定义状态。
     * @param {number} customState 自定义状态值
     * @param {String} customText 只定义状态文本
     * @param {function()} successCB
     * @param {function(number)} failCB
     */
    setMyCustomState(customState: number, customText: string, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 获取AuthCode。请参考 https://gitee.com/wfchat/open-platform
     * @param {String} appId 应用ID
     * @param {number} appType 应用类型
     * @param {String} host 应用host
     * @param {function(String)} successCB
     * @param {function(number)} failCB
     */
    getAuthCode(appId: string, appType: number, host: string, successCB: (arg0: string) => any, failCB: (arg0: number) => any): void;
    requireLock(lockId: any, duration: any, successCB: any, failCB: any): void;
    /**
     * 释放应用全局锁
     * @param {String} lockId 锁的ID
     * @param {function()} successCB
     * @param {function(number)} failCB
     */
    releaseLock(lockId: string, successCB: () => any, failCB: (arg0: number) => any): void;
    /**
     * 是否开启服务互联互通功能
     * @return {boolean}
     */
    isEnableMesh(): boolean;
    /**
     * 获取域信息
     * @param {string} domainId
     * @param {boolean} refresh 是否刷新用户信息，如果刷新的话，且用户信息有更新，会通过{@link eventEmitter}进行通知，事件的名字是{@link EventType.DomainInfosUpdate }
     * @return {DomainInfo}
     */
    getDomainInfo(domainId: string, refresh?: boolean): DomainInfo;
    /**
     * 从服务端拉取 IM 域列表
     * @param {function (DomainInfo[])} successCB
     * @param {function (number)} failCB
     */
    loadRemoteDomains(successCB: (arg0: DomainInfo[]) => any, failCB: (arg0: number) => any): void;
    /**
     * 从服务端重新拉取 IM 域信息
     * @param {string} domainId 域 id
     * @param {string|number|Long} updateDt 本地的 domainInfo 的更新时间
     * @param {function (DomainInfo)} successCB
     * @param {function (number)} failCB
     */
    reloadDomainInfoFromRemote(domainId: string, updateDt: string | number | Long, successCB: (arg0: DomainInfo) => any, failCB: (arg0: number) => any): void;
    _getStore(): any;
    /**
     * utf8转base64
     * @param {string} str
     * @returns {string}
     */
    utf8_to_b64(str: string): string;
    /**
     * base64转utf8
     * @param {string} str
     * @returns {string}
     */
    b64_to_utf8(str: string): string;
    b64_to_arrayBuffer(str: any): any;
    arrayBuffer_to_b64(data: any): string;
    unescape(str: any): string;
    escape(str: any): any;
    defaultUserPortrait(userInfo: any): string;
    defaultGroupPortrait(groupInfo: any): string;
    /**
     * 双网场景下，是否连到了主网。
     * @returns {boolean}
     */
    connectedToMainNetwork(): boolean;
}
export default self;
declare const self: WfcManager;
