"""Audio capture engine abstraction layer."""

from wled_controller.core.audio.base import (
    AudioCaptureEngine,
    AudioCaptureStreamBase,
    AudioDeviceInfo,
)
from wled_controller.core.audio.factory import AudioEngineRegistry
from wled_controller.core.audio.analysis import (
    AudioAnalysis,
    AudioAnalyzer,
    NUM_BANDS,
    DEFAULT_SAMPLE_RATE,
    DEFAULT_CHUNK_SIZE,
)
from wled_controller.core.audio.wasapi_engine import WasapiEngine, WasapiCaptureStream
from wled_controller.core.audio.sounddevice_engine import SounddeviceEngine, SounddeviceCaptureStream
from wled_controller.core.audio.demo_engine import DemoAudioEngine, DemoAudioCaptureStream

# Auto-register available engines
AudioEngineRegistry.register(WasapiEngine)
AudioEngineRegistry.register(SounddeviceEngine)
AudioEngineRegistry.register(DemoAudioEngine)

__all__ = [
    "AudioCaptureEngine",
    "AudioCaptureStreamBase",
    "AudioDeviceInfo",
    "AudioEngineRegistry",
    "AudioAnalysis",
    "AudioAnalyzer",
    "NUM_BANDS",
    "DEFAULT_SAMPLE_RATE",
    "DEFAULT_CHUNK_SIZE",
    "WasapiEngine",
    "WasapiCaptureStream",
    "SounddeviceEngine",
    "SounddeviceCaptureStream",
    "DemoAudioEngine",
    "DemoAudioCaptureStream",
]
