Source path: app/Services/Ai/Contracts.php
Extracted from supplied specification. Review before copying into application.

<?php
namespace App\Services\Ai;

interface ImageProvider
{
    public function configured(array $c): bool;
    /** @return string raw image bytes (PNG/JPEG) */
    public function generate(string $prompt, string $size, array $c): string;
}

interface VideoProvider
{
    public function configured(array $c): bool;
    /** @return array provider meta to persist (job ids/urls) */
    public function submit(string $prompt, array $opts, array $c): array;
    /** @return array{status:'processing'|'succeeded'|'failed', url?:string, error?:string} */
    public function poll(array $meta, array $c): array;
}

interface TextProvider
{
    public function configured(array $c): bool;
    public function complete(string $system, string $prompt, array $c): string;
}
