namespace AmiReel.Models;

/// <summary>Visual style applied to a YouTube Short. Mirrors the --style values of amigadb-short.sh.</summary>
public enum ShortStyle
{
    Brand,
    Pixel,
    Mirror,
    Crop,
    Workbench,
    Blur,
    Crt,
    Copper,
    Stars,
    Grid,
    Tiles,
    Scan,
    Starfield,
    Plasma,
    Rasterbars,
    Vhs,
    Monitor,
    Split,
    Spectrum,
}

/// <summary>One YouTube Shorts render job's parameters (port of amigadb-short.sh's arguments).</summary>
public sealed record ShortSettings
{
    public required string InputFile { get; init; }
    public required string OutputPath { get; init; }
    public required string Title { get; init; }
    public string Group { get; init; } = "";
    public string Year { get; init; } = "";
    public string Type { get; init; } = "";
    public required string Hook { get; init; }
    public required string Website { get; init; }
    public required string Start { get; init; }
    public required double DurationSeconds { get; init; }
    public required ShortStyle Style { get; init; }
    public string BackgroundImage { get; init; } = "";
    public required string FontFile { get; init; }
    public required string FfmpegPath { get; init; }
    public required string FfprobePath { get; init; }
    public int Crf { get; init; } = 16;
    public string Preset { get; init; } = "slow";
}
