namespace ytLive.Services.Audio;
///
/// A live audio capture source (TASK 4 ship step 4 seam): produces PCM float
/// chunks, runs only while live. The default implementations wrap NAudio's
/// WASAPI capture (mic) / loopback (desktop/game); the mixer and the tests
/// consume this interface, never NAudio directly.
///
public interface IAudioSource : IDisposable
{
/// Starts capturing. Safe to call only once per Stop.
void Start();
/// Stops capturing; a later Start begins a fresh session.
void Stop();
/// Raises each captured chunk (interleaved PCM float, -1..1).
event Action? SampleReady;
/// Raises when capture dies or fails to start (e.g. no device).
event Action? Failed;
}