using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain.Filler; namespace ErsatzTV.Core.Scheduling.Engine; public interface ISchedulingEngine { ISchedulingEngine WithPlayoutId(int playoutId); ISchedulingEngine WithMode(PlayoutBuildMode mode); ISchedulingEngine WithSeed(int seed); ISchedulingEngine WithReferenceData(PlayoutReferenceData referenceData); ISchedulingEngine BuildBetween(DateTimeOffset start, DateTimeOffset finish); ISchedulingEngine RemoveBefore(DateTimeOffset removeBefore); ISchedulingEngine RestoreOrReset(Option maybeAnchor); // content definitions Task AddCollection(string key, string collectionName, PlaybackOrder playbackOrder); Task AddSearch(string key, string query, PlaybackOrder playbackOrder); // content instructions ISchedulingEngine AddCount( string content, int count, Option fillerKind, string customTitle, bool disableWatermarks); // control instructions ISchedulingEngine WaitUntil(TimeOnly waitUntil, bool tomorrow, bool rewindOnReset); PlayoutAnchor GetAnchor(); ISchedulingEngineState GetState(); }