<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Video Avatar Provider
    |--------------------------------------------------------------------------
    |
    | Two vendors are wired, routed by requested duration (see
    | VideoAvatarProviderFactory):
    |
    | - Google Veo (over the raw Gemini API, reuses config('ai.providers.gemini'))
    |   hard-caps a single clip at 8 seconds, so it's used for short requests.
    | - OpenAI Sora ("sora-2", the cheaper/faster tier — deliberately not
    |   "sora-2-pro" — to keep cost down) is used for anything longer, since
    |   its base clips go up to 12s and can be stretched further with one
    |   /videos/extensions call.
    |
    | Neither vendor has a concept of a persistent avatar identity or of using
    | our own synthesized Voice catalogue — see each provider's doc-block.
    |
    */

    'video_provider' => \App\Services\AI\GeminiVeoVideoAvatarProvider::class,
    'video_provider_long' => \App\Services\AI\OpenAiSoraVideoAvatarProvider::class,

    // Requested durations at or below this use 'video_provider' (Veo); above it use 'video_provider_long' (Sora).
    'veo_max_duration' => env('VIDEO_VEO_MAX_DURATION', 8),

    'gemini_veo' => [
        // veo-3.0-generate-001 returns 404 for predictLongRunning on this API key/version;
        // confirmed available via models.list: veo-3.1-generate-preview (+ fast/lite variants).
        'model' => env('GEMINI_VEO_MODEL', 'veo-3.1-generate-preview'),
        'poll_interval_seconds' => env('GEMINI_VEO_POLL_INTERVAL', 10),
        'max_poll_attempts' => env('GEMINI_VEO_MAX_POLL_ATTEMPTS', 30),
    ],

    'openai_sora' => [
        // sora-2 (not sora-2-pro) deliberately, to keep per-render cost/time down.
        'model' => env('OPENAI_SORA_MODEL', 'sora-2'),
        'poll_interval_seconds' => env('OPENAI_SORA_POLL_INTERVAL', 10),
        'max_poll_attempts' => env('OPENAI_SORA_MAX_POLL_ATTEMPTS', 30),
    ],

    /*
    |--------------------------------------------------------------------------
    | Competitor Ad Provider
    |--------------------------------------------------------------------------
    |
    | Swapped for App\Services\AI\MetaAdLibraryProvider in Phase 3.
    |
    */

    'competitor_ad_provider' => \App\Services\AI\NullCompetitorAdProvider::class,

    /*
    |--------------------------------------------------------------------------
    | Platform Adapters
    |--------------------------------------------------------------------------
    |
    | Maps a campaign's `platform` value to the adapter class that implements
    | App\Contracts\PlatformAdapter for it. Platforms without a real
    | integration yet resolve to an UnimplementedPlatformAdapter subclass.
    |
    */

    'platform_adapters' => [
        'meta' => \App\Services\Platforms\MetaAdapter::class,
        'google' => \App\Services\Platforms\GoogleAdapter::class,
        'tiktok' => \App\Services\Platforms\TikTokAdapter::class,
        'taboola' => \App\Services\Platforms\TaboolaAdapter::class,
        'linkedin' => \App\Services\Platforms\LinkedInAdapter::class,
    ],

];
