using SameBeat.Domain.Encje;
namespace SameBeat.Application.Interfejsy;
/// Log/audyt przyznan mikrofonu (ETAP 5) -- patrz komentarz przy HistoriaMikrofonu. To NIE jest zywy stan.
public interface IRepozytoriumHistoriiMikrofonu
{
void Dodaj(HistoriaMikrofonu wpis);
///
/// Ostatni jeszcze niezamkniety wpis (KoniecFaktycznyUtc == null) dla danego uczestnika w ramach
/// wydarzenia -- uzywane przy odbieraniu mikrofonu (recznym albo przez timer), zeby wiedziec,
/// ktory wiersz zamknac. Jeden aktywny mikrofon na raz (patrz Wydarzenie.PrzyznajMikrofon), wiec
/// w praktyce jest co najwyzej jeden taki wiersz na wydarzenie -- OrderByDescending na wszelki
/// wypadek gdyby kiedys ten niezmiennik zniknal.
///
Task ZnajdzOtwartyAsync(Guid wydarzenieId, Guid uczestnikOczekujacyId, CancellationToken token = default);
}