<?php

namespace App\Services\AI;

use App\Contracts\VideoAvatarProvider;
use Illuminate\Contracts\Container\Container;
use InvalidArgumentException;

/** Routes supported clip lengths to Veo or Vertex Veo. */
class VideoAvatarProviderFactory
{
    public function __construct(private Container $container) {}

    private const VEO_DURATIONS = [4, 6, 8];

    public function supportsDuration(int $duration): bool
    {
        return in_array($duration, self::VEO_DURATIONS, true)
            || array_key_exists($duration, config('creative.vertex_extend_durations', []));
    }

    public function forDuration(int $duration): VideoAvatarProvider
    {
        if (array_key_exists($duration, config('creative.vertex_extend_durations', []))) {
            return $this->container->make(config('creative.video_provider_vertex_extend'));
        }

        if (in_array($duration, self::VEO_DURATIONS, true)) {
            return $this->container->make(config('creative.video_provider'));
        }

        throw new InvalidArgumentException("Video duration {$duration}s is no longer supported.");
    }
}
