using SameBeat.Domain.Enumy;
namespace SameBeat.Application.Interfejsy;
public interface ISerwisTokenowLiveKit
{
///
/// Generuje token dostepu LiveKit dla danej tozsamosci i roli, przypisany do konkretnego pokoju.
/// Uprawnienia (canPublish/canSubscribe) sa wyliczane z roli wewnatrz implementacji, wiec caller
/// nie moze ich podbic. Pokoj przekazuje caller (nie ma jednego "domyslnego" pokoju) -- widzowie
/// i poczekalnia to celowo dwa osobne pokoje LiveKit, zeby anonimowy widz nie mogl podejrzec
/// kamery uczestnika, ktorego host jeszcze nie zaakceptowal.
///
///
/// "identity" to techniczna tozsamosc LiveKit (dla uczestnikow poczekalni -- losowy, nieznaczacy
/// string, NIE nick -- patrz UczestnikOczekujacy.LiveKitIdentity). "nazwaWyswietlana" to nick
/// pokazywany w LiveKit jako claim "name" -- po nim frontend dopasowuje strumien wideo do slotu
/// na scenie, bo identity celowo nie jest widzom ani hostowi ujawniane.
///
string WygenerujToken(string identity, string nazwaWyswietlana, RolaUzytkownika rola, string nazwaPokoju);
}