app->bind(OilPredictionProvider::class, function ($app) { $logger = $app->make(ApiLogger::class); return match (config('services.llm.provider')) { 'openai' => new OpenAiPredictionProvider($logger), 'gemini' => new GeminiPredictionProvider($logger), default => new AnthropicPredictionProvider($logger), }; }); } /** * Bootstrap any application services. */ public function boot(): void { $this->configureDefaults(); Cashier::useSubscriptionModel(Subscription::class); Event::listen(WebhookReceived::class, HandleStripeWebhook::class); } /** * Configure default behaviors for production-ready applications. */ protected function configureDefaults(): void { Date::use(CarbonImmutable::class); DB::prohibitDestructiveCommands( app()->isProduction(), ); Password::defaults(fn (): ?Password => app()->isProduction() ? Password::min(12) ->mixedCase() ->letters() ->numbers() ->symbols() ->uncompromised() : null, ); } }