import { AudioMixObserver, AudioVideoObserver, ConsoleLogger, DefaultDeviceController, DefaultMeetingSession, DeviceChangeObserver, LogLevel } from 'amazon-chime-sdk-js'; import { GetVoiceSign } from '../typings/live/GetVoiceSign'; import { RTCType } from '../typings/rtc/type'; import { CoreRTC } from './CoreRTC'; /** * 浏览器端 Amazon Chime SDK RTC 实现 * * 基于 Amazon Chime SDK for JavaScript 实现的浏览器端 RTC 类。 * 适用于在浏览器环境中使用 Amazon Chime 进行实时语音通信。 * * @example * ```typescript * const rtc = new BrowserRTC4Chime({ * getVoiceSign: async (params) => { * const response = await fetch('/api/get-voice-sign', { * method: 'POST', * body: JSON.stringify(params) * }) * return response.json() * }, * logLevel: LogLevel.INFO * }) * * // 加入房间 * await rtc.join({ * voiceId: 'voice-id', * userId: 'user-id', * roomId: 'room-id', * type: RTCType.RealseeBrowserChimeRTC * }) * ``` */ export declare class BrowserRTC4Chime extends CoreRTC { type: RTCType; joined: boolean; micro: boolean; voiceId: string; userId: string; logger: ConsoleLogger; deviceController: DefaultDeviceController; meetingSession: DefaultMeetingSession | undefined; audioInput: MediaDeviceInfo | undefined; audioOutput: MediaDeviceInfo | undefined; deviceChangeObserver: DeviceChangeObserver; audioVideoObserver: AudioVideoObserver; audioMixObserver?: AudioMixObserver; private _getVoiceSign; private _autoPlayConfirm; private $dom; private $audio; /** * 创建 BrowserRTC4Chime 实例 * * @param options 配置选项 * @param options.getVoiceSign 获取语音签名的函数,必需 * @param options.autoPlayConfirm 自动播放确认回调(可选),用于处理浏览器的自动播放策略 * @param options.logLevel 日志级别(可选),默认为 LogLevel.INFO */ constructor(options: { getVoiceSign: GetVoiceSign; autoPlayConfirm?: (opts: { onConfirm: () => void; }) => void; logLevel?: LogLevel; }); /** * 初始化 DOM 元素(内部方法) * 创建并挂载 audio 标签到页面 */ _initDom: () => void; /** * 初始化事件监听器 * * 设置设备变化、音视频事件等监听器 */ initObservers: () => void; /** * 加入语音会议 * @param options * @returns */ join(options: { voiceId: string; userId: string; roomId: string | number | undefined; type: RTCType; }): Promise; /** * 注册rtc事件 */ _registerRtcEvent: () => void; quit(): Promise; detectMicro(): Promise; toggleMicro(flag?: boolean): Promise; shock(): void; }