import { ZegoRangeAudioMode, ZegoRangeAudioEvent, ZegoRangeAudioUserUpdateCheckConfig, ZegoRangeAudioSpeakMode, ZegoRangeAudioListenMode } from './ZegoRangeAudioEntity.web';
import { ZegoStreamView } from './ZegoStreamView.web';
import { AiDenoiseMode, ZegoVoiceChangerPreset } from './ZegoVoiceChangerEntity.web';
/**
 * 范围语音
 *
 * 详情描述: 常用于语音游戏场景中，用户可通过创建的范围语音实例对象使用范围语音相关功能。
 *
 */
export declare class ZegoExpressRangeAudio {
    private static instance;
    private _zgp_zegoAudioListener;
    /**
     * @param engine -
     */
    static getInstance(engine: any, _zgp_logger: any): ZegoExpressRangeAudio;
    /**
     * 范围语音开启或关闭 AI 降噪。
     *
     * 支持版本：2.21.0。
     *
     * 详情描述：对麦克风声音进行 AI 降噪处理。
     *
     * 业务场景：推流前或推流中切换 AI 降噪。
     *
     * 默认值：无
     *
     * 调用时机：调用接口 createStream 创建流成功后。
     *
     * 注意事项：
     * 1. 目前使用 AI 降噪功能需要联系 ZEGO 技术支持进行特殊编包；
     * 2. 目前仅支持 PC 端使用，移动端暂不支持；
     *
     * @param enable 开启/关闭 AI 降噪
     *
     * @return 标识接口是否调用成功。失败原因可能是浏览器不支持或没有使用特殊编包。
     */
    enableAiDenoise(enable: boolean): boolean;
    setAiDenoiseMode(mode: AiDenoiseMode): boolean;
    /**
     * 是否检查范围内用户的变更。
     *
     * 支持版本：2.22.0 及以上
     *
     * 详情描述：是否检查范围内用户的变更。
     *
     * 调用时机/通知时机：调用接口 createRangeAudioInstance 创建 ZegoExpressRangeAudio 实例后。
     *
     * 相关回调：audioSourceWithinRangeUpdate。
     *
     * @param update 是否开启。
     * @param config? 检查范围内用户变更的配置。
     */
    enableAudioSourceUpdateChecker(update: boolean, config?: ZegoRangeAudioUserUpdateCheckConfig): void;
    /**
     * 注册回调事件。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：用于处理 SDK 主动通知开发者回调的接口，通过注册不同 event 的事件，可以收到不同功能的回调。可监听的事件回调可以通过 ZegoRangeAudioEvent 查看。
     *
     * Note: 业务场景：用于注册范围语音功能相关的业务事件的回调处理。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例之后并且在调用接口 loginRoom 登录房间之前。
     *
     * Note: 注意事项：同样的事件可以注册多个, 相同的注册事件，会根据注册的先后顺序依次触发。
     *
     * Note: 相关接口：调用接口 off 来注销对应回调事件处理。
     *
     * @param event 监听事件名。
     * @param callBack 回调函数。
     *
     * @return 注册是否成功。
     */
    on<K extends keyof ZegoRangeAudioEvent>(event: K, callBack: ZegoRangeAudioEvent[K]): boolean;
    /**
     * 注销回调事件。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：用于处理 SDK 主动通知开发者回调的接口，通过注册不同 event 的事件，可以收到不同功能的回调。用于删除注册的同一类回调事件。
     *
     * Note: 业务场景：用于注销范围语音功能相关的业务事件的回调处理。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例之后。
     *
     * Note: 注意事项：如果没有传要注销的回调方法，将会注销所有该事件的回调。
     *
     * @param event 监听事件名。
     * @param callBack 回调函数。
     *
     * @return 注销回调是否成功。
     */
    off<K extends keyof ZegoRangeAudioEvent>(event: K, callBack?: ZegoRangeAudioEvent[K]): boolean;
    /**
     * 设置音频接收距离的最大范围。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：设置音频接收最大距离范围，超过该范围的音源声音会听不见，不设置的情况默认是无限范围。
     *
     * Note: 业务场景：范围语音中设置收听者的听觉范围。
     *
     * Note: 默认值：没有调用接口时默认是无距离限制，即听见房间内所有人的声音。
     *
     * Note: 注意事项: 该范围只对非同小队的发声者生效。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建 ZegoExpressRangeAudio 实例后。
     *
     * @param range 音频范围, 取值必须大于等于 0。
     */
    setAudioReceiveRange(range: number): void;
    /**
     * 更新听者的位置和朝向。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述: 自身的位置和朝向，以便 SDK 计算出用户与音源距离以及左右耳立体声效果。
     *
     * Note: 业务场景：当用户在游戏中操作的角色在世界地图中移动时，更新角色的位置信息以及头部朝向。
     *
     * Note: 注意事项：在调用 enableSpeaker 打开扬声器之前，如果没有调用 updateSelfPosition 设置位置信息，则无法接收除小队以外其他人的声音。
     *
     * Note: 调用时机：创建 ZegoExpressRangeAudio 实例后和调用接口，调用接口 enableSpeaker 之前。
     *
     * @param position 自身在世界坐标系中的坐标，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     * @param axisForward 自身坐标系前轴的单位向量，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     * @param axisRight 自身坐标系右轴的单位向量，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     * @param axisUp 自身坐标系上轴的单位向量，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     */
    updateSelfPosition(position: number[], axisForward: number[], axisRight: number[], axisUp: number[]): void;
    /**
     * 添加或更新音源位置信息。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：设置 userID 对应的音源在世界地图位置，以便 SDK 计算听者与音源的距离和方位。
     *
     * Note: 业务场景：更新发声用户在游戏地图坐标中的位置。
     *
     * Note: 调用时机：调用 loginRoom 登录房间后调用，登出房间后会清空记录的音源信息。
     *
     * @param userID 发声者用户 ID。
     * @param position 发声者在世界坐标系中的坐标，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     */
    updateAudioSource(userID: string, position: number[]): void;
    /**
     * 开关 3D 音效。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：开启 3D 音效后将根据发声者相当于听者的位置模拟实际空间中的声音效果，可直观感受到就是音源远近和方位发生变化时，声音大小和左右声音差所产生的变化。enable 为true 时开启 3D 音效，为 false 时关闭 3D 音效。
     *
     * Note: 业务场景：第一人称射击游戏或社交场景游戏中听声辨位功能。
     *
     * Note: 默认值：在没有调用该接口前，默认是关闭3D音效。
     *
     * Note: 使用限制: 3D 音效只对小队以外的人的声音起作用。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 初始化实例后。
     *
     * Note: 相关接口:  开启 3D 音效后，可以调用 updateSelfPositon 和 updateAudioSource 更新位置和朝向来改变立体声效果。
     *
     * @param enable 是否开启，默认值是 true
     */
    enableSpatializer(enable: boolean): void;
    /**
     * 开关麦克风。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：enable 为 true 时开启麦克风并推送音频流，为 false 时关闭麦克风并停止推送音频流。
     *
     * Note: 业务场景：用户在房间内打开或关闭麦克风交流。
     *
     * Note: 默认值：在没有调用接口前，默认是关闭麦克风。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例和调用接口 loginRoom 登录房间成功后。
     *
     * Note: 相关回调：通过回调 microphoneStateUpdate 来获取麦克风开关状态变化。
     *
     * @param enable 是否开启，默认值是 true
     */
    enableMicrophone(enable: boolean): void;
    /**
     * 指定麦克风设备。
     *
     * Note: 支持版本：2.17.0 及以上
     *
     * Note: 详情描述：通过传入麦克风设备的 deviceID 来指定开启麦克风时使用的设备，deviceID 可以通过 ZegoExpressEngine.getMicrophones 接口获取。
     *
     * Note: 业务场景：切换使用的麦克风设备。
     *
     * Note: 默认值：在没有调用接口前，使用的是系统默认指定的麦克风设备。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例后。
     *
     * Note: 相关接口：获取麦克风设备列表接口 getMicrophones。
     *
     * @param deviceID 麦克风设备 ID。
     *
     * @return 异步返回布尔值，表示切换设备是否成功。
     */
    selectMicrophone(deviceID: string): Promise<boolean>;
    /**
     * 指定扬声器设备。
     *
     * Note: 支持版本：2.19.0 及以上
     *
     * Note: 详情描述：通过传入扬声器设备的 deviceID 来指定范围语音播放音频使用的设备，deviceID 可以通过 ZegoExpressEngine.getSpeakers 接口获取。
     *
     * Note: 业务场景：范围语音切换使用的扬声器设备。
     *
     * Note: 默认值：在没有调用接口前，使用的是系统默认指定的扬声器设备。
     *
     * Note: 注意事项：该接口当前只支持 PC 端 Google Chrome 浏览器使用。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例后。
     *
     * Note: 相关接口：获取扬声器设备列表接口 getSpeakers。
     *
     * @param deviceID 扬声器设备 ID。
     */
    selectSpeaker(deviceID: string): void;
    /**
     * 开关扬声器。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：开启扬声器后会接收房间内其他开启麦克风的音源声音，enable 为 true 时开始拉取和播放可拉取的音频流，为 false 时停止拉取和播放音频流。
     *
     * Note: 业务场景：用户选择是否接收其他人的音频。
     *
     * Note: 默认值：在没有调用接口前，默认是关闭接收音频。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建实例和调用接口 loginRoom 登录房间成功后。
     *
     * @param enable 是否开启，默认值是 true
     */
    enableSpeaker(enable: boolean): void;
    /**
     * 设置范围语音的高阶自定义模式。
     *
     * Note: 支持版本：2.24.0 及以上
     *
     * Note: 详情描述：可以分别设置发声模式和收听模式，以控制在世界和小队中的发声和收听行为。
     *
     * Note: 业务场景：用户可通过选择发声模式来决定谁能收听到他的声音，也可通过选择收听模式来决定收听谁的声音。
     *
     * Note: 默认值：没有调用该接口时，默认使用 “发声到所有” 模式和 “收听所有” 模式，也就是旧范围语音模式的 “全世界” 模式。
     *
     * Note: 调用时机：通过 createRangeAudioInstance 初始化实例后。
     *
     * Note: 相关接口：当希望收听来自世界的声音时，需要设置声音接收范围 [setAudioReceiveRange]。当希望在小队中发声和收听时，需要设置 [setTeamID] 加入对应小队。
     *
     * Note: 使用限制：1. 不能与 [setRangeAudioMode] 混用；2. 与2.24.0之前的版本无法兼容。
     *
     * @param speakMode 范围语音发声模式，mode 为 0 表示发送所有人，为 1 表示仅范围内，为 2 表示仅小队。
     * @param listenMode 范围语音收听模式，mode 为 0 表示收听所有人，为 1 表示仅范围内，为 2 表示仅小队。
     */
    setRangeAudioCustomMode(speakMode: ZegoRangeAudioSpeakMode, listenMode: ZegoRangeAudioListenMode): void;
    /**
     * 设置范围语音模式。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：设置收听模式，可设置为“全世界”模式或“仅小队”模式。
     *
     * Note: 业务场景：用户想要只在小队范围交流或与可与房间内所有人交流。
     *
     * Note: 默认值：在不调接口设置时默认是“全世界”，可以与所有人交流。
     *
     * Note: 调用时机：通过 createRangeAudioInstance 初始化实例后。
     *
     * Note: 相关接口：要调接口 setTeamID 加入对应小队才能听到小队内的声音。
     *
     * @param mode 收听模式，mode 为 0 表示收听所有人，为 1 表示仅小队
     */
    setRangeAudioMode(mode: ZegoRangeAudioMode): void;
    /**
     * 设置队伍 ID。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：设置队伍 ID 后，将能与同一队伍其他用户交流，且声音不会随距离方向产生变化。
     *
     * Note: 业务场景：用户想要加入队伍交流或退出队伍。
     *
     * Note: 默认值：默认值是 undefined , 表示不加入队伍。
     *
     * Note: 调用时机：通过 createRangeAudioInstance 初始化实例后。
     *
     * Note: 注意事项：参数 teamID 的最大长度为 64 字节。
     *
     * Note: 相关接口：调接口 etRangeAudioMode 设置为”仅小队“模式时只有队伍内进行交流。
     *
     * @param teamID 队伍 ID，最大长度为 64 字节的字符串。
     */
    setTeamID(teamID?: string): void;
    /**
     * 设置 SDK 内部实时更新位置的频率。
     *
     * Note: 支持版本：2.19.0 及以上
     *
     * Note: 详情描述：设置 SDK 内部实时更新位置的频率最小 15ms。
     *
     * Note: 业务场景：更新位置后，对音频渐变灵敏度要求很高。
     *
     * Note: 默认值：默认 100ms。
     *
     * Note: 调用时机：通过 createRangeAudioInstance 初始化实例后。
     *
     * @param frequency 更新频率，取值必须大于 15ms。
     */
    setPositionUpdateFrequency(frequency: number): void;
    /**
     * 设置范围语音本地播放音量。
     *
     * Note: 支持版本：2.19.0 及以上
     *
     * Note: 详情描述：设置范围语音本地播放音量。
     *
     * Note: 默认值：100。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建 ZegoExpressRangeAudio 实例后。
     *
     * @param volume 音量大小，取值范围 [0,200] 。
     */
    setRangeAudioVolume(volume: number): void;
    /**
     * 传入媒体流，设置变声
     *
     * 支持版本：2.24.0
     *
     * 详情描述：将推送的媒体流进行变声处理。
     *
     * 业务场景：推流前或推流中切换变声处理。
     *
     * 默认值：无
     *
     * 调用时机：调用接口 createStream 创建流成功后。
     *
     * 注意事项：
     * 1. 目前使用变声功能需要联系 ZEGO 技术支持进行特殊编包；
     * 2. 目前仅支持 PC 端使用，移动端暂不支持；
     * 3. 目前仅支持对特定的一条流进行变声处理，不支持同时对多条流同时变声；
     * @param preset 变声模式
     */
    setVoiceChangerPreset(preset: ZegoVoiceChangerPreset): boolean;
    /**
     * 传入媒体流，设置变声
     *
     * 支持版本：3.0.0
     *
     * 详情描述：将推送的媒体流进行变声自定义参数设置。
     *
     * 业务场景：推流前或推流中切换变声自定义参数设置。
     *
     * 默认值：无
     *
     * 调用时机：调用接口 createStream 创建流成功后。
     *
     * 注意事项：
     * 1. 目前使用变声功能需要联系 ZEGO 技术支持进行特殊编包；
     * 2. 目前仅支持 PC 端使用，移动端暂不支持；
     * 3. 目前仅支持对特定的一条流进行变声处理，不支持同时对多条流同时变声；
     * @param voiceParam 变声参数
     */
    setVoiceChangerParam(voiceParam: number): boolean;
    /**
     * 判断 AudioContext 对象是否已启用。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：该接口主要是为了处理浏览器对自动播放策略的兼容性问题。通过接口 isAudioContextRunning 检测当前的 AudioContext 对象是否启用，如果没有启用将不支持自动播放声音。
     *
     * Note: 调用时机：调用 createRangeAudioInstance 创建实例后。
     *
     * Note: 相关接口：如果 AudioContext 对象没有启用，可以通过接口 resumeAudioContext 重新启用 AudioContext 对象。
     *
     * @return AudioContext 对象是否启用
     */
    isAudioContextRunning(): boolean;
    /**
     * 重新启用内部的 AudioContext 对象。
     *
     * Note: 支持版本：2.10.0 及以上
     *
     * Note: 详情描述：该接口主要是为了处理浏览器对自动播放策略的兼容性问题。若通过接口 isAudioContextRunning 检测当前的 AudioContext 对象没有启用，可以通过该接口重新启用。
     *
     * Note: 调用时机：调用 createRangeAudioInstance 创建实例后。
     *
     * Note: 注意事项：该接口必须要在 JavaScript 的点击事件中调用才会生效。
     *
     * Note: 相关接口：通过接口 isAudioContextRunning 检测当前的 AudioContext 对象没有启用。
     *
     * @return 是否重启成功
     */
    resumeAudioContext(): Promise<boolean>;
    /**
     * 设置拉流音频发送范围。
     *
     * Note: 支持版本：2.20.2 及以上
     *
     * Note: 详情描述：设置音频发送最大距离范围，超过该范围的音源声音会听不见。
     *
     * Note: 业务场景：范围语音中设置拉流发声源的发声范围。
     *
     * Note: 默认值：默认为 0。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建 ZegoExpressRangeAudio 实例后。
     *
     * @param view 拉流播放组件。
     * @param range 发送范围, 取值必须大于等于 0。
     */
    setStreamVocalRange(view: ZegoStreamView, range: number): void;
    /**
     * 更新拉流的位置。
     *
     * Note: 支持版本：2.21.0 及以上
     *
     * Note: 详情描述：设置拉流发声源对应的音源在世界地图位置，以便 SDK 计算听者与音源的距离和方位。
     *
     * Note: 业务场景：更新自定义发声源在游戏地图坐标中的位置。
     *
     * Note: 调用时机：调用 loginRoom 登录房间后调用，登出房间后会清空记录的音源信息。
     *
     * @param view 发声源，传播放 RTC 拉流的 ZegoStreamView。
     * @param position 发声者在世界坐标系中的坐标，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     */
    updateStreamPosition(view: ZegoStreamView, position: number[]): void;
    /**
     * 设置自定义发声源发送范围。
     *
     * Note: 支持版本：2.20.2 及以上
     *
     * Note: 详情描述：设置音频发送最大距离范围，超过该范围的音源声音会听不见。
     *
     * Note: 业务场景：范围语音中设置自定义发声源的发声范围。
     *
     * Note: 默认值：默认为 0。
     *
     * Note: 调用时机：调用接口 createRangeAudioInstance 创建 ZegoExpressRangeAudio 实例后。
     *
     * @param media <video> 或 <audio> 标签对象。
     * @param range 发送范围, 取值必须大于等于 0。
     */
    setCustomSourceVocalRange(media: HTMLMediaElement, range: number): void;
    /**
     * 添加或更新自定义发声源位置信息。
     *
     * Note: 支持版本：2.21.0 及以上
     *
     * Note: 详情描述：设置自定义发声源对应的音源在世界地图位置，以便 SDK 计算听者与音源的距离和方位。
     *
     * Note: 业务场景：更新自定义发声源在游戏地图坐标中的位置。
     *
     * Note: 调用时机：调用 loginRoom 登录房间后调用，登出房间后会清空记录的音源信息。
     *
     * @param media 发声源，传播放本地或在线音频文件 <video> 或 <audio> 标签对象。
     * @param position 发声者在世界坐标系中的坐标，参数是长度为 3 的 number 数组，三个值依次表示前、右、上的坐标值。
     */
    updateCustomSourcePosition(media: HTMLMediaElement, position: number[]): void;
}
