import type { HybridObject } from 'react-native-nitro-modules'; import type { AudioSessionConfig, AudioSessionCategory, AudioSessionMode, AudioRouteChangeEvent, } from './types.nitro'; /** * AudioSession manages the app's audio environment. * * On iOS: wraps AVAudioSession.sharedInstance() (OS singleton). * On Android: manages AudioAttributes + audio focus policy. * * Create imperatively, pass to players by reference. */ export interface AudioSession extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> { // --- Configuration (async — OS-level operations) --- configure(config: AudioSessionConfig): Promise; // --- Activation (async) --- activate(): Promise; deactivate(): Promise; // --- State (sync reads) --- readonly isActive: boolean; readonly currentCategory: AudioSessionCategory; readonly currentMode: AudioSessionMode; // --- Events --- onInterruption( callback: (began: boolean, shouldResume: boolean) => void ): void; onRouteChange(callback: (event: AudioRouteChangeEvent) => void): void; } /** * Factory for creating AudioSession instances. * Autolinked — default-constructible. */ export interface AudioSessionFactory extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> { create(config: AudioSessionConfig): AudioSession; createDefault(): AudioSession; }