<?php

namespace App\Contracts;

use App\DTOs\VideoRenderResult;
use App\Models\Avatar;
use App\Models\Voice;

interface VideoAvatarProvider
{
    /**
     * Render a talking-avatar video from a script and storyboard.
     *
     * @param  array{hook: string, problem: string, product: string, benefits: string, cta: string}  $script
     * @param  list<array{scene: string}>  $storyboard
     *
     * @throws \App\Exceptions\ProviderNotConfiguredException if no video vendor is configured.
     */
    public function render(Avatar $avatar, Voice $voice, array $script, array $storyboard): VideoRenderResult;
}
