using ErsatzTV.Core.Domain;

namespace ErsatzTV.Application.ProgramSchedules;

public interface IProgramScheduleItemRequest
{
    TimeSpan? StartTime { get; }
    ProgramScheduleItemCollectionType CollectionType { get; }
    int? CollectionId { get; }
    int? MultiCollectionId { get; }
    int? SmartCollectionId { get; }
    int? MediaItemId { get; }
    int? PlaylistId { get; }
    PlayoutMode PlayoutMode { get; }
    PlaybackOrder PlaybackOrder { get; }
    FillWithGroupMode FillWithGroupMode { get; }
    int? MultipleCount { get; }
    TimeSpan? PlayoutDuration { get; }
    TailMode TailMode { get; }
    int? DiscardToFillAttempts { get; }
    string CustomTitle { get; }
    GuideMode GuideMode { get; }
    int? PreRollFillerId { get; }
    int? MidRollFillerId { get; }
    int? PostRollFillerId { get; }
    int? TailFillerId { get; }
    int? FallbackFillerId { get; }
    int? WatermarkId { get; }
    string PreferredAudioLanguageCode { get; }
    string PreferredAudioTitle { get; }
    string PreferredSubtitleLanguageCode { get; }
    ChannelSubtitleMode? SubtitleMode { get; }
}
