using DeepDrftModels.Enums;
namespace DeepDrftPublic.Client.Services;
///
/// The emit seam for the (Phase 16 §2.1). The tracker owns the session
/// lifecycle, the engagement floor, and the bucket classification but knows nothing about transport —
/// it hands a finished classification to a sink. The production sink fires a sendBeacon POST to
/// api/event/play; tests substitute a fake sink to assert floor and bucket behaviour with no
/// JS interop. This keeps the tracker's logic testable behind one seam, as the spec calls for.
///
public interface IPlayEventSink
{
/// Emit one recorded play. Called at most once per session, only when the floor is crossed.
void EmitPlay(string trackEntryKey, PlayBucket bucket);
}