using NostrStreamer.Database;
namespace NostrStreamer.Services.StreamManager;
public interface IStreamManager
{
///
/// Return the current stream
///
///
UserStream GetStream();
///
/// Test if streaming is allowed for this user, otherwise throw
///
/// Throws if cant stream
void TestCanStream();
///
/// Stream ingress check on srs-edge
///
/// List of forward URLs
Task> OnForward();
///
/// Stream started at origin for HLS split
///
///
Task StreamStarted();
///
/// Stream stopped
///
///
Task StreamStopped();
///
/// Stream reap HLS
///
///
///
Task ConsumeQuota(double duration);
///
/// Update viewer count
///
public Task UpdateViewers();
///
/// Add a guest to the stream
///
///
///
///
///
Task AddGuest(string pubkey, string role, decimal zapSplit);
///
/// Remove guest from the stream
///
///
///
Task RemoveGuest(string pubkey);
///
/// When a new DVR segment is available
///
///
///
Task OnDvr(Uri segment);
///
/// Republish stream event
///
///
Task UpdateEvent();
///
/// Return a list of recordings segments
///
///
Task> GetRecordings();
}