#nullable enable
using ErsatzTV.Core.Domain;

namespace ErsatzTV.Core.Api.MediaItems;

public record MediaItemInfoResponseModel(
    int Id,
    string Title,
    string Kind,
    string LibraryKind,
    string? ServerName,
    string LibraryName,
    MediaItemState State,
    TimeSpan Duration,
    string? SampleAspectRatio,
    string? DisplayAspectRatio,
    string? RFrameRate,
    VideoScanKind VideoScanKind,
    double? InterlacedRatio,
    int Width,
    int Height,
    List<MediaItemInfoStreamResponseModel> Streams,
    List<MediaItemInfoChapterResponseModel> Chapters);

public record MediaItemInfoStreamResponseModel(
    int? Index,
    MediaStreamKind Kind,
    string? Title,
    string? Codec,
    string? Profile,
    string? Language,
    int? Channels,
    bool? Default,
    bool? Forced,
    bool? AttachedPic,
    string? PixelFormat,
    string? ColorRange,
    string? ColorSpace,
    string? ColorTransfer,
    string? ColorPrimaries,
    int? BitsPerRawSample,
    string? MimeType,
    string? FileName,
    bool? IsExtracted);

public record MediaItemInfoChapterResponseModel(
    string? Title,
    TimeSpan StartTime,
    TimeSpan EndTime);
