fjffk简å�•的咖啡店科开å�‘2方法2 环æ»�皆山也。其西å�—诸峰,林壑尤美,望之蔚然而深秀者,ç�…ç�Šä¹Ÿã€‚山行六七里,æ¸�闻水声潺潺,而泻出于两峰之间者,酿泉也 ??????????????????????????????? ??????????????/????????????????? ............/................... .........................../... ??????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  Â¥2" ÿÄ     ÿÄ J    ! 1AQ"aqÂ�2‘#BR‚¡Ã�Ñ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3Â�±ð#b¡ÿÚ   ? ¼QxJQaÃ�uò¸Zö Úü8,Ã�Úú "SSn<rçù–´âE—^ªBÖ9À\†¸Â�ÔÂ�Ã�T­ÃÛ5 ëd´³Ã�#Ã�;Þ38ϔÂ� ¶H£M:wÃŽ3…³…âpÔF&‚FK¸9„â4àGEõªfÂ�ÿ ‘ñ(ßw­pŽF|È¥ù®häðÃ�Ѷ¹‘[Ã’inÙW¶ùñYËœQ{›K"išÒ[Ú8žë\F¹@-?v"ÔUâ€�,ìöžkÿ {I‡£šÃ�?e rÂ�íV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> dsdfPK„W]KK‹ààAspectRatioEnum.phpnu„[µü¤ 'Emily Primary', self::EMILY_SIDE => 'Emily Side', self::MARCUS_PRIMARY => 'Marcus Primary', self::MARCUS_SIDE => 'Marcus Side', self::AISHA_WALKING => 'Aisha Walking', self::ELENA_PRIMARY => 'Elena Primary', self::ELENA_SIDE => 'Elena Side', }; } public function image(): string { return match ($this) { self::EMILY_PRIMARY => 'emily-primary.png', self::EMILY_SIDE => 'emily-side.png', self::MARCUS_PRIMARY => 'marcus-primary.png', self::MARCUS_SIDE => 'marcus-side.png', self::AISHA_WALKING => 'aisha-walking.png', self::ELENA_PRIMARY => 'elena-primary.png', self::ELENA_SIDE => 'elena-side.png', }; } } PK„W]gÅUppKling/DurationEnum.phpnu„[µü¤ '5s', self::DURATION_10S => '10s' }; } } PK„W]ÐZ2§§Veo3/DurationEnum.phpnu„[µü¤+ߣVVCaptionStyle.phpnu„[µü¤ 'Normal Black', self::NORMAL_BLUE => 'Normal Blue', self::NORMAL_RED => 'Normal Red', self::NORMAL_WHITE => 'Normal White', self::NEO => 'Neo', self::BRICK => 'Brick', self::FRENZY => 'Frenzy', self::VERANA => 'Verana', self::MUSTARD => 'Mustard', self::GLOW => 'Glow', self::MINT => 'Mint', self::COOLERS => 'Coolers', self::BILO => 'Bilo', self::TOONS => 'Toons', self::DEEP_BLUDE => 'Deep Blue', self::MYSTIQUE => 'Mystique', self::CAUTION => 'Caution', self::DUALITY => 'Duality' }; } /** * get thumbnail */ public function thumbnail(): string { return match ($this) { default => '' }; } public function style(): string { return match ($this) { default => 'border-radius: 1rem; padding: 16px 16px; box-decoration-break: clone; -webkit-box-decoration-break: clone; background-color: transparent; font-family: Montserrat; line-height: 1.2; font-size: 30px; text-shadow: none; text-align: center;' }; } } PK2„W]�fàBííAspectRatio.phpnu„[µü¤ 'Ratio 16:9', self::RATIO_1_1 => 'Ratio 1:1', self::RATIO_9_16 => 'Ratio 9:16' }; } } PK2„W]j»ó$m)m)VisualStyle.phpnu„[µü¤ 'Avatar Bubble (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::DRAMATIC_TEMPLATE => 'Dramatic (Applicable to aspect_ratio 9x16)', self::DYNAMIC_GREEN_SCREEN_EFFECT => 'Dynamic Green Screen Effect (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::DYNAMIC_PRODUCT_TEMPLATE => 'Product (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::DYNAMIC_RESPONSE_BUBBLE_TEMPLATE => 'Response Bubble (Applicable to aspect_ratio 9x16)', self::ENHANCED_VANILLA_TEMPLATE => 'Dynamic Vanilla (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::FEATURE_HIGHLIGHT_TEMPLATE => 'Feature Highlight (Applicable to aspect_ratio 9x16, 1x1)', self::FULLSCREEN_TEMPLATE => 'Full Screen (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::FULLSCREEN_V2_TEMPLATE => 'Full Screen V2 (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::GREENSCREEN_EFFECT_TEMPLATE => 'Green Screen Effect (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::LEGO_TEMPLATE => 'Lego (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::MOTIONCARDS_TEMPLATE => 'Motion Cards (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::OVERCARDS_TEMPLATE => 'Over Cards (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::QUICK_TRANSITION_TEMPLATE => 'Quick Transition (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::SCRIBBLE_TEMPLATE => 'Scribble (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::SIDEBYSIDE_TEMPLATE => 'Side by Side (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::SIMPLE_AVATAR_OVERLAY_TEMPLATE => 'Product Presenter (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::TOPBOTTOM_TEMPLATE => 'Top & Bottom (Applicable to aspect_ratio 9x16, 1x1)', self::TWITTERFRAME_TEMPLATE => 'Twitter Frame (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::VANILLA_TEMPLATE => 'Vanilla (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::VLOG_TEMPLATE => 'Vlog (Applicable to aspect_ratio 9x16)', self::LEGO_VISUAL_EMOTIONAL => 'Emotional (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::LEGOVISUAL_CUTEPETS => 'Cute Pets (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::LEGO_VISUAL_AVATAR_FOCUS_INTRO => 'Avatar Focus Intro (Applicable to aspect_ratio 9x16, 16x9, 1x1)', self::LEGO_SCRIPT_NEGATIVE_HOOK => "Don't Use This If You Want... (Applicable to aspect_ratio 9x16, 1x1, 16x9", self::LEGO_SCRIPT_NUMBER_ONE_HOOK => 'The #1 Hack You Need (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_EVER_WONDER_HOOK => 'Ever Wonder Why? (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_SECRET_HOOK => 'Wish I Could Keep This Secret (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_WHAT_HAPPENS_HOOK => 'What Happens If You Try This? (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_ANYONEELSE_HOOK => 'That One Thing We All Have (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_AMAZED_HOOK => 'Still Amazed by This (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_2025_HOOK => 'Hack 2025 Like This (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LOGO_SCRIPT_HATTEME_HOOK => "They'll Hate Me for This (Applicable to aspect_ratio 9x16, 1x1, 16x9)", self::LOGO_SCRIPT_RESPONSEBUBBLE_TEXTOVERLAY => 'Response bubble (Applicable to aspect_ratio 9x16, 1x1)', self::LEGO_SCRIPT_HEY_ALGORITHMHOOK => 'Hey Algorithm (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_CANNOT_BELIEVEHOOK => 'Cannot Believe This (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_FINALLY_CONFIDENTHOOK => 'Finally Confident (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_PREMIUMFELLING_HOOK => 'Premium Feeling (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_FIRSTTIME_FULLOOK => 'First Time Full (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_LONGLINE_REASONHOOK => 'Long Line Reason (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_MISSINGOUT_ALERTHOOK => 'Missing Out Alert (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_BETTERTODAYVERSION_TOOK => 'Better Today Version (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_BIGHAPPENING_HOOK => 'Big Happening (Applicable to aspect_ratio 9x16, 1x1, 16x9) ', self::LEGO_SCRIPT_PRICE_DROPREGRET_HOOK => 'Price Drop Regret (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_GROUPBUY_FRUSTRATION_HOOK => 'Group Buy Frustration (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_STOPEAFFOD_EXCUSE_HOOK => 'Stop Afford Excuse (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_LEFETOOSHORT_DISCOUNDHOOK => 'Life Too Short Discount (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_HUGEPRICE_DROPRUSH_HOOK => 'Huge Price Drop Rush (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_PRICECOULD_GOLOWER_HOOK => 'Price Could Go Lower (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_STILLFULL_PRICEHOOK => 'Still Full Price (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_SECRETDISCOUNT_SHAREHOOK => 'Secret Discount Share (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_VOUCHERSAVINGS_ALERTHOOK => 'Voucher Savings Alert (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_COUPONDISCOVERY_REGRETHOOK => ' Coupon Discovery Regret (Applicable to aspect_ratio 9x16, 1x1, 16x9)', self::LEGO_SCRIPT_BESTDEAL_EVERHOOK => 'Best Deal Ever (Applicable to aspect_ratio 9x16, 1x1, 16x9)' }; } } PK2„W]gÍÛ&EEVoice/Type.phpnu„[µü¤ 'Text' }; } } PK2„W] ×B  Avatar/AgeRange.phpnu„[µü¤ 'Child', self::TEEN => 'Teen', self::ADULT => 'Adult', self::SENIOR => 'Senior' }; } } PK2„W] �@ââAvatar/Style.phpnu„[µü¤ 'Selfie', self::PRESENTER => 'Presenter', self::OTHER => 'Other' }; } } PK2„W] Iã Avatar/Location.phpnu„[µü¤ 'Outdoor', self::FANTASY => 'Fantasy', self::INDOOR => 'Indoor', self::OTHER => 'Other' }; } } PK2„W]²§ùÒÒAvatar/Gender.phpnu„[µü¤ 'Male', self::FEMALE => 'Female', self::NONBINARY => 'Non Binary' }; } } PK2„W]´Ï…Ù<< Language.phpnu„[µü¤ 'Arabic', self::BG => 'Bularian', self::CS => 'Czech', self::DA => 'Danish', self::DE => 'German', self::EL => 'Greek', self::EN => 'English', self::ES => 'Spanish', self::FI => 'Finnish', self::FR => 'French', self::HI => 'Hindi', self::HR => 'Croatian', self::ID => 'Indonesian', self::IT => 'Italian', self::JA => 'Japanese', self::KO => 'Korean', self::MS => 'Malay', self::NL => 'Dutch', self::PL => 'Polish', self::PT => 'Portugues', self::RO => 'Romanian', self::RU => 'Russian', self::SK => 'Slovak', self::SV => 'Swedish', self::TA => 'Tamil', self::TL => 'Tagalog', self::TR => 'Turkish', self::UK => 'Ukrainian', self::ZH => 'Chinese' }; } } PK2„W]xÉmÆÆVideoLength.phpnu„[µü¤ '15s', self::LENGTH_30 => '30s', self::LENGTH_60 => '60s' }; } } PK2„W]–ó6vN N ScriptStyle.phpnu„[µü¤ 'Benefits', self::BRAND_STORY_V2 => 'Brand Story', self::CALL_TO_ACTION_V2 => 'Call To Action', self::DISCOVERY_WRITER => 'Discovery', self::DONT_WORRY_WITTER => "Don't worry", self::EMOTIONAL_WRITER => 'Emotional', self::GENZ_WRITER => 'Gen Z', self::HOW_TO_V2 => 'How To', self::LET_ME_SHOW_YOU_WRITER => 'Let me Show You', self::MOTIVATIONAL_WRITER => 'Motivational', self::PROBLEM_SOLUTION_V2 => 'Problem Solution', self::PROBLEM_SOLUTION_WRITER => 'Problem-Solution', self::PRODUCT_HIGHLIGHTS_V2 => 'Product Highlights', self::PRODUCT_LIFESTYTLE_V2 => 'Product Lifestyle', self::RESPONSE_BUBBLE_WRITER => 'Response Bubble', self::SPECIAL_OFFER_V2 => 'Special Offers', self::STORY_TIME_WRITER => 'Storytime', self::THREE_REASONS_WRITER => '3 Reasons Why', self::TRENDING_TOPICS_V2 => 'Trending Topics', self::DIY => 'DIY', }; } } PK<„W]òª/ ŽŽEntityEnum.phpnu„[µü¤map( fn ($case) => $case->creditBy() )->unique()->values(); } public function isReasoningModel(): bool { return match ($this) { self::GPT_O_1, self::GPT_O_4_MINI, self::GPT_O_3, self::GPT_O_03_mini, self::GPT_5, self::GPT_5_CHAT, self::GPT_5_PRO, self::GPT_5_MINI, self::GPT_5_NANO => true, default => false, }; } public function creditBy(): self { // we are not using this for now, because we only show default model for user return match ($this) { // self::GPT_3_5_TURBO_0125, // self::GPT_3_5_TURBO_1106 => self::GPT_3_5_TURBO, default => $this }; } public function creditIndex(): float { return 1.0; } public function label(): string { return match ($this) { self::BLACK_FOREST_LABS_FLUX_1_SCHNELL => __('Black Forest Labs Flux 1 Schnell'), self::IMAGE_TO_VIDEO => __('AI Video'), self::STABLE_DIFFUSION_XL_1024_V_1_0 => __('Stable Diffusion XL 1.0'), self::STABLE_DIFFUSION_V_1_6 => __('Stable Diffusion 1.6'), self::SD_3 => __('Stable Diffusion 3'), self::SD_3_TURBO => __('Stable Diffusion 3 turbo'), self::SD_3_MEDIUM => __('Stable Diffusion 3 Medium'), self::SD_3_LARGE => __('Stable Diffusion 3 Large'), self::SD_3_LARGE_TURBO => __('Stable Diffusion 3 Large Turbo'), self::SD_3_5_LARGE => __('Stable Diffusion 3.5 Large'), self::SD_3_5_LARGE_TURBO => __('Stable Diffusion 3.5 Large Turbo'), self::SD_3_5_MEDIUM => __('Stable Diffusion 3.5 Medium'), self::CORE => __('Core'), self::ULTRA => __('Ultra'), self::AWS_BEDROCK => __('AWS Bedrock'), // OpenAI self::DAVINCI => __('Davinci 002 (Expensive & Capable)'), self::TEXT_DAVINCI_003 => __('Davinci 003 (Expensive & Capable)'), self::GPT_3_5_TURBO => __('GPT 3.5-turbo (Most Expensive & Fastest & Most Capable)'), self::GPT_3_5_TURBO_0125 => __('GTP 3.5-turbo-0125 (Updated Knowleddge cutoff of Sep 2021, 16k)'), self::GPT_3_5_TURBO_1106 => __('GTP 3.5-turbo-1106 (Updated Knowleddge cutoff of Nov 2021, 16k)'), self::GPT_4_TURBO => __('GPT-4 Turbo (Most Expensive & Fastest & Most Capable)'), self::GPT_4 => __('GPT-4 (Most Expensive & Fastest & Most Capable)'), self::GPT_4_1106_PREVIEW => __('GPT-4-1106 Turbo (Updated Knowleddge cutoff of April 2023, 128k)'), self::GPT_4_0125_PREVIEW => __('GPT-4-0125 Turbo (Updated Knowleddge cutoff of Dec 2023, 128k)'), self::TEXT_EMBEDDING_ADA_002 => __('Text Embedding Ada (Expensive & Capable)'), self::TEXT_EMBEDDING_3_SMALL => __('Text Embedding Small'), self::TEXT_EMBEDDING_3_LARGE => __('Text Embedding Large'), self::WHISPER_1 => __('WHISPER 1 The latest text to speech model, optimized for speed.'), self::DALL_E_2 => __('DALL-E 2 The previous DALL·E model released in Nov 2022.'), self::DALL_E_3 => __('DALL-E 3 The latest DALL·E model released in Nov 2023.'), self::GPT_IMAGE_1 => __('GPT-IMAGE-1 The latest image model released in Nov 2025.'), self::TTS_1 => __('TTS 1 The latest text to speech model, optimized for speed.'), self::TTS_1_HD => __('TTS 1 HD The latest text to speech model, optimized for quality.'), self::GPT_4_O => __('GPT-4o Most advanced works for Vision, multimodal flagship model that’s cheaper and faster than GPT-4 Turbo. (Updated Knowleddge cutoff of Oct 2023, 128k)'), self::GPT_4_O_MINI => __('GPT-4o mini Our affordable and intelligent small model for fast, lightweight tasks. GPT-4o mini is cheaper and more capable than GPT-3.5 Turbo.'), self::GPT_4_O_SEARCH_PREVIEW => __('GPT-4o Search Preview'), self::GPT_4_O_MINI_SEARCH_PREVIEW => __('GPT-4o Mini Search Preview'), self::GPT_4_O1_PREVIEW => __('GPT o1-preview (Updated Knowledge cutoff of Dec 2023, 128k)'), self::GPT_4_O1_MINI => __('GPT o1-mini (Updated Knowledge cutoff of Dec 2023, 128k)'), self::GPT_O_1 => __('GPT o1 (Updated Knowledge cutoff of Dec 2023, 128k)'), self::GPT_O_03_mini => __('GPT o3-mini (Updated Knowledge cutoff of October 2023, 200k)'), self::GPT_4_O_REALTIME_PREVIEW => __('GPT-4o Realtime Preview (Updated Knowledge cutoff of December 2024, 128k)'), self::GPT_4_1 => __('GPT-4.1 (Jun 01, 2024 knowledge cutoff, 32k max output tokens.)'), self::GPT_4_1_MINI => __('GPT-4.1 Mini (Jun 01, 2024 knowledge cutoff, 32k max output tokens.)'), self::GPT_4_1_NANO => __('GPT-4.1 Nano (Jun 01, 2024 knowledge cutoff, 32k max output tokens.)'), self::GPT_O_4_MINI => __('GPT o4-mini (Jun 01, 2024 knowledge cutoff, 100k max output tokens.)'), self::GPT_O_3 => __('GPT o3 (Jun 01, 2024 knowledge cutoff, 100k max output tokens.)'), self::GPT_5 => __('GPT-5 (Oct 01, 2024 knowledge cutoff, 128k max output tokens.)'), self::GPT_5_MINI => __('GPT-5 Mini (May 31, 2024 knowledge cutoff, 128k max output tokens.)'), self::GPT_5_NANO => __('GPT-5 Nano (May 31, 2024 knowledge cutoff, 128k max output tokens.)'), self::GPT_5_CHAT => __('GPT-5 Chat (Sep 30, 2024 knowledge cutoff, 128k max output tokens.)'), self::GPT_5_PRO => __('GPT-5 Pro (Sep 30, 2024 knowledge cutoff, 272k max output tokens.)'), self::SORA_2 => __('Sora 2 (Flagship video generation with synced audio)'), self::SORA_2_PRO => __('Sora 2 Pro (Most advanced synced-audio video generation)'), // Anthropic self::CLAUDE_SONNET_4_5 => __('Claude Sonnet 4.5'), self::CLAUDE_OPUS_4_1 => __('Claude Opus 4.1'), self::CLAUDE_OPUS_4 => __('Claude Opus 4'), self::CLAUDE_SONNET_4 => __('Claude Sonnet 4'), self::CLAUDE_3_7_SONNET => __('Claude 3.7 Sonnet'), self::CLAUDE_3_5_HAIKU => __('Claude 3.5 Haiku'), self::CLAUDE_3_5_SONNET_V2 => __('Claude 3.5 Sonnet V2'), self::CLAUDE_3_5_SONNET => __('Claude 3.5 Sonnet'), self::CLAUDE_3_SONNET => __('Claude 3 Sonnet'), self::CLAUDE_3_OPUS => __('Claude 3 Opus'), self::CLAUDE_3_HAIKU => __('Claude 3 Haiku'), self::CLAUDE_2_1 => __('Claude 2.1'), self::CLAUDE_2_0 => __('Claude 2'), self::VOYAGE_2 => __('Voyage 2'), self::VOYAGE_LARGE_2 => __('Voyage Large 2'), self::VOYAGE_CODE_2 => __('Voyage Code 2'), self::CLIPDROP => __('Clipdrop for Photo Studio'), self::NOVITA => __('Novita for Photo Studio'), self::FREEPIK => __('Novita for Image Editor'), self::PLAGIARISMCHECK => __('Plagiarism Check'), self::SYNTHESIA => __('Synthesia'), self::HEYGEN => __('Heygen'), self::PEBBLELY => __('Pebblely'), // Gemini self::GEMINI_2_5_FLASH_PREVIEW_05_20 => __('Gemini 2.5 Flash Preview 05-20 Adaptive thinking, cost efficiency'), self::GEMINI_2_5_PRO => __('Gemini 2.5 Pro Preview Enhanced thinking and reasoning, multimodal understanding, advanced coding, and more'), self::GEMINI_2_0_FLASH => __('Gemini 2.0 Flash Next generation features, speed, thinking, realtime streaming, and multimodal generation'), self::GEMINI_2_0_FLASH_LITE => __('Gemini 2.0 Flash-Lite Cost efficiency and low latency'), self::GEMINI_1_5_PRO => __('Gemini 1.5 Pro Complex reasoning tasks requiring more intelligence'), self::GEMINI_1_5_FLASH => __('Gemini 1.5 Flash Fast and versatile performance across a diverse variety of tasks'), self::GEMINI_EMBEDDING_EXP => __('Gemini Embedding Measuring the relatedness of text strings'), self::GEMINI_TEXT_EMBEDDING_004 => __('Gemini Text Embeding 004'), // Deepseek self::DEEPSEEK_CHAT => __('Deepseek Chat'), self::DEEPSEEK_REASONER => __('Deepseek DeepSeek-R1'), // Unsplash self::UNSPLASH => __('Unsplash for AI Article Wizard'), // Pexels self::PEXELS => __('Pexels for AI Article Wizard'), // Pixabay self::PIXABAY => __('Pixabay for AI Article Wizard'), // Elevenlabs self::ELEVENLABS => __('Elevenlabs for TTS'), self::ELEVENLABS_VOICE_CHATBOT => __('Elevenlabs Voice Chatbots'), self::ISOLATOR => __('Voice Isolator (1 word = 5 used characters of elevenlabs) X 1 token'), self::ELEVENLABS_AI_MUSIC => __('Elevenlabs for AI Music Pro'), // Google self::GOOGLE => __('Google for TTS'), // Azure self::AZURE => __('Azure for TTS'), self::AZURE_OPENAI => __('Azure OpenAI Model'), // Speechify self::Speechify => __('Speechify for TTS'), // Serper self::SERPER => __('Serper for Realtime Data'), // Perplexity self::PERPLEXITY => __('Perplexity for Realtime Data'), // Midjourney self::MIDJOURNEY => __('Midjourney'), // X AI self::GROK_2_1212 => __('Grok 2 1212'), self::GROK_2_VISION_1212 => __('Grok 2 Vision 1212'), self::GROK_3 => __('Grok 3'), self::GROK_3_MINI => __('Grok 3 Mini'), self::GROK_3_FAST => __('Grok 3 Fast'), self::GROK_3_MINI_FAST => __('Grok 3 Mini Fast'), self::GROK_4 => __('Grok 4'), self::GROK_4_FAST => __('Grok 4 Fast'), // Gamma AI self::GAMMA_AI => __('Gamma AI'), // FAL AI self::VEO_2 => __('Google VEO 2'), self::IMAGEN_4 => __('Google Imagen 4'), self::VEED => __('Veed'), self::VEO_3 => __('Veo 3'), self::VEO_3_1_TEXT_TO_VIDEO => __('Veo 3.1 Text To Video'), self::VEO_3_1_TEXT_TO_VIDEO_FAST => __('Fast Veo 3.1 Text To Video'), self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO => __('Veo 3.1 First Last Frame To Video'), self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO_FAST => __('Fast Veo 3.1 First Last Frame To Video'), self::VEO_3_1_IMAGE_TO_VIDEO => __('Veo 3.1 Image To Video'), self::VEO_3_1_IMAGE_TO_VIDEO_FAST => __('Fast Veo 3.1 Image To Video'), self::VEO_3_1_REFERENCE_TO_VIDEO => __('Veo 3.1 Reference To Video'), self::VEO_3_FAST => __('Fast Veo 3'), self::KLING_VIDEO => __('Kling Video'), self::FLUX_PRO => __('Flux Pro'), self::NANO_BANANA => __('Nano Banana'), self::NANO_BANANA_EDIT => __('Nano Banana Edit'), self::SEEDREAM_4 => __('SeeDream v4 '), self::SEEDREAM_4_EDIT => __('SeeDream v4 Edit'), self::FLUX_PRO_KONTEXT_MAX_MULTI => __('Flux Pro Kontext Max Multi'), self::FLUX_PRO_KONTEXT_TEXT_TO_IMAGE => __('Flux Pro Kontext Max Text to Image'), self::FLUX_PRO_KONTEXT => __('Flux Pro Kontext Max'), self::IDEOGRAM => __('Ideogram V2'), self::FLUX_PRO_1_1 => __('Flux Pro 1.1'), self::FLUX_REALISM => __('Flux Realism'), self::FLUX_SCHNELL => __('Flux Schnell'), self::KLING => __('Kling 1.0'), self::KLING_2_1 => __('Kling 2.1'), self::KLING_2_5_TURBO_PRO_TTV => __('Kling 2.5 Turbo Pro Text to Video'), self::KLING_2_5_TURBO_PRO_ITV => __('Kling 2.5 Turbo Pro Image to Video'), self::KLING_2_5_TURBO_STANDARD_ITV => __('Kling 2.5 Turbo Standard Image to Video'), self::KLING_IMAGE => __('Kling Image to Video'), self::LUMA_DREAM_MACHINE => __('Luma Dream Machine'), self::HAIPER => __('Haiper'), self::MINIMAX => __('Minimax'), self::VIDEO_UPSCALER => __('Video Upscaler'), self::COGVIDEOX_5B => __('Cogvideox 5B'), self::ANIMATEDIFF_V2V => __('Animatediff V2V'), self::FAST_ANIMATEDIFF_TURBO => __('Fast Animatediff Turbo'), self::AD_MARKETING_VIDEO => __('Ad Marketing Video'), self::AD_MARKETING_VIDEO_TOPVIEW => __('Topview Ad Video'), self::AI_CLIP_VIZARD => __('Vizard AI Clip'), self::AI_CLIP_KLAP => __('Klap AI Clip'), // AI/ML api minimax engine self::MUSIC_01 => __('Music 01'), // Open Router self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022 => __('Anthropic: Claude 3.5 Haiku (2024-10-22)'), self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_SELF_MODERATED => __('Anthropic: Claude 3.5 Haiku (2024-10-22) (self-moderated)'), self::ANTHROPIC_CLAUDE_3_5_HAIKU => __('Anthropic: Claude 3.5 Haiku'), self::ANTHROPIC_CLAUDE_3_5_HAIKU_SELF_MODERATED => __('Anthropic: Claude 3.5 Haiku (self-moderated)'), self::LUMIMAID_V02_70B => __('Lumimaid v0.2 70B'), self::MAGNUM_V4_72B => __('Magnum v4 72B'), self::XAI_GROK_BETA => __('xAI: Grok Beta'), self::MINISTRAL_8B => __('Ministral 8B'), self::MINISTRAL_3B => __('Ministral 3B'), self::QWEN25_7B_INSTRUCT => __('Qwen2.5 7B Instruct'), self::NVIDIA_LLAMA_31_NEMOTRON_70B_INSTRUCT => __('NVIDIA: Llama 3.1 Nemotron 70B Instruct'), self::INFLECTION_3_PI => __('Inflection: Inflection 3 Pi'), self::INFLECTION_3_PRODUCTIVITY => __('Inflection: Inflection 3 Productivity'), self::LIQUID_LFM_40B_MOE_FREE => __('Liquid: LFM 40B MoE (free)'), self::LIQUID_LFM_40B_MOB => __('Liquid: LFM 40B MoE'), self::ROCINANTE_12B => __('Rocinante 12B'), self::EVA_QWEN25_14B => __('EVA Qwen2.5 14B'), self::MAGNUM_V2_72B => __('Magnum v2 72B'), self::META_LLAMA32_3B_INSTRUCT_FREE => __('Meta: Llama 3.2 3B Instruct (free)'), self::META_LLAMA32_1B_INSTRUCT_FREE => __('Meta: Llama 3.2 1B Instruct (free)'), self::META_LLAMA32_3B_INSTRUCT => __('Meta: Llama 3.2 3B Instruct'), self::META_LLAMA32_1B_INSTRUCT => __('Meta: Llama 3.2 1B Instruct'), self::PERPLEXITY_LLAMA_31_SONAR_405B_ONLINE => __('Perplexity: Llama 3.1 Sonar 405B Online'), self::PERPLEXITY_LLAMA_31_SONAR_70B_ONLINE => __('Perplexity: Llama 3.1 Sonar 70B Online'), self::PERPLEXITY_LLAMA_31_SONAR_70B => __('Perplexity: Llama 3.1 Sonar 70B'), self::PERPLEXITY_LLAMA_31_SONAR_8B_ONLINE => __('Perplexity: Llama 3.1 Sonar 8B Online'), self::PERPLEXITY_LLAMA_31_SONAR_8B => __('Perplexity: Llama 3.1 Sonar 8B'), }; } public function isV2BetaSdEntity(): bool { return match ($this) { self::SD_3, self::SD_3_TURBO, self::SD_3_MEDIUM, self::SD_3_LARGE, self::SD_3_LARGE_TURBO, self::SD_3_5_LARGE, self::SD_3_5_LARGE_TURBO, self::SD_3_5_MEDIUM, self::CORE, self::ULTRA => true, default => false, }; } public function engine(): EngineEnum { return match ($this) { self::IMAGE_TO_VIDEO, self::STABLE_DIFFUSION_XL_1024_V_1_0, self::STABLE_DIFFUSION_V_1_6, self::SD_3, self::SD_3_TURBO, self::SD_3_MEDIUM, self::SD_3_LARGE, self::SD_3_LARGE_TURBO, self::SD_3_5_LARGE, self::SD_3_5_LARGE_TURBO, self::SD_3_5_MEDIUM, self::CORE, self::ULTRA, self::AWS_BEDROCK => EngineEnum::STABLE_DIFFUSION, // Together self::BLACK_FOREST_LABS_FLUX_1_SCHNELL => EngineEnum::TOGETHER, // OpenAI self::DAVINCI, self::TEXT_DAVINCI_003, self::GPT_3_5_TURBO, self::GPT_3_5_TURBO_0125, self::GPT_3_5_TURBO_1106, self::GPT_4_TURBO, self::GPT_4, self::GPT_4_1106_PREVIEW, self::GPT_4_0125_PREVIEW, self::TEXT_EMBEDDING_ADA_002, self::TEXT_EMBEDDING_3_SMALL, self::TEXT_EMBEDDING_3_LARGE, self::WHISPER_1, self::DALL_E_2, self::DALL_E_3, self::GPT_IMAGE_1, self::TTS_1, self::TTS_1_HD, self::GPT_4_O, self::GPT_4_O_MINI, self::GPT_4_O_SEARCH_PREVIEW, self::GPT_4_O_MINI_SEARCH_PREVIEW, self::GPT_4_O1_PREVIEW, self::GPT_4_O1_MINI, self::GPT_O_1, self::GPT_O_03_mini, self::GPT_4_O_REALTIME_PREVIEW, self::GPT_4_1, self::GPT_4_1_MINI, self::GPT_4_1_NANO, self::GPT_O_3, self::GPT_5, self::GPT_5_MINI, self::GPT_5_NANO, self::GPT_5_CHAT, self::GPT_5_PRO, self::SORA_2, self::SORA_2_PRO, self::GPT_O_4_MINI => EngineEnum::OPEN_AI, // Anthropic self::CLAUDE_SONNET_4_5, self::CLAUDE_OPUS_4_1, self::CLAUDE_SONNET_4, self::CLAUDE_OPUS_4, self::CLAUDE_3_7_SONNET, self::CLAUDE_3_5_HAIKU, self::CLAUDE_3_5_SONNET_V2, self::CLAUDE_3_5_SONNET, self::CLAUDE_3_SONNET, self::CLAUDE_3_OPUS, self::CLAUDE_3_HAIKU, self::CLAUDE_2_1, self::CLAUDE_2_0, self::VOYAGE_2, self::VOYAGE_LARGE_2, self::VOYAGE_CODE_2 => EngineEnum::ANTHROPIC, // Deepseek self::DEEPSEEK_CHAT, self::DEEPSEEK_REASONER => EngineEnum::DEEP_SEEK, // Clipdrop self::CLIPDROP => EngineEnum::CLIPDROP, // Novita self::NOVITA => EngineEnum::NOVITA, // Freepik self::FREEPIK => EngineEnum::FREEPIK, // Plagiarism Check self::PLAGIARISMCHECK => EngineEnum::PLAGIARISM_CHECK, // SYNTHESIA self::SYNTHESIA => EngineEnum::SYNTHESIA, // HEYGEN self::HEYGEN => EngineEnum::HEYGEN, // Pebblely self::PEBBLELY => EngineEnum::PEBBLELY, // Gemini self::GEMINI_2_5_FLASH_PREVIEW_05_20, self::GEMINI_2_5_PRO, self::GEMINI_2_0_FLASH, self::GEMINI_2_0_FLASH_LITE, self::GEMINI_1_5_PRO, self::GEMINI_1_5_FLASH, self::GEMINI_EMBEDDING_EXP, self::GEMINI_TEXT_EMBEDDING_004 => EngineEnum::GEMINI, // Unsplash self::UNSPLASH => EngineEnum::UNSPLASH, // Pexels self::PEXELS => EngineEnum::PEXELS, // Pixabay self::PIXABAY => EngineEnum::PIXABAY, // Elevenlabs self::ELEVENLABS, self::ELEVENLABS_VOICE_CHATBOT, self::ELEVENLABS_AI_MUSIC, self::ISOLATOR => EngineEnum::ELEVENLABS, // Google self::GOOGLE => EngineEnum::GOOGLE, // Azure self::AZURE, self::AZURE_OPENAI => EngineEnum::AZURE, // Speechify self::Speechify => EngineEnum::Speechify, // Serper self::SERPER => EngineEnum::SERPER, // Perplexity self::PERPLEXITY => EngineEnum::PERPLEXITY, // PIAPI self::MIDJOURNEY => EngineEnum::PI_API, // X AI self::GROK_2_1212, self::GROK_2_VISION_1212, self::GROK_3, self::GROK_3_MINI, self::GROK_3_FAST, self::GROK_3_MINI_FAST, self::GROK_4, self::GROK_4_FAST => EngineEnum::X_AI, // Gamma AI self::GAMMA_AI => EngineEnum::GAMMA_AI, // FAL AI self::VEO_2, self::VEED, self::VEO_3_1_TEXT_TO_VIDEO, self::VEO_3_1_TEXT_TO_VIDEO_FAST, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO_FAST, self::VEO_3_1_IMAGE_TO_VIDEO, self::VEO_3_1_IMAGE_TO_VIDEO_FAST, self::VEO_3_1_REFERENCE_TO_VIDEO, self::VEO_3, self::VEO_3_FAST, self::KLING_2_5_TURBO_PRO_TTV, self::KLING_2_5_TURBO_PRO_ITV, self::KLING_2_5_TURBO_STANDARD_ITV, self::KLING_VIDEO, self::VIDEO_UPSCALER, self::COGVIDEOX_5B, self::ANIMATEDIFF_V2V, self::FAST_ANIMATEDIFF_TURBO, self::FLUX_PRO, self::NANO_BANANA, self::NANO_BANANA_EDIT, self::SEEDREAM_4, self::SEEDREAM_4_EDIT, self::IMAGEN_4, self::FLUX_PRO_KONTEXT_MAX_MULTI, self::FLUX_PRO_KONTEXT_TEXT_TO_IMAGE, self::FLUX_PRO_KONTEXT, self::FLUX_PRO_1_1, self::FLUX_REALISM, self::FLUX_SCHNELL, self::IDEOGRAM, self::KLING, self::KLING_2_1, self::KLING_IMAGE, self::LUMA_DREAM_MACHINE, self::HAIPER, self::MINIMAX => EngineEnum::FAL_AI, // Creatify self::AD_MARKETING_VIDEO => EngineEnum::CREATIFY, // Topview self::AD_MARKETING_VIDEO_TOPVIEW => EngineEnum::TOPVIEW, // AI CLIP self::AI_CLIP_KLAP => EngineEnum::KLAP, self::AI_CLIP_VIZARD => EngineEnum::VIZARD, // AI/ML api minimax engine self::MUSIC_01 => EngineEnum::AI_ML_MINIMAX, // Open Router self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022, self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_SELF_MODERATED, self::ANTHROPIC_CLAUDE_3_5_HAIKU, self::ANTHROPIC_CLAUDE_3_5_HAIKU_SELF_MODERATED, self::LUMIMAID_V02_70B, self::MAGNUM_V4_72B, self::XAI_GROK_BETA, self::MINISTRAL_8B, self::MINISTRAL_3B, self::QWEN25_7B_INSTRUCT, self::NVIDIA_LLAMA_31_NEMOTRON_70B_INSTRUCT, self::INFLECTION_3_PI, self::INFLECTION_3_PRODUCTIVITY, self::LIQUID_LFM_40B_MOE_FREE, self::LIQUID_LFM_40B_MOB, self::ROCINANTE_12B, self::EVA_QWEN25_14B, self::MAGNUM_V2_72B, self::META_LLAMA32_3B_INSTRUCT_FREE, self::META_LLAMA32_1B_INSTRUCT_FREE, self::META_LLAMA32_3B_INSTRUCT, self::META_LLAMA32_1B_INSTRUCT, self::PERPLEXITY_LLAMA_31_SONAR_405B_ONLINE, self::PERPLEXITY_LLAMA_31_SONAR_70B_ONLINE, self::PERPLEXITY_LLAMA_31_SONAR_70B, self::PERPLEXITY_LLAMA_31_SONAR_8B_ONLINE, self::PERPLEXITY_LLAMA_31_SONAR_8B => EngineEnum::OPEN_ROUTER, }; } public function driverClass(): string { return match ($this) { // Together self::BLACK_FOREST_LABS_FLUX_1_SCHNELL => Together\FLUX1SchnellDriver::class, // Stable Diffusion self::IMAGE_TO_VIDEO => StableDiffusion\ImageToVideoDriver::class, self::STABLE_DIFFUSION_XL_1024_V_1_0 => StableDiffusion\XL1024V10Driver::class, self::STABLE_DIFFUSION_V_1_6 => StableDiffusion\V16Driver::class, self::SD_3 => StableDiffusion\Sd3Driver::class, self::SD_3_TURBO => StableDiffusion\Sd3TurboDriver::class, self::SD_3_MEDIUM => StableDiffusion\Sd3MediumDriver::class, self::SD_3_LARGE => StableDiffusion\Sd3LargeDriver::class, self::SD_3_LARGE_TURBO => StableDiffusion\Sd3LargeTurboDriver::class, self::SD_3_5_LARGE => StableDiffusion\Sd35LargeDriver::class, self::SD_3_5_LARGE_TURBO => StableDiffusion\Sd35LargeTurboDriver::class, self::SD_3_5_MEDIUM => StableDiffusion\Sd35MediumDriver::class, self::CORE => StableDiffusion\CoreDriver::class, self::ULTRA => StableDiffusion\UltraDriver::class, self::AWS_BEDROCK => StableDiffusion\AwsBedrockDriver::class, // OpenAI self::DAVINCI => OpenAI\DavinciDriver::class, self::TEXT_DAVINCI_003 => OpenAI\TextDavinciDriver::class, self::GPT_3_5_TURBO => OpenAI\GPT35TurboDriver::class, self::GPT_3_5_TURBO_0125 => OpenAI\GPT35Turbo0125Driver::class, self::GPT_3_5_TURBO_1106 => OpenAI\GPT35Turbo1106Driver::class, self::GPT_4_TURBO => OpenAI\GPT4TurboDriver::class, self::GPT_4 => OpenAI\GPT4Driver::class, self::GPT_4_1106_PREVIEW => OpenAI\GPT41106PreviewDriver::class, self::GPT_4_0125_PREVIEW => OpenAI\GPT40125PreviewDriver::class, self::TEXT_EMBEDDING_ADA_002 => OpenAI\TextEmbeddingAdaDriver::class, self::TEXT_EMBEDDING_3_SMALL => OpenAI\TextEmbedding3SmallDriver::class, self::TEXT_EMBEDDING_3_LARGE => OpenAI\TextEmbedding3LargeDriver::class, self::WHISPER_1 => OpenAI\Whisper1Driver::class, self::DALL_E_2 => OpenAI\DallE2Driver::class, self::DALL_E_3 => OpenAI\DallE3Driver::class, self::GPT_IMAGE_1 => OpenAI\GptImage1Driver::class, self::TTS_1 => OpenAI\TTS1Driver::class, self::TTS_1_HD => OpenAI\TTS1HDDriver::class, self::GPT_4_O => OpenAI\GPT4ODriver::class, self::GPT_4_O_MINI => OpenAI\GPT4OMiniDriver::class, self::GPT_4_O_SEARCH_PREVIEW => OpenAI\GPT4OSearchPreviewDriver::class, self::GPT_4_O_MINI_SEARCH_PREVIEW => OpenAI\GPT4OMiniSearchPreviewDriver::class, self::GPT_4_O1_PREVIEW => OpenAI\GPT4O1PreviewDriver::class, self::GPT_4_O1_MINI => OpenAI\GPT4O1MiniDriver::class, self::GPT_O_1 => OpenAI\GPTO1Driver::class, self::GPT_O_03_mini => OpenAI\GPTO3MiniDriver::class, self::GPT_4_O_REALTIME_PREVIEW => OpenAI\GPT4ORealtimePreviewDriver::class, self::GPT_4_1 => OpenAI\GPT41Driver::class, self::GPT_O_4_MINI => OpenAI\GPTO4MiniDriver::class, self::GPT_4_1_NANO => OpenAI\GPT41NanoDriver::class, self::GPT_4_1_MINI => OpenAI\GPT41MiniDriver::class, self::GPT_O_3 => OpenAI\GPTO3Driver::class, self::GPT_5 => OpenAI\GPT5Driver::class, self::GPT_5_MINI => OpenAI\GPT5MiniDriver::class, self::GPT_5_NANO => OpenAI\GPT5NanoDriver::class, self::GPT_5_CHAT => OpenAI\GPT5ChatDriver::class, self::GPT_5_PRO => OpenAI\GPT5ProDriver::class, self::SORA_2 => OpenAI\Sora2Driver::class, self::SORA_2_PRO => OpenAI\Sora2ProDriver::class, // Anthropic self::CLAUDE_SONNET_4_5 => Anthropic\ClaudeSonnet45Driver::class, self::CLAUDE_OPUS_4_1 => Anthropic\ClaudeOpus41Driver::class, self::CLAUDE_SONNET_4 => Anthropic\ClaudeSonnet4Driver::class, self::CLAUDE_OPUS_4 => Anthropic\ClaudeOpus4Driver::class, self::CLAUDE_3_7_SONNET => Anthropic\Claude37SonnetDriver::class, self::CLAUDE_3_5_HAIKU => Anthropic\Claude35HaikuDriver::class, self::CLAUDE_3_5_SONNET_V2 => Anthropic\Claude35SonnetV2Driver::class, self::CLAUDE_3_5_SONNET => Anthropic\Claude35SonnetDriver::class, self::CLAUDE_3_SONNET => Anthropic\Claude3SonnetDriver::class, self::CLAUDE_3_OPUS => Anthropic\Claude3OpusDriver::class, self::CLAUDE_3_HAIKU => Anthropic\Claude3HaikuDriver::class, self::CLAUDE_2_1 => Anthropic\Claude21Driver::class, self::CLAUDE_2_0 => Anthropic\Claude20Driver::class, self::VOYAGE_2 => Anthropic\Voyage2Driver::class, self::VOYAGE_LARGE_2 => Anthropic\VoyageLarge2Driver::class, self::VOYAGE_CODE_2 => Anthropic\VoyageCode2Driver::class, // Gemini self::GEMINI_2_5_FLASH_PREVIEW_05_20 => Gemini\Gemini25FlashPreview0417Driver::class, self::GEMINI_2_5_PRO => Gemini\Gemini25ProExp0325Driver::class, self::GEMINI_2_0_FLASH => Gemini\Gemini20FlashDriver::class, self::GEMINI_2_0_FLASH_LITE => Gemini\Gemini20FlashLiteDriver::class, self::GEMINI_1_5_PRO => Gemini\Gemini15ProDriver::class, self::GEMINI_1_5_FLASH => Gemini\Gemini15FlashDriver::class, self::GEMINI_EMBEDDING_EXP => Gemini\GeminiEmbeddingExpDriver::class, self::GEMINI_TEXT_EMBEDDING_004 => Gemini\GeminiTextEmbeding004Driver::class, // Deepseek self::DEEPSEEK_CHAT => Deepseek\DeepseekChatDriver::class, self::DEEPSEEK_REASONER => Deepseek\DeepseekReasonerDriver::class, // Others self::CLIPDROP => ClipDropDriver::class, self::NOVITA => NovitaDriver::class, self::FREEPIK => FreepikDriver::class, self::PLAGIARISMCHECK => PlagiarismCheckDriver::class, self::SYNTHESIA => SynthesiaDriver::class, self::HEYGEN => HeygenDriver::class, self::PEBBLELY => PebblelyDriver::class, self::UNSPLASH => UnsplashDriver::class, self::PEXELS => PexelsDriver::class, self::PIXABAY => PixabayDriver::class, self::ELEVENLABS => ElevenLabs\ElevenlabsDriver::class, self::ELEVENLABS_VOICE_CHATBOT => ElevenLabs\ElevenlabsVoiceChatbotDriver::class, self::ISOLATOR => ElevenLabs\IsolatorDriver::class, self::ELEVENLABS_AI_MUSIC => ElevenLabs\ElevenlabsAIMusicDriver::class, self::GOOGLE => GoogleDriver::class, self::AZURE => AzureDriver::class, self::AZURE_OPENAI => AzureOpenaiDriver::class, self::Speechify => SpeechifyDriver::class, self::SERPER => SerperDriver::class, self::PERPLEXITY => PerplexityDriver::class, // PiAPI self::MIDJOURNEY => MidjourneyDriver::class, // X AI self::GROK_2_1212 => XAI\Grok21212Driver::class, self::GROK_2_VISION_1212 => XAI\Grok2Vision1212Driver::class, self::GROK_3 => XAI\Grok3Driver::class, self::GROK_3_MINI => XAI\Grok3MiniDriver::class, self::GROK_3_FAST => XAI\Grok3FastDriver::class, self::GROK_3_MINI_FAST => XAI\Grok3MiniFastDriver::class, self::GROK_4 => XAI\Grok4Driver::class, self::GROK_4_FAST => XAI\Grok4FastDriver::class, // Gamma AI self::GAMMA_AI => GammaAIDriver::class, // FAL AI self::VEO_2 => FalAI\Veo2Driver::class, self::VEO_3 => FalAI\Veo3Driver::class, self::VEO_3_FAST => FalAI\Veo3FastDriver::class, self::VEO_3_1_TEXT_TO_VIDEO => FalAI\Veo31\Veo31TTVDriver::class, self::VEO_3_1_TEXT_TO_VIDEO_FAST => FalAI\Veo31\Veo31TTVFastDriver::class, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO => FalAI\Veo31\Veo31FLFTVDriver::class, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO_FAST => FalAI\Veo31\Veo31FLFTVFastDriver::class, self::VEO_3_1_IMAGE_TO_VIDEO => FalAI\Veo31\Veo31ITVDriver::class, self::VEO_3_1_IMAGE_TO_VIDEO_FAST => FalAI\Veo31\Veo31ITVFastDriver::class, self::VEO_3_1_REFERENCE_TO_VIDEO => FalAI\Veo31\Veo31RTVDriver::class, self::KLING_VIDEO => FalAI\KlingVideoDriver::class, self::VEED => FalAI\VeedDriver::class, self::FLUX_PRO => FalAI\FluxProDriver::class, self::NANO_BANANA => FalAI\NanoBananaDriver::class, self::NANO_BANANA_EDIT => FalAI\NanoBananaEditDriver::class, self::SEEDREAM_4 => FalAI\SeeDream4Driver::class, self::SEEDREAM_4_EDIT => FalAI\SeeDream4EditDriver::class, self::IMAGEN_4 => FalAI\Imagen4Driver::class, self::FLUX_PRO_KONTEXT_MAX_MULTI => FalAI\FluxProKontextMaxMultiDriver::class, self::FLUX_PRO_KONTEXT_TEXT_TO_IMAGE => FalAI\FluxProKontextTextToImageDriver::class, self::FLUX_PRO_KONTEXT => FalAI\FluxProKontextDriver::class, self::IDEOGRAM => FalAI\IdeogramDriver::class, self::FLUX_PRO_1_1 => FalAI\FluxPro11Driver::class, self::FLUX_REALISM => FalAI\FluxRealismDriver::class, self::FLUX_SCHNELL => FalAI\FluxSchnellDriver::class, self::KLING => FalAI\KlingDriver::class, self::KLING_2_1 => FalAI\KlingV21Driver::class, self::KLING_2_5_TURBO_PRO_TTV => FalAI\Kling25Turbo\Kling25TurboProTTVDriver::class, self::KLING_2_5_TURBO_PRO_ITV => FalAI\Kling25Turbo\Kling25TurboProITVDriver::class, self::KLING_2_5_TURBO_STANDARD_ITV => FalAI\Kling25Turbo\Kling25TurboStandardITVDriver::class, self::KLING_IMAGE => FalAI\KlingImageDriver::class, self::LUMA_DREAM_MACHINE => FalAI\LumaDreamMachineDriver::class, self::HAIPER => FalAI\HaiperDriver::class, self::MINIMAX => FalAI\MinimaxDriver::class, self::VIDEO_UPSCALER => FalAI\VideoUpscalerDriver::class, self::COGVIDEOX_5B => FalAI\Cogvideox5bDriver::class, self::ANIMATEDIFF_V2V => FalAI\AnimatediffV2vDriver::class, self::FAST_ANIMATEDIFF_TURBO => FalAI\FastAnimatediffTurboDriver::class, // CREATIFY self::AD_MARKETING_VIDEO => Creatify\AdMarketingVideoDriver::class, // Topview self::AD_MARKETING_VIDEO_TOPVIEW => Topview\AdMarketingVideoTopviewDriver::class, // Ai clip self::AI_CLIP_KLAP => Klap\AIClipKlapDriver::class, self::AI_CLIP_VIZARD => Vizard\AIClipVizardDriver::class, // AI/ML api minimax engine self::MUSIC_01 => AiMlMinimax\Music01Driver::class, // OpenRouter self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022 => OpenRouter\AnthropicClaude35Haiku20241022::class, self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_SELF_MODERATED => OpenRouter\AnthropicClaude35Haiku20241022SelfModerated::class, self::ANTHROPIC_CLAUDE_3_5_HAIKU => OpenRouter\AnthropicClaude35Haiku::class, self::ANTHROPIC_CLAUDE_3_5_HAIKU_SELF_MODERATED => OpenRouter\AnthropicClaude35HaikuSelfModerated::class, self::LUMIMAID_V02_70B => OpenRouter\LumimaidV0270B::class, self::MAGNUM_V4_72B => OpenRouter\MagnumV472B::class, self::XAI_GROK_BETA => OpenRouter\XaiGrokBeta::class, self::MINISTRAL_8B => OpenRouter\Ministral8B::class, self::MINISTRAL_3B => OpenRouter\Ministral3B::class, self::QWEN25_7B_INSTRUCT => OpenRouter\Qwen257BInstruct::class, self::NVIDIA_LLAMA_31_NEMOTRON_70B_INSTRUCT => OpenRouter\NvidiaLlama31Nemotron70BInstruct::class, self::INFLECTION_3_PI => OpenRouter\Inflection3Pi::class, self::INFLECTION_3_PRODUCTIVITY => OpenRouter\Inflection3Productivity::class, self::LIQUID_LFM_40B_MOE_FREE => OpenRouter\LiquidLfm40BMoeFree::class, self::LIQUID_LFM_40B_MOB => OpenRouter\LiquidLfm40BMob::class, self::ROCINANTE_12B => OpenRouter\Rocinante12B::class, self::EVA_QWEN25_14B => OpenRouter\EvaQwen2514B::class, self::MAGNUM_V2_72B => OpenRouter\MagnumV272B::class, self::META_LLAMA32_3B_INSTRUCT_FREE => OpenRouter\MetaLlama323BInstructFree::class, self::META_LLAMA32_1B_INSTRUCT_FREE => OpenRouter\MetaLlama321BInstructFree::class, self::META_LLAMA32_3B_INSTRUCT => OpenRouter\MetaLlama323BInstruct::class, self::META_LLAMA32_1B_INSTRUCT => OpenRouter\MetaLlama321BInstruct::class, self::PERPLEXITY_LLAMA_31_SONAR_405B_ONLINE => OpenRouter\PerplexityLlama31Sonar405BOnline::class, self::PERPLEXITY_LLAMA_31_SONAR_70B_ONLINE => OpenRouter\PerplexityLlama31Sonar70BOnline::class, self::PERPLEXITY_LLAMA_31_SONAR_70B => OpenRouter\PerplexityLlama31Sonar70B::class, self::PERPLEXITY_LLAMA_31_SONAR_8B_ONLINE => OpenRouter\PerplexityLlama31Sonar8BOnline::class, self::PERPLEXITY_LLAMA_31_SONAR_8B => OpenRouter\PerplexityLlama31Sonar8B::class, }; } /** @noinspection PhpDuplicateMatchArmBodyInspection */ public function unitPrice(): float { return match ($this) { // Images & Video Models self::BLACK_FOREST_LABS_FLUX_1_SCHNELL => 0.01, self::IMAGE_TO_VIDEO => 0.5, self::STABLE_DIFFUSION_XL_1024_V_1_0 => 0.05, self::STABLE_DIFFUSION_V_1_6 => 0.03, self::SD_3, self::ULTRA, self::SD_3_TURBO => 0.06, self::SD_3_MEDIUM => 0.06, self::SD_3_LARGE => 0.10, self::SD_3_LARGE_TURBO => 0.15, self::SD_3_5_LARGE => 0.15, self::SD_3_5_LARGE_TURBO => 0.20, self::SD_3_5_MEDIUM => 0.10, self::CORE => 0.03, self::AWS_BEDROCK => 0.05, // OpenAI self::DAVINCI, self::GPT_3_5_TURBO_1106, self::GPT_3_5_TURBO => 0.00000266, self::TEXT_DAVINCI_003 => 0.0000266, self::GPT_3_5_TURBO_0125 => 0.000001995, self::GPT_4_TURBO, self::GPT_4_1106_PREVIEW, self::GPT_4_0125_PREVIEW, self::TTS_1_HD => 0.0000399, self::GPT_4 => 0.0000798, self::TEXT_EMBEDDING_ADA_002 => 0.0000000665, self::TEXT_EMBEDDING_3_SMALL => 0.000000027, self::TEXT_EMBEDDING_3_LARGE => 0.0000000665, self::WHISPER_1 => 0.000000798, self::DALL_E_2 => 0.04, self::DALL_E_3 => 0.08, self::GPT_IMAGE_1 => 0.042, self::TTS_1, self::GPT_4_O => 0.00001995, self::GPT_4_O_MINI => 0.000000798, self::GPT_4_O_SEARCH_PREVIEW => 0.0000133, self::GPT_4_O_MINI_SEARCH_PREVIEW => 0.000000798, self::GPT_4_O1_PREVIEW => 0.0000798, self::GPT_4_O1_MINI => 0.000005852, self::GPT_O_1 => 0.0000798, self::GPT_O_03_mini => 0.000005852, self::GPT_4_O_REALTIME_PREVIEW => 0.0000266, self::GPT_4_1 => 0.00001064, self::GPT_4_1_NANO => 0.000000665, self::GPT_4_1_MINI => 0.00000266, self::GPT_O_4_MINI => 0.000005852, self::GPT_O_3 => 0.0000665, self::GPT_5 => 0.000013330, self::GPT_5_MINI => 0.000002670, self::GPT_5_NANO => 0.000000530, self::GPT_5_CHAT => 0.00001000, self::GPT_5_PRO => 0.00016, self::SORA_2 => 0.10, self::SORA_2_PRO => 0.50, // Anthropic self::CLAUDE_SONNET_4_5, self::CLAUDE_OPUS_4_1, self::CLAUDE_OPUS_4, self::CLAUDE_SONNET_4, self::CLAUDE_3_7_SONNET, self::CLAUDE_3_5_SONNET_V2, self::CLAUDE_3_5_SONNET, self::CLAUDE_3_SONNET => 0.000015, self::CLAUDE_3_5_HAIKU => 0.000003, self::CLAUDE_3_OPUS => 0.000015, self::CLAUDE_3_HAIKU => 0.000003, self::CLAUDE_2_1, self::CLAUDE_2_0 => 0.000015, // Voyage self::VOYAGE_2, self::VOYAGE_CODE_2 => 0.00001, self::VOYAGE_LARGE_2 => 0.000015, // Deepseek self::DEEPSEEK_CHAT => 0.00000147, self::DEEPSEEK_REASONER => 0.00000292, // Others self::CLIPDROP => 0.5, self::NOVITA => 0.017, self::FREEPIK => 0.20, self::PLAGIARISMCHECK => 0.000276, self::SYNTHESIA => 2.97, self::HEYGEN => 0.5, self::PEBBLELY => 0.019, // Gemini self::GEMINI_2_5_FLASH_PREVIEW_05_20 => 0.00000333, self::GEMINI_2_5_PRO => 0.00001333, self::GEMINI_2_0_FLASH => 0.00000053, self::GEMINI_2_0_FLASH_LITE => 0.00000040, self::GEMINI_1_5_PRO => 0.00001333, self::GEMINI_EMBEDDING_EXP => 0.00001, self::GEMINI_1_5_FLASH => 0.00000051, self::GEMINI_TEXT_EMBEDDING_004 => 0.00001, // Unsplash self::UNSPLASH, self::PEXELS, self::PIXABAY => 0.01, // Elevenlabs self::ELEVENLABS, self::ELEVENLABS_VOICE_CHATBOT, self::ELEVENLABS_AI_MUSIC, self::ISOLATOR => 0.3, // Google self::GOOGLE => 0.016, // Azure self::AZURE => 0.015, self::AZURE_OPENAI => 0.00, // Speechify self::Speechify => 0.015, // Serper self::SERPER => 0.001, // Perplexity self::PERPLEXITY => 0.00002, // PiAPI self::MIDJOURNEY => 0.03, // X AI self::GROK_2_1212, self::GROK_2_VISION_1212 => 0.00001333, self::GROK_3 => 0.00002, self::GROK_3_MINI => 0.00000067, self::GROK_3_FAST => 0.00003333, self::GROK_3_MINI_FAST => 0.000001, self::GROK_4 => 0.000011000, self::GROK_4_FAST => 0.000000650, // FAL AI self::NANO_BANANA => 0.039, self::SEEDREAM_4 => 0.03, self::FLUX_PRO_1_1, self::FLUX_REALISM, self::IMAGEN_4 => 0.04, self::NANO_BANANA_EDIT, self::SEEDREAM_4_EDIT => 0.4, self::GAMMA_AI => 0.01, self::VEO_2 => 2.5, self::VEED => 0.35, self::VEO_3_1_TEXT_TO_VIDEO => 3.2, self::VEO_3_1_TEXT_TO_VIDEO_FAST => 1.2, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO => 3.2, self::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO_FAST => 1.2, self::VEO_3_1_IMAGE_TO_VIDEO => 3.2, self::VEO_3_1_IMAGE_TO_VIDEO_FAST => 1.2, self::VEO_3_1_REFERENCE_TO_VIDEO => 3.2, self::VEO_3_FAST => 1.2, self::VEO_3 => 3.2, self::KLING_VIDEO => 1.4, self::FLUX_PRO_KONTEXT_TEXT_TO_IMAGE, self::FLUX_PRO_KONTEXT, self::FLUX_PRO => 0.4, self::FLUX_SCHNELL => 0.003, self::FLUX_PRO_KONTEXT_MAX_MULTI => 0.8, self::KLING_2_5_TURBO_PRO_TTV, self::KLING_2_5_TURBO_PRO_ITV, self::KLING_2_5_TURBO_STANDARD_ITV => 0.6, self::KLING, self::KLING_2_1, self::KLING_IMAGE, self::LUMA_DREAM_MACHINE, self::HAIPER, self::MINIMAX => 0.5, self::IDEOGRAM => 0.6, self::VIDEO_UPSCALER, self::COGVIDEOX_5B, self::ANIMATEDIFF_V2V, self::FAST_ANIMATEDIFF_TURBO => 0.20, // Creatify self::AD_MARKETING_VIDEO => 1.5, // Topview self::AD_MARKETING_VIDEO_TOPVIEW => 1.5, // Ai clips self::AI_CLIP_KLAP => 0.48, self::AI_CLIP_VIZARD => 0.24, // Music self::MUSIC_01 => 0.05, // OpenRouter self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022 => 0.00000533, self::ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_SELF_MODERATED => 0.00000533, self::ANTHROPIC_CLAUDE_3_5_HAIKU => 0.00000533, self::ANTHROPIC_CLAUDE_3_5_HAIKU_SELF_MODERATED => 0.00000533, self::LUMIMAID_V02_70B => 0.005, self::MAGNUM_V4_72B => 0.005, self::XAI_GROK_BETA => 0.005, self::MINISTRAL_8B => 0.005, self::MINISTRAL_3B => 0.005, self::QWEN25_7B_INSTRUCT => 0.005, self::NVIDIA_LLAMA_31_NEMOTRON_70B_INSTRUCT => 0.005, self::INFLECTION_3_PI => 0.005, self::INFLECTION_3_PRODUCTIVITY => 0.005, self::LIQUID_LFM_40B_MOE_FREE => 0.005, self::LIQUID_LFM_40B_MOB => 0.005, self::ROCINANTE_12B => 0.005, self::EVA_QWEN25_14B => 0.005, self::MAGNUM_V2_72B => 0.005, self::META_LLAMA32_3B_INSTRUCT_FREE => 0.005, self::META_LLAMA32_1B_INSTRUCT_FREE => 0.005, self::META_LLAMA32_3B_INSTRUCT => 0.005, self::META_LLAMA32_1B_INSTRUCT => 0.005, self::PERPLEXITY_LLAMA_31_SONAR_405B_ONLINE => 0.005, self::PERPLEXITY_LLAMA_31_SONAR_70B_ONLINE => 0.005, self::PERPLEXITY_LLAMA_31_SONAR_70B => 0.005, self::PERPLEXITY_LLAMA_31_SONAR_8B_ONLINE => 0.005, self::PERPLEXITY_LLAMA_31_SONAR_8B => 0.000000270, // Default fallback default => 0.0, }; } public static function getPlanLimits(EngineEnum $engine): Collection { return collect(self::listableCases())->filter( fn (EntityEnum $model) => $model->engine() === $engine )->mapWithKeys( fn (EntityEnum $model) => [ $model->slug() => [ 'credit' => 0, 'isUnlimited' => false, ], ] ); } public function subLabel(): string { $driverClass = $this->driverClass(); return match (true) { class_interface_exists($driverClass, WithVideoToVideoInterface::class) => __('Video'), class_interface_exists($driverClass, WithImagesInterface::class) => __('Images'), class_interface_exists($driverClass, WithWordsInterface::class) => __('Words'), class_interface_exists($driverClass, WithCharsInterface::class) => __('Characters'), class_interface_exists($driverClass, WithMinuteInterface::class) => __('Minutes'), class_interface_exists($driverClass, WithSecondInterface::class) => __('Seconds'), class_interface_exists($driverClass, WithImageToVideoInterface::class) => __('Image to Video'), class_interface_exists($driverClass, WithTextToSpeechInterface::class) => __('Text to Speech'), class_interface_exists($driverClass, WithSpeechToTextInterface::class) => __('Speech to Text'), class_interface_exists($driverClass, WithTextToVideoInterface::class) => __('Text to Video'), class_interface_exists($driverClass, WithVisionPreviewInterface::class) => __('Vision'), class_interface_exists($driverClass, WithPresentationInterface::class) => __('Presentation'), class_interface_exists($driverClass, WithPlagiarismInterface::class) => __('Plagiarism'), }; } public function tokenType(): AITokenType { $driverClass = $this->driverClass(); return match (true) { class_interface_exists($driverClass, WithImagesInterface::class) => AITokenType::IMAGE, class_interface_exists($driverClass, WithWordsInterface::class) => AITokenType::WORD, class_interface_exists($driverClass, WithCharsInterface::class) => AITokenType::CHARACTER, class_interface_exists($driverClass, WithMinuteInterface::class) => AITokenType::MINUTE, class_interface_exists($driverClass, WithSecondInterface::class) => AITokenType::SECOND, class_interface_exists($driverClass, WithPresentationInterface::class) => AITokenType::PRESENTATION, class_interface_exists($driverClass, WithImageToVideoInterface::class) => AITokenType::IMAGE_TO_VIDEO, class_interface_exists($driverClass, WithTextToSpeechInterface::class) => AITokenType::TEXT_TO_SPEECH, class_interface_exists($driverClass, WithSpeechToTextInterface::class) => AITokenType::SPEECH_TO_TEXT, class_interface_exists($driverClass, WithTextToVideoInterface::class) => AITokenType::TEXT_TO_VIDEO, class_interface_exists($driverClass, WithVideoToVideoInterface::class) => AITokenType::VIDEO_TO_VIDEO, class_interface_exists($driverClass, WithVisionPreviewInterface::class) => AITokenType::VISION, class_interface_exists($driverClass, WithPlagiarismInterface::class) => AITokenType::PLAGIARISM }; } public function tooltipHowToCalc(): string { $driverClass = $this->driverClass(); return match (true) { class_interface_exists($driverClass, WithImagesInterface::class) => __('1 Credit = 1 Image'), class_interface_exists($driverClass, WithWordsInterface::class), class_interface_exists($driverClass, WithSpeechToTextInterface::class), class_interface_exists($driverClass, WithVisionPreviewInterface::class), class_interface_exists($driverClass, WithPlagiarismInterface::class) => __('1 Credit = 1 Word'), class_interface_exists($driverClass, WithCharsInterface::class) => __('1 Credit = 1 Character'), class_interface_exists($driverClass, WithMinuteInterface::class) => __('1 Credit = 1 Minute'), class_interface_exists($driverClass, WithSecondInterface::class) => __('1 Credit = 1 Second'), class_interface_exists($driverClass, WithPresentationInterface::class) => __('1 Credit = 1 Presentation Credit'), class_interface_exists($driverClass, WithImageToVideoInterface::class), class_interface_exists($driverClass, WithVideoToVideoInterface::class), class_interface_exists($driverClass, WithTextToVideoInterface::class) => __('1 Credit = 1 Video'), class_interface_exists($driverClass, WithTextToSpeechInterface::class) => __('1 Credit = 1 Voice'), }; } public static function entityDrivers(): array { return [ WithImagesInterface::class, WithWordsInterface::class, WithCharsInterface::class, WithMinuteInterface::class, WithSecondInterface::class, WithPresentationInterface::class, WithImageToVideoInterface::class, WithVideoToVideoInterface::class, WithTextToSpeechInterface::class, WithSpeechToTextInterface::class, WithTextToVideoInterface::class, WithVisionPreviewInterface::class, WithPlagiarismInterface::class, ]; } public function defaultCreditForDemo(): float { $driverClass = $this->driverClass(); return match (true) { class_interface_exists($driverClass, WithImagesInterface::class) => 200, class_interface_exists($driverClass, WithWordsInterface::class), class_interface_exists($driverClass, WithCharsInterface::class) => 5000, class_interface_exists($driverClass, WithMinuteInterface::class) => 20, class_interface_exists($driverClass, WithSecondInterface::class) => 8, class_interface_exists($driverClass, WithPresentationInterface::class), class_interface_exists($driverClass, WithVideoToVideoInterface::class), class_interface_exists($driverClass, WithImageToVideoInterface::class), class_interface_exists($driverClass, WithTextToSpeechInterface::class), class_interface_exists($driverClass, WithSpeechToTextInterface::class), class_interface_exists($driverClass, WithTextToVideoInterface::class), class_interface_exists($driverClass, WithVisionPreviewInterface::class), class_interface_exists($driverClass, WithPlagiarismInterface::class) => 100, }; } public function isBetaEntity(): bool { return false; } public static function embedingModels(EngineEnum $engineEnum): array { return match ($engineEnum) { EngineEnum::ANTHROPIC => [ self::VOYAGE_2, self::VOYAGE_CODE_2, self::VOYAGE_LARGE_2, ], EngineEnum::GEMINI => [ self::GEMINI_TEXT_EMBEDDING_004, self::GEMINI_EMBEDDING_EXP, ], default => [ self::TEXT_EMBEDDING_ADA_002, self::TEXT_EMBEDDING_3_SMALL, self::TEXT_EMBEDDING_3_LARGE, ] }; } public function isEmbedding(): bool { return in_array($this, [ self::TEXT_EMBEDDING_ADA_002, self::TEXT_EMBEDDING_3_SMALL, self::TEXT_EMBEDDING_3_LARGE, self::GEMINI_TEXT_EMBEDDING_004, self::GEMINI_EMBEDDING_EXP, self::VOYAGE_2, self::VOYAGE_CODE_2, self::VOYAGE_LARGE_2, ]); } public static function reWriterModels(EngineEnum $engineEnum): array { return match ($engineEnum) { default => [ self::DAVINCI, self::TEXT_DAVINCI_003, self::GPT_3_5_TURBO, self::GPT_3_5_TURBO_0125, self::GPT_4, self::GPT_4_1106_PREVIEW, self::GPT_4_0125_PREVIEW, self::GPT_4_TURBO, self::GPT_4_O, self::GPT_4_O_MINI, self::GPT_4_O_SEARCH_PREVIEW, self::GPT_4_O_MINI_SEARCH_PREVIEW, self::GPT_4_O1_PREVIEW, self::GPT_4_O1_MINI, self::GPT_O_1, self::GPT_O_03_mini, self::GPT_4_1, self::GPT_O_4_MINI, self::GPT_4_1_NANO, self::GPT_4_1_MINI, self::GPT_O_3, self::GPT_5, self::GPT_5_MINI, self::GPT_5_NANO, self::GPT_5_CHAT, self::GPT_5_PRO, self::DEEPSEEK_CHAT, self::DEEPSEEK_REASONER, ] }; } public function keyAsString(): string { return (string) $this->name; } public function valueAsString(): string { return (string) $this->value; } } PK|„W]áÿ–�G�GEngineEnum.phpnu„[µü¤ __('Together'), self::OPEN_AI => __('OpenAI'), self::DEEP_SEEK => __('Deepseek'), self::STABLE_DIFFUSION => __('Stable Diffusion'), self::ANTHROPIC => __('Anthropic'), self::GEMINI => __('Gemini'), self::UNSPLASH => __('Unsplash'), self::PEXELS => __('Pexels'), self::PIXABAY => __('Pixabay'), self::ELEVENLABS => __('Elevenlabs'), self::GOOGLE => __('Google TTS'), self::AZURE => __('Azure'), self::Speechify => __('Speechify TTS'), self::SERPER => __('Serper'), self::PERPLEXITY => __('Perplexity'), self::CLIPDROP => __('Clipdrop'), self::NOVITA => __('Novita'), self::FREEPIK => __('Freepik'), self::PLAGIARISM_CHECK => __('Plagiarism Check'), self::SYNTHESIA => __('Synthesia'), self::HEYGEN => __('Heygen'), self::PEBBLELY => __('Pebblely'), self::FAL_AI => __('Fal AI'), self::GAMMA_AI => __('Gamma AI'), self::X_AI => __('X AI'), self::PI_API => __('PiAPI'), self::AI_ML_MINIMAX => __('AI/ML Minimax'), self::OPEN_ROUTER => __('Open Router'), self::CREATIFY => __('Creatify'), self::TOPVIEW => __('Topview'), self::VIZARD => __('Vizard'), self::KLAP => __('Klap'), }; } public function driverClass(): string { return match ($this) { self::OPEN_AI => OpenAIEngineDriver::class, self::PI_API => PiAPIEngineDriver::class, self::DEEP_SEEK => DeepSeekAIEngineDriver::class, self::STABLE_DIFFUSION => StableDiffusionEngineDriver::class, self::ANTHROPIC => AnthropicEngineDriver::class, self::GEMINI => GeminiEngineDriver::class, self::UNSPLASH => UnsplashEngineDriver::class, self::PEXELS => PexelsEngineDriver::class, self::PIXABAY => PixabayEngineDriver::class, self::ELEVENLABS => ElevenlabsEngineDriver::class, self::GOOGLE => GoogleEngineDriver::class, self::AZURE => AzureEngineDriver::class, self::Speechify => SpeechifyEngineDriver::class, self::SERPER => SerperEngineDriver::class, self::PERPLEXITY => PerplexityEngineDriver::class, self::CLIPDROP => ClipDropEngineDriver::class, self::NOVITA => NovitaEngineDriver::class, self::FREEPIK => FreepikEngineDriver::class, self::PLAGIARISM_CHECK => PlagiarismCheckEngineDriver::class, self::SYNTHESIA => SynthesiaEngineDriver::class, self::HEYGEN => HeygenEngineDriver::class, self::PEBBLELY => PebblelyEngineDriver::class, self::FAL_AI => FallAIEngineDriver::class, self::GAMMA_AI => GammaAIEngineDriver::class, self::CREATIFY => CreatifyEngineDriver::class, self::TOPVIEW => TopviewEngineDriver::class, self::VIZARD => VizardEngineDriver::class, self::KLAP => KlapEngineDriver::class, self::X_AI => XAIEngineDriver::class, self::AI_ML_MINIMAX => AiMlMinimaxAIEngineDriver::class, self::OPEN_ROUTER => OpenRouterEngineDriver::class, self::TOGETHER => TogetherEngineDriver::class, }; } public function models(): array { return collect(EntityEnum::cases())->filter(fn ($model) => $model->engine() === $this)->toArray(); } /** * @return Collection */ public function getModels(): Collection { return Entity::byEngine($this)->get(); } /** * @return Collection */ public function getEnabledModels(): Collection { return Cache::remember('engine_models_' . $this->value, now()->addMinutes(5), function () { return Entity::query()->isEnabled()->byEngine($this)->get(); }); } private function getDefaultOpenAiImageModel($settings_two): string { return match ($settings_two?->dalle) { 'dalle3' => EntityEnum::DALL_E_3->slug(), 'dalle2' => EntityEnum::DALL_E_2->slug(), default => $settings_two?->dalle ?? 'dall-e-2', }; } /** * @throws Exception */ public function getDefaultModels(?Setting $setting, ?SettingTwo $settingTwo): array { return match ($this) { self::OPEN_AI => [ EntityEnum::fromSlug($setting?->openai_default_model ?? EntityEnum::GPT_4_O->slug()), EntityEnum::fromSlug($this->getDefaultOpenAiImageModel($settingTwo)), EntityEnum::TTS_1_HD, EntityEnum::TTS_1, EntityEnum::WHISPER_1, EntityEnum::TEXT_EMBEDDING_3_SMALL, ...(EntityEnum::fromSlug($setting?->openai_default_model ?? EntityEnum::GPT_4_O->slug()) !== EntityEnum::GPT_4_O ? [EntityEnum::GPT_4_O] : []), EntityEnum::GPT_4_O_REALTIME_PREVIEW, EntityEnum::GPT_4_O_SEARCH_PREVIEW, EntityEnum::GPT_4_O_MINI_SEARCH_PREVIEW, EntityEnum::GPT_IMAGE_1, EntityEnum::SORA_2, EntityEnum::SORA_2_PRO, ], self::STABLE_DIFFUSION => [ EntityEnum::fromSlug($settingTwo?->stable_diffusion_default_model ?? $settingTwo?->stablediffusion_default_model ?? EntityEnum::STABLE_DIFFUSION_XL_1024_V_1_0->slug()), EntityEnum::IMAGE_TO_VIDEO, ], self::ANTHROPIC => [EntityEnum::fromSlug(setting('anthropic_default_model', EntityEnum::CLAUDE_3_OPUS->slug()))], self::OPEN_ROUTER => [EntityEnum::fromSlug(setting('default_open_router_model', EntityEnum::PERPLEXITY_LLAMA_31_SONAR_8B->slug()))], self::GEMINI => [ EntityEnum::fromSlug(setting('gemini_default_model', EntityEnum::GEMINI_1_5_PRO->slug())), EntityEnum::GEMINI_EMBEDDING_EXP, EntityEnum::GEMINI_TEXT_EMBEDDING_004, ], self::DEEP_SEEK => [EntityEnum::fromSlug(setting('deepseek_default_model', EntityEnum::DEEPSEEK_CHAT->slug()))], self::ELEVENLABS => [ EntityEnum::ELEVENLABS_AI_MUSIC, EntityEnum::ELEVENLABS, EntityEnum::ELEVENLABS_VOICE_CHATBOT, EntityEnum::ISOLATOR, ], self::PI_API => [EntityEnum::MIDJOURNEY], self::GAMMA_AI => [EntityEnum::GAMMA_AI], self::FAL_AI => [ EntityEnum::fromSlug(setting('fal_ai_default_model', EntityEnum::FLUX_PRO->slug())), EntityEnum::VEO_2, EntityEnum::VEO_3, EntityEnum::VEO_3_FAST, EntityEnum::VEO_3_1_TEXT_TO_VIDEO, EntityEnum::VEO_3_1_IMAGE_TO_VIDEO, EntityEnum::VEO_3_1_TEXT_TO_VIDEO_FAST, EntityEnum::VEO_3_1_IMAGE_TO_VIDEO_FAST, EntityEnum::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO, EntityEnum::VEO_3_1_FIRST_LAST_FRAME_TO_VIDEO_FAST, EntityEnum::VEO_3_1_REFERENCE_TO_VIDEO, EntityEnum::VEED, EntityEnum::KLING, EntityEnum::KLING_2_1, EntityEnum::KLING_2_5_TURBO_PRO_TTV, EntityEnum::KLING_2_5_TURBO_PRO_ITV, EntityEnum::KLING_2_5_TURBO_STANDARD_ITV, EntityEnum::KLING_IMAGE, EntityEnum::KLING_VIDEO, EntityEnum::LUMA_DREAM_MACHINE, EntityEnum::MINIMAX, EntityEnum::IDEOGRAM, EntityEnum::VIDEO_UPSCALER, EntityEnum::COGVIDEOX_5B, EntityEnum::ANIMATEDIFF_V2V, EntityEnum::FAST_ANIMATEDIFF_TURBO, EntityEnum::FLUX_PRO_KONTEXT_MAX_MULTI, EntityEnum::FLUX_PRO_KONTEXT, EntityEnum::FLUX_PRO_KONTEXT_TEXT_TO_IMAGE, EntityEnum::NANO_BANANA, EntityEnum::NANO_BANANA_EDIT, EntityEnum::SEEDREAM_4, EntityEnum::SEEDREAM_4_EDIT, ], self::CREATIFY => [EntityEnum::AD_MARKETING_VIDEO], self::TOPVIEW => [EntityEnum::AD_MARKETING_VIDEO_TOPVIEW], self::VIZARD => [EntityEnum::AI_CLIP_VIZARD], self::KLAP => [EntityEnum::AI_CLIP_KLAP], self::X_AI => [EntityEnum::fromSlug(setting('xai_default_model', EntityEnum::GROK_2_1212->slug()))], self::AI_ML_MINIMAX => [EntityEnum::MUSIC_01], self::UNSPLASH => [EntityEnum::UNSPLASH], self::PEXELS => [EntityEnum::PEXELS], self::PIXABAY => [EntityEnum::PIXABAY], self::GOOGLE => [EntityEnum::GOOGLE], self::AZURE => [ EntityEnum::AZURE, EntityEnum::AZURE_OPENAI, ], self::Speechify => [EntityEnum::Speechify], self::SERPER => [EntityEnum::SERPER], self::PERPLEXITY => [EntityEnum::PERPLEXITY], self::CLIPDROP => [EntityEnum::CLIPDROP], self::NOVITA => [EntityEnum::NOVITA], self::FREEPIK => [EntityEnum::FREEPIK], self::PLAGIARISM_CHECK => [EntityEnum::PLAGIARISMCHECK], self::SYNTHESIA => [EntityEnum::SYNTHESIA], self::HEYGEN => [EntityEnum::HEYGEN], self::PEBBLELY => [EntityEnum::PEBBLELY], self::TOGETHER => [EntityEnum::BLACK_FOREST_LABS_FLUX_1_SCHNELL], default => throw new Exception('No default model found for engine ' . $this->value), }; } public function getDefaultWordModel(?Setting $setting): EntityEnum { return match ($this) { self::OPEN_AI => EntityEnum::fromSlug($setting?->openai_default_model ?? EntityEnum::GPT_4_O->slug()), self::ANTHROPIC => EntityEnum::fromSlug(setting('anthropic_default_model', EntityEnum::CLAUDE_3_OPUS->slug())), self::GEMINI => EntityEnum::fromSlug(setting('gemini_default_model', EntityEnum::GEMINI_1_5_PRO->slug())), self::DEEP_SEEK => EntityEnum::fromSlug(setting('deepseek_default_model', EntityEnum::DEEPSEEK_CHAT->slug())), self::X_AI => EntityEnum::fromSlug(setting('xai_default_model', EntityEnum::GROK_2_1212->slug())), default => throw new Exception('No default model found for engine ' . $this->value), }; } public function getDefaultImageModel(): ?EntityEnum { $settingTwo = SettingTwo::getCache(); return match ($this) { self::OPEN_AI => EntityEnum::fromSlug($this->getDefaultOpenAiImageModel($settingTwo)), self::STABLE_DIFFUSION => EntityEnum::fromSlug($settingTwo?->stable_diffusion_default_model ?? $settingTwo?->stablediffusion_default_model ?? EntityEnum::STABLE_DIFFUSION_XL_1024_V_1_0->slug()), self::FAL_AI => EntityEnum::fromSlug(setting('fal_ai_default_model', EntityEnum::FLUX_PRO->slug())), self::PI_API => EntityEnum::MIDJOURNEY, default => null, }; } public function getDefaultAWImageModel(?SettingTwo $settingTwo): EntityEnum { return match ($this) { self::OPEN_AI => EntityEnum::fromSlug($this->getDefaultOpenAiImageModel($settingTwo)), self::STABLE_DIFFUSION => EntityEnum::fromSlug($settingTwo?->stable_diffusion_default_model ?? $settingTwo?->stablediffusion_default_model ?? EntityEnum::STABLE_DIFFUSION_XL_1024_V_1_0->slug()), self::UNSPLASH => EntityEnum::UNSPLASH, self::PEXELS => EntityEnum::PEXELS, self::PIXABAY => EntityEnum::PIXABAY, default => throw new Exception('No default model found for engine ' . $this->value), }; } /** * @throws Exception */ public function defaultEntitiesCount(): int { return count($this->getDefaultModels(Setting::getCache(), SettingTwo::getCache())); } /** * @throws Exception */ public function getListableActiveModels(Setting $setting, SettingTwo $settingTwo): Collection { $defaultModelKeys = collect($this->getDefaultModels($setting, $settingTwo))->map(fn ($model) => $model->slug()); // return all engine models without default models return $this->getEnabledModels() ->filter(fn (Entity $model) => EntityEnum::listableCases()->contains($model->key)) ->filter(fn (Entity $model) => ! $defaultModelKeys->contains($model->key->slug())); } public static function whereHasEnabledModels(): array { return collect(self::cases())->filter(fn (EngineEnum $engine) => $engine->getEnabledModels()->isNotEmpty())->toArray(); } public static function getNestedPlanLimits(): array { return collect(self::cases())->mapWithKeys(function (EngineEnum $engine) { return [$engine->slug() => EntityEnum::getPlanLimits($engine)->toArray()]; })->toArray(); } public static function rules(string $prefix = '', array $rules = []): array { return collect(self::cases()) ->mapWithKeys(function (EngineEnum $engine) use ($prefix, $rules) { return [$prefix . $engine->slug() => collect($engine->models())->mapWithKeys(function (EntityEnum $model) use ($rules) { return [$model->slug() => [ 'credit' => $rules[0], 'isUnlimited' => $rules[1], ]]; })->toArray()]; })->dot()->toArray(); } } PKÎŒW] AIEngine.phpnu„[µü¤PKÎŒW]ÅAz>>Plan/FrequencyEnum.phpnu„[µü¤ __('Monthly'), self::YEARLY => __('Yearly'), self::LIFETIME_MONTHLY => __('Lifetime - Monthly Renewal'), self::LIFETIME_YEARLY => __('Lifetime - Yearly Renewal'), self::LIFETIME => __('Lifetime'), self::PREPAID => __('Prepaid'), }; } public function color(): string { return match ($this) { self::MONTHLY => '#06D4404D', self::YEARLY => '#8185F44D', self::LIFETIME_MONTHLY => '#74DB84', self::LIFETIME_YEARLY => '#42f5b0', self::LIFETIME => '#C5D6F5', self::PREPAID => '#60CAF94D', }; } } PKÎŒW]ªÌÌPlan/PlanType.phpnu„[µü¤ __('All'), self::PREMIUM => __('Premium'), self::REGULAR => __('Regular') }; } public static function getValues(): array { return array_map(fn ($value) => $value->value, self::cases()); } } PKÎŒW]:9¼°uuPlan/TypeEnum.phpnu„[µü¤ __('Subscription'), self::TOKEN_PACK => __('Token Pack') }; } } PKÎŒW]P,uÛnnAiInfluencer/ProductTabEnum.phpnu„[µü¤ 'Auto URL', self::MANUAL_UPLOAD => 'Manual Upload' }; } } PKÎŒW]':Ýe†/†/AiInfluencer/BrandEnum.phpnu„[µü¤ 'Amazon', self::SHOPIFY => 'Shopify', self::ETSY => 'Etsy', self::EBAY => 'Ebay', self::WORDPRESS => 'Wordpress', self::GOOGLE_PLAY => 'Google Play', self::APP_STORE => 'App Store', }; } public function image() { return match ($this) { self::AMAZON => '', self::SHOPIFY => '', self::ETSY => '', self::EBAY => '', self::WORDPRESS => '', self::GOOGLE_PLAY => '', self::APP_STORE => '', }; } public function url() { return match ($this) { self::AMAZON => 'https://www.amazon.com/', self::SHOPIFY => 'https://www.shopify.com/', self::ETSY => 'https://www.etsy.com/', self::EBAY => 'https://www.ebay.com/', self::WORDPRESS => 'https://wordpress.com/', self::GOOGLE_PLAY => 'https://play.google.com/', self::APP_STORE => 'https://www.apple.com/hk/en/app-store/', }; } } PKÎŒW]ŒùP®®AiInfluencer/ScriptTabEnum.phpnu„[µü¤ 'Auto Generated Script', self::CUSTOM_SCRIPT => 'Custom Script' }; } } PKÎŒW]õª?ܹ¹ AiInfluencer/VideoStatusEnum.phpnu„[µü¤ 'In Progress', self::FAILED => 'Failed', self::COMPLETED => 'Completed' }; } } PKÎŒW]ޝØ>>AiInfluencer/StepEnum.phpnu„[µü¤ 'Product', self::DETAILS => 'Details', self::SCRIPT => 'Script', self::AVATAR => 'Avatar', self::COMPOSITION => 'Composition', }; } } PKÎŒW]„xÚf'AiInfluencer/CompositionEditTabEnum.phpnu„[µü¤ 'Avatar', self::VOICE => 'Voice', self::MUSIC => 'Music', self::CAPTIONS => 'Captions' }; } public function svg(): string { return match ($this) { self::AVATAR => 'tabler-user-circle', self::VOICE => 'tabler-microphone-2', self::MUSIC => 'tabler-music', self::CAPTIONS => 'tabler-text-caption' }; } } PKÎŒW]Û�§WßßAITokenType.phpnu„[µü¤ __('Word'), self::IMAGE => __('Image'), self::SECOND => __('Second'), self::MINUTE => __('Minute'), self::CHARACTER => __('Character'), self::IMAGE_TO_VIDEO => __('Image to Video'), self::TEXT_TO_SPEECH => __('Text to Speech'), self::SPEECH_TO_TEXT => __('Speech to Text'), self::TEXT_TO_VIDEO => __('Text to Video'), self::VIDEO_TO_VIDEO => __('Video to Video'), self::VISION => __('Vision'), self::PLAGIARISM => __('Plagiarism'), self::PRESENTATION => __('Presentation'), }; } } PKÎŒW]Q¸OÛW W Permissions.phpnu„[µü¤ __('Marketplace'), self::THEMES => __('Themes'), self::USER_MANAGEMENT => __('User Management'), self::ANNOUNCEMENTS => __('Announcements'), self::GOOGLE_ADSENSE => __('Google Adsense'), self::SUPPORT_REQUESTS => __('Support Requests'), self::TEMPLATES => __('Templates'), self::CHAT_SETTINGS => __('Chat Settings'), self::FRONTEND => __('Frontend'), self::FINANCE => __('Finance'), self::PAGES => __('Pages'), self::BLOG => __('Blog'), self::AFFILIATES_ADMIN => __('Affiliates Admin'), self::COUPONS_ADMIN => __('Coupons Admin'), self::EMAIL_TEMPLATES => __('Email Templates'), self::INTRODUCTIONS => __('Introductions'), self::MAILCHIMP_NEWSLETTER => __('Mailchimp Newsletter'), self::HUBSPOT => __('Hubspot'), self::API_INTEGRATION => __('Api Integration'), self::SETTINGS => __('Settings'), self::SITE_HEALTH => __('Site Health'), self::LICENCE => __('Licence'), self::UPDATE => __('Update'), self::MENU_SETTINGS => __('Menu Settings'), self::VIP_CHAT_WIDGET => __('VIP Chat Widget'), }; } } PKÎŒW]û3BzzCommon/MenuGroupTypeEnum.phpnu„[µü¤mapWithKeys(fn ($case) => [$case->name => $case]); return $cases->get($name); } public function label(): string { return $this->name; } public static function getLabel(WithIntBackedEnum $enum): string { return $enum->label(); } /** * @template T of string|null * @phpstan-param T $implode * * @return (T is null ? array : string) */ public static function getLabels(?string $implode = null): array|string { $labels = Arr::map(self::cases(), static fn ($enum) => $enum->label()); if (! is_null($implode)) { return implode($implode, $labels); } return $labels; } } PKÎŒW]4a Traits/StringBackedEnumTrait.phpnu„[µü¤value; } public static function getLabel(WithStringBackedEnum $enum): string { return $enum->label(); } /** * @template T of string|null * @phpstan-param T $implode * * @return (T is null ? array : string) */ public static function getLabels(?string $implode = null): array|string { $labels = Arr::map(self::cases(), static fn ($enum) => $enum->label()); if (! is_null($implode)) { return implode($implode, $labels); } return $labels; } } PKÎŒW]0ÛO;;Traits/EnumTo.phpnu„[µü¤value; } return collect(self::cases())->map(function ($enum) use ($attributes, $selectedValue) { $defaultAttrs = [ 'value' => $enum->value, ]; if ($selectedValue !== '@none@' && $enum->value === $selectedValue) { $defaultAttrs['selected'] = true; } $processedAttributes = self::processAttributes($attributes, $enum); return sprintf( '', self::buildAttributes($defaultAttrs, $processedAttributes), $enum->label() ); })->implode($separator); } private static function processAttributes(array $attributes, $enum): array { return Arr::map($attributes, static function ($value, $key) use ($enum) { return str_replace( ['%value%', '%label%'], [$enum->value, $enum->label()], $value ); }); } private static function buildAttributes(array $defaultAttrs, array $attributes): ComponentAttributeBag { return (new ComponentAttributeBag($defaultAttrs))->merge($attributes); } } PKÎŒW]uOFKKTraits/SluggableEnumTrait.phpnu„[µü¤value); } public static function fromSlug(string $value): self { $self = self::tryFrom(str_replace('__', '.', $value)); if ($self === null) { EntityRemover::removeEntity($value); } if ($self === null) { $error = [ 'slug' => $value, 'fromSlug_called_from' => debug_backtrace()[1]['function'], 'fromSlug_called_from_class' => debug_backtrace()[1]['class'], 'fromSlug_called_in' => debug_backtrace()[1]['file'], 'fromSlug_called_line' => debug_backtrace()[1]['line'], ]; Log::error('-------------------------------------------------\n'); Log::error('fromSlug called with invalid slug: ' . json_encode($error, JSON_THROW_ON_ERROR)); Log::error('-------------------------------------------------\n'); throw new RuntimeException('Invalid enum slug: ' . $value . '. Please refresh the page'); } return $self; } } PKÎŒW]bÚ¥:ª ª MagicResponse.phpnu„[µü¤value; } public function status(): string { return match ($this) { self::NO_CREDITS_LEFT => 'error', }; } public function responseType(): string { return match ($this) { self::NO_CREDITS_LEFT => 'json', }; } public function message(): string|array { return match ($this) { self::NO_CREDITS_LEFT => [ 'message' => __('You have no credits left. Please consider upgrading your plan.'), 'status' => $this->status(), ], }; } public function response(): JsonResponse { return match ($this->responseType()) { 'json' => response()->json($this->message(), $this->statusCode()), default => response($this->getMessageText(), $this->statusCode()), }; } public function exceptionsAsJson(): bool { return false; } /** * @noinspection ThrowRawExceptionInspection * * @throws Exception */ public function exception(): void { $message = $this->message(); if ($this->exceptionsAsJson()) { throw new MagicResponseApiException($message, $this->statusCode()); } throw new Exception($message['message'], $this->statusCode()); } /** * @throws RuntimeException */ public function runtimeException(): void { $message = $this->message(); if ($this->exceptionsAsJson()) { throw new MagicResponseApiRuntimeException($message, $this->statusCode()); } throw new RuntimeException($message['message'], $this->statusCode()); } private function getMessageText(): string { $message = $this->message(); return match ($this->responseType()) { 'json' => $message['message'], default => $message, }; } public function abort(): void { match ($this->responseType()) { 'json' => abort($this->response()->setStatusCode($this->statusCode()), $this->getMessageText()), default => abort($this->statusCode(), $this->getMessageText()), }; } public function abort_if(bool $condition): void { if ($condition) { $this->abort(); } } public function abort_unless(bool $condition): void { if (! $condition) { $this->abort(); } } } PKÎŒW]ðÃó_ììStatusEnum.phpnu„[µü¤ __('Enabled'), self::DISABLED => __('Disabled'), }; } } PKÎŒW]ˆ^ùP== Roles.phpnu„[µü¤ __('User'), self::ADMIN => __('Admin'), self::SUPER_ADMIN => __('Super Admin'), }; } } PKÎŒW]$ÔZ˜D*D*Introduction.phpnu„[µü¤ __('Realtime Image'), self::AI_REALTIME_VOICE_CHAT => __('Realtime Voice Chat'), self::AI_INFLUENCER => __('Ai Influencer'), self::URL_TO_VIDEO => __('Url To Video'), self::INFLUENCER_AVATAR => __('Influencer Avatar'), self::VIRAL_CLIPS => __('Viral Clips'), self::INITIALIZE => __('Onboarding'), self::LAST => __('Onboarding End'), self::AFFILIATE_SEND => __('Affiliate'), self::SELECT_PLAN => __('Select Plan'), self::AI_WRITER => __('AI Writer'), self::AI_IMAGE => __('AI Image'), self::AI_PDF => __('AI File Chat'), self::AI_CODE => __('AI Code'), self::AI_EDITOR => __('AI Editor'), self::AI_DOCUMENT => __('Documents'), self::AI_EXT_CHATBOT => __('AI Bots'), self::AI_EXT_VOICE_CHATBOT => __('AI Voice Bots'), self::AI_VIDEO => __('AI Video'), self::AI_ARTICLE_WIZARD => __('AI Article Wizard'), self::AI_VISION => __('AI Vision'), self::AI_REWRITER => __('AI ReWriter'), self::AI_CHAT_IMAGE => __('AI Chat Image'), self::AI_CHAT => __('AI Chat'), self::AI_YOUTUBE => __('AI YouTube'), self::AI_RSS => __('AI RSS'), self::AI_SPEECH_TO_TEXT => __('AI Speech to Text'), self::AI_VOICEOVER => __('AI Voiceover'), self::AI_VOICEOVER_CLONE => __('AI Voice Isolator'), self::AI_AVATAR => __('AI Avatar'), self::AI_AVATAR_PRO => __('AI Persona'), self::ADVANCED_IMAGE => __('Advanced Image Editor'), self::BRAND_VOICE => __('Brand Voice'), self::TEAM_MENU => __('Team'), self::AI_FALL_VIDEO => __('Fall Video'), self::AI_REPLICA => __('AI Replica'), self::AI_MUSIC => __('AI Music'), self::AI_MUSIC_PRO => __('AI Music Pro'), self::AI_PRODUCT_SHOT => __('AI Product Photography'), self::USER_API_KEYS => __('API Keys'), self::AFFILIATES => __('Affiliates'), self::SUPPORT => __('Support'), self::INTEGRATION => __('Integration'), self::ADMIN_DASHBOARD => __('Dashboard'), self::ADMIN_MARKETPLACE => __('Admin Marketplace'), self::ADMIN_THEMES => __('Admin Themes'), self::ADMIN_USER_MANAGEMENT => __('Admin User Management'), self::MIGRATION => __('Migration'), self::ADMIN_ANNOUNCEMENTS => __('Admin Announcements'), self::ADMIN_GOOGLE_ADSENSE => __('Admin Google Adsense'), self::DISCOUNT_MANAGER => __('Admin Discount Manager'), self::ADMIN_SUPPORT_REQUEST => __('Admin Suport Request'), self::ADMIN_TEMPLATES => __('Admin Templates'), self::ADMIN_CHAT_SETTINGS => __('Admin Chat Settings'), self::ADMIN_FRONTEND => __('Admin Frontend'), self::ADMIN_FINANCE => __('Admin Finance'), self::ADMIN_PAGES => __('Admin Pages'), self::ADMIN_BLOG => __('Admin Blog'), self::ADMIN_AFFILIATES => __('Admin Affiliates'), self::ADMIN_COUPONS => __('Admin Coupons'), self::ADMIN_EMAIL_TEMPLATES => __('Admin Email Templates'), self::ADMIN_ONBOARDING_PRO => __('Admin Onboarding Pro'), self::ADMIN_ONBOARDING => __('Admin Onboarding'), self::ADMIN_MAILCHIMP_NEWSLETTER => __('Admin Mailchimp Newsletter'), self::ADMIN_HUBSPOT_NEWSLETTER => __('Admin Hubspot Newsletter'), self::ADMIN_API_INTEGRATION => __('Admin Api Integration'), self::ADMIN_SETTINGS => __('Admin Settings'), self::ADMIN_SITE_HEALTH => __('Admin Site Health'), self::ADMIN_LICENSE => __('Admin License'), self::ADMIN_UPDATE => __('Admin Update'), self::ADMIN_MENU_SETTINGS => __('Admin Menu Settings'), self::SIDEBAR => __('Sidebar'), self::DASHBOARD_FIRST => __('Dashboard First'), self::DASHBOARD_TWO => __('Dashboard Two'), self::DASHBOARD_THREE => __('Dashboard Three'), self::DASHBOARD_CHATBOT_ICON => __('Dashboard Chatbot Icon'), self::SOCIAL_MEDIA => __('Social Media'), }; } } PKÎŒW]`æ3Û}}"Contracts/WithStringBackedEnum.phpnu„[µü¤ __('Api Cost Distribution'), self::COST_MANAGEMENT => __('Cost Management'), self::FINANCE => __('Finance'), self::GENERATED_CONTENT => __('Generated Content'), self::NEW_CUSTOMERS => __('New Customers'), self::POPULAR_AI_TOOLS => __('Popular Ai Tools'), self::PREMIUM_ADVANTAGES => __('Premium Advantages'), self::RECENT_ACTIVITY => __('Recent Activity'), self::RECENT_TRANSACTIONS => __('Recent Transactions'), self::REVENUE_SOURCE => __('Revenue Source'), self::SYSTEM_STATUS => __('System Status'), self::TOP_COUNTRIES => __('Top Countries'), self::USAGE_OVERVIEW => __('Usage Overview'), self::USER_CLIENT => __('User Client'), self::USER_TRAFFIC => __('User Traffic'), self::USERS_AND_PLATFORM => __('Users And Platform'), self::USERS => __('Users'), self::WHAT_IS_NEW => __('What Is New'), }; } } PKÎŒW]Äή"AccessType.phpnu„[µü¤ __('VIP'), self::ENTERPRISE => __('Enterprise'), self::PRO => __('Pro'), self::PREMIUM => __('Premium'), self::REGULAR => __('Regular'), }; } /** * Get a color associated with the access type in HSL format. * Tone is kept consistent (high lightness and saturation) but hue differs. */ public function color(): string { return match ($this) { self::VIP => '278, 87%, 94%', self::ENTERPRISE => '210, 87%, 94%', self::PRO => '145, 87%, 94%', self::PREMIUM => '34, 87%, 94%', self::REGULAR => '0, 87%, 94%', }; } /** * Get all values of the enum. * * @return array */ public static function getValues(): array { return array_map(static fn ($value) => $value->value, self::cases()); } } PKÎŒW]ì iiBedrockEngine.phpnu„[µü¤ __('AWS Bedrock'), self::CLAUDE_21 => __('Claude 2.1'), self::CLAUDE_2 => __('Claude 2'), self::CLAUDE_1 => __('Claude 1'), self::CLAUDE_3_SONNET => __('Claude 3 Sonnet'), self::CLAUDE_3_HAIKU => __('Claude 3 Haiku'), self::STABLE_DIFFUSION_1 => __('SDXL 1.0'), }; } } PKÎŒW]çÅ–ê   Storage.phpnu„[µü¤ __('Public'), self::S3 => __('AWS S3'), self::R2 => __('Cloudflare R2'), }; } } PK„W]KK‹ààAspectRatioEnum.phpnu„[µü¤PK„W]HAßÛff#Veed/AvatarEnum.phpnu„[µü¤PK„W]gÅUppÌKling/DurationEnum.phpnu„[µü¤PK„W]ÐZ2§§‚Veo3/DurationEnum.phpnu„[µü¤PK2„W]>+ߣVVn CaptionStyle.phpnu„[µü¤PK2„W]�fàBííAspectRatio.phpnu„[µü¤PK2„W]j»ó$m)m)0VisualStyle.phpnu„[µü¤PK2„W]gÍÛ&EEÜ=Voice/Type.phpnu„[µü¤PK2„W] ×B  _?Avatar/AgeRange.phpnu„[µü¤PK2„W] �@ââ®AAvatar/Style.phpnu„[µü¤PK2„W] Iã ÐCAvatar/Location.phpnu„[µü¤PK2„W]²§ùÒÒ2FAvatar/Gender.phpnu„[µü¤PK2„W]´Ï…Ù<< EHLanguage.phpnu„[µü¤PK2„W]xÉmÆÆ½OVideoLength.phpnu„[µü¤PK2„W]–ó6vN N ÂQScriptStyle.phpnu„[µü¤PK<„W]òª/ ŽŽO[EntityEnum.phpnu„[µü¤PK|„W]áÿ–�G�GyEngineEnum.phpnu„[µü¤PKÎŒW] éÀAIEngine.phpnu„[µü¤PKÎŒW]ÅAz>>%ÁPlan/FrequencyEnum.phpnu„[µü¤PKÎŒW]ªÌÌ©ÆPlan/PlanType.phpnu„[µü¤PKÎŒW]:9¼°uu¶ÉPlan/TypeEnum.phpnu„[µü¤PKÎŒW]P,uÛnnlÌAiInfluencer/ProductTabEnum.phpnu„[µü¤PKÎŒW]':Ýe†/†/)ÎAiInfluencer/BrandEnum.phpnu„[µü¤PKÎŒW]ŒùP®®ùýAiInfluencer/ScriptTabEnum.phpnu„[µü¤PKÎŒW]õª?ܹ¹ õÿAiInfluencer/VideoStatusEnum.phpnu„[µü¤PKÎŒW]ޝØ>>þAiInfluencer/StepEnum.phpnu„[µü¤PKÎŒW]„xÚf'…AiInfluencer/CompositionEditTabEnum.phpnu„[µü¤PKÎŒW]Û�§WßßëAITokenType.phpnu„[µü¤PKÎŒW]Q¸OÛW W  Permissions.phpnu„[µü¤PKÎŒW]û3BzzŸCommon/MenuGroupTypeEnum.phpnu„[µü¤PKÎŒW]TÖJÉÌÌeTraits/IntBackedEnumTrait.phpnu„[µü¤PKÎŒW]4a ~Traits/StringBackedEnumTrait.phpnu„[µü¤PKÎŒW]0ÛO;;Ý!Traits/EnumTo.phpnu„[µü¤PKÎŒW]uOFKKY)Traits/SluggableEnumTrait.phpnu„[µü¤PKÎŒW]bÚ¥:ª ª ñ.MagicResponse.phpnu„[µü¤PKÎŒW]ðÃó_ììÜ:StatusEnum.phpnu„[µü¤PKÎŒW]ˆ^ùP== =Roles.phpnu„[µü¤PKÎŒW]$ÔZ˜D*D*|?Introduction.phpnu„[µü¤PKÎŒW]`æ3Û}}"jContracts/WithStringBackedEnum.phpnu„[µü¤PKÎŒW]Ü|g÷÷ÏkContracts/WithIntBackedEnum.phpnu„[µü¤PKÎŒW]�à½o7 7 nDashboardWidget.phpnu„[µü¤PKÎŒW]Äή"�wAccessType.phpnu„[µü¤PKÎŒW]ì iië}BedrockEngine.phpnu„[µü¤PKÎŒW]çÅ–ê   •‚Storage.phpnu„[µü¤PK,,pð„