/** * Primes the document with an active microphone stream. * * Opens (and immediately stops) a media stream so the document holds an * active mic permission for this session. In Firefox this is what makes * real deviceIds and labels appear in subsequent enumerateDevices() calls. * Throws early if the user has already denied permission. * * @returns A promise that resolves once the stream has been opened and stopped. * @throws Error if microphone access is denied or unavailable. */ export declare function primeMicStream(): Promise; /** * Retrieves available audio input devices. * * Enumerates devices first; if the result looks like Firefox's pre-permission * placeholder (an entry with empty deviceId/label even though the Permissions * API reports access), primes the document with getUserMedia and re-enumerates. * Browsers that already return populated entries (Chrome, Safari) skip the * priming call entirely. * * @returns A promise that resolves with an object containing: * - `devices`: an array of MediaDeviceInfo objects for audio inputs. * - `defaultDevice`: the first audio input device, if available. * @throws Error if mediaDevices API is unavailable or device enumeration fails. */ export declare function getAudioDevices(): Promise<{ devices: MediaDeviceInfo[]; defaultDevice?: MediaDeviceInfo; }>;