namespace ytLive.Services.Audio;
/// Seam over the TRAX background-music player () so the
/// toggle/status-light logic is testable without a real audio device.
public interface ITraxPlayer : IDisposable
{
event Action? PlaybackEnded;
string? TrackName { get; }
bool IsPlaying { get; }
/// The player's OWN measured output level (0…1). A play glyph can lie — an open file
/// with a dead decoder still says "playing" — so the dock's TRAX ladder shows sound, not state.
float Level { get; }
float LocalGain { get; set; }
/// The creator's TRAX level (1 = the bed's fixed design level). Separate from
/// , which follows the desktop mute; the dock's fader moves this.
float UserGain { get; set; }
void Load(string path);
void Play();
void Pause();
}