import { type CodegenTypes, type TurboModule, TurboModuleRegistry, } from 'react-native'; type AudioChunkEventT = { chunkId: number; data: string; streamId: number; }; type InputAudioStreamErrorEventT = { error: string; streamId: number; }; type SamplePlayerErrorEventT = { error: string; playerId: number; }; export interface Spec extends TurboModule { configAudioSystem(): Promise; getConstants(): { // These are common for Android and iOS. AUDIO_FORMAT_PCM_8BIT: number; AUDIO_FORMAT_PCM_16BIT: number; AUDIO_FORMAT_PCM_FLOAT: number; CHANNEL_IN_MONO: number; CHANNEL_IN_STEREO: number; IS_MAC_CATALYST: boolean; // These are currently Android-only. AUDIO_SOURCE_CAMCODER?: number; AUDIO_SOURCE_DEFAULT?: number; AUDIO_SOURCE_MIC?: number; AUDIO_SOURCE_REMOTE_SUBMIX?: number; AUDIO_SOURCE_UNPROCESSED?: number; AUDIO_SOURCE_VOICE_CALL?: number; AUDIO_SOURCE_VOICE_COMMUNICATION?: number; AUDIO_SOURCE_VOICE_DOWNLINK?: number; AUDIO_SOURCE_VOICE_PERFORMANCE?: number; AUDIO_SOURCE_VOICE_RECOGNITION?: number; AUDIO_SOURCE_VOICE_UPLINK?: number; }; getInputAvailable(): Promise; listen( streamId: number, audioSource: number, // Ignored on iOS. sampleRate: number, channelConfig: number, audioFormat: number, samplingSize: number, ): Promise; muteInputStream(streamId: number, muted: boolean): void; readonly onAudioChunk: CodegenTypes.EventEmitter; readonly onInputAudioStreamError: CodegenTypes.EventEmitter; readonly onSamplePlayerError: CodegenTypes.EventEmitter; unlisten(streamId: number): Promise; addListener(eventName: string): void; removeListeners(count: number): void; // Methods below are related to the SamplePlayer implementation. initSamplePlayer(playerId: number): Promise; destroySamplePlayer(playerId: number): Promise; loadSample( playerId: number, sampleName: string, samplePath: string, ): Promise; playSample( playerId: number, sampleName: string, loop: boolean, ): Promise; stopSample(playerId: number, sampleName: string): Promise; unloadSample(playerId: number, sampleName: string): Promise; } export default TurboModuleRegistry.getEnforcing('ReactNativeAudio');