import { EventEmitter } from 'eventemitter3';
import { NIMToolAPI, NIMAppDataType, AudioInfo, GetAudioTextCallback, FilterClientAntispamCallback } from '../nim_def/tool_def';
import { NIMResCode } from '../nim_def/client_def';
export declare interface NIMToolEvents {
}
export declare class NIMTool extends EventEmitter<NIMToolEvents> {
    tool: NIMToolAPI;
    constructor();
    /** 注册全局回调 */
    initEventHandlers(): void;
    /** 获取SDK里app account对应的app data目录（各个帐号拥有独立的目录，其父目录相同）
     * @param app_account APP accountId。如果传入空字符串，则将获取到各个帐号目录的父目录（谨慎删除！）
     * @return std::string 返回的目录路径(UTF8)
     */
    getUserAppdataDir(appAccount: string): string;
    /** 获取SDK里app account对应的具体类型的app data目录（如图片消息文件存放目录，语音消息文件存放目录等），需要调用nim_free_buf(void *data)释放内存
     * @param app_account APP account。如果传入空字符串，则返回结果为空
     * @param appdata_type 具体类型的app data。见NIMAppDataType定义
     * @return std::string返回的目录路径（目录可能未生成，需要app自行判断是否已生成）
     */
    getSpecificAppdataDir(appAccount: string, appdataType: NIMAppDataType): string;
    /** 获取本地存储路径
     * @return std::string 返回的目录路径(UTF8)
     */
    getLocalAppdataDir(): string;
    /** 获取安装目录（SDK DLL所在的当前目录）
     * @return std::string 返回的目录路径(UTF8)
     */
    getCurModuleDir(): string;
    /** 计算md5
     * @param input 需要计算md5的内容
     * @return std::string 返回的md5
     */
    getMd5(input: string): string;
    /** 计算文件的md5
     * @param file_path 文件完整路径，UTF-8
     * @return std::string 返回的md5
     */
    getFileMd5(filePath: string): string;
    /** 生成UUID
     * @return std::string 返回的UUID
     */
    getUuid(): string;
    /** 语音转文字
     * @param audio_info 语音信息
     * @param cb 语音转文字回调
     * @param jsonExtension json扩展参数（备用，目前不需要）
     * @return boolean 检查参数如果不符合要求则返回失败
     * @note
     * <pre>
     * 200:成功
     * 403:没有权限
     * 414:参数错误
     * 500:未知错误
     * 6101:语音转码解析失败
     * 6102:语音时长过长（超过60s
     * 6103:服务不可用
     * 6104:audioUrl不合法
     * </pre>
     */
    getAudioTextAsync(audioInfo: AudioInfo, cb: GetAudioTextCallback | null, jsonExtension: string): Promise<[NIMResCode, string] | null>;
    /** 客户端本地反垃圾
     * @param text 文本内容，UTF-8
     * @param replace_str 进行替换的字符串，UTF-8
     * @param lib_name 词库名称，UTF-8
     * @param callback 回调函数
     * @return
     * @note
     * <pre>
     * 回调函数ret
     * 1：敏感词已被替换；
     * 2：含有敏感词不允许发送；
     * 3：需要将内容设置在消息结构的反垃圾字段里，由服务器过滤
     * </pre>
     */
    filterClientAntispam(text: string, replaceString: string, libName: string, cb: FilterClientAntispamCallback | null): Promise<[boolean, NIMResCode, string]>;
    parseStringToJsonObject(jsonString: string): object;
}
