namespace SaasMediaWorker.Configuration;

public class WorkerSettings
{
    public int MaxConcurrency { get; set; } = 2;
    public int PollIntervalSeconds { get; set; } = 2;
    public int MaxRetryAttempts { get; set; } = 3;
    public string WorkerVersion { get; set; } = "1.0.0";
}

public class RedisSettings
{
    public string ConnectionString { get; set; } = "localhost:6379";
    public string QueueKey { get; set; } = "contgen:queue:video-generation";
    public string ProgressChannel { get; set; } = "contgen:progress";
    public string CompletionChannel { get; set; } = "contgen:completion";
}

public class S3Settings
{
    public string Endpoint { get; set; } = string.Empty;
    public string AccessKey { get; set; } = string.Empty;
    public string SecretKey { get; set; } = string.Empty;
    public string BucketName { get; set; } = "contgen-media";
    public string Region { get; set; } = "auto";
    public string PublicBaseUrl { get; set; } = string.Empty;
}

public class ApiSettings
{
    public string HiggsFieldBaseUrl { get; set; } = string.Empty;
    public string HiggsFieldApiKey { get; set; } = string.Empty;
    public string TtsBaseUrl { get; set; } = string.Empty;
    public string TtsApiKey { get; set; } = string.Empty;
    public string TtsVoiceId { get; set; } = "pNInz6obpgDQGcFmaJgB";
    public string OpenAiApiKey { get; set; } = string.Empty;
    public string OpenAiTtsVoiceId { get; set; } = "alloy";
    public string SunoBaseUrl { get; set; } = string.Empty;
    public string SunoApiKey { get; set; } = string.Empty;
    public string CoreApiBaseUrl { get; set; } = "http://localhost:3000/api";

    // AudioCraft — HuggingFace Inference API
    public string HuggingFaceApiKey { get; set; } = string.Empty;
    public string MusicGenModel { get; set; } = "facebook/musicgen-small"; // small (Pi-uyumlu), medium, large
    public string AudioGenModel { get; set; } = "facebook/audiogen-medium";
}

public class FFmpegSettings
{
    public string BinaryPath { get; set; } = "/usr/bin/ffmpeg";
    public string FfprobePath { get; set; } = "/usr/bin/ffprobe";
    public string TempDirectory { get; set; } = "/tmp/contgen-render";
    public int MaxConcurrentRenders { get; set; } = 2;
    public string HardwareAcceleration { get; set; } = "none";
    public string FontPath { get; set; } = "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf";
}
