singleton( SettingsSchema::class, static fn ( Container $c ): SettingsSchema => new SettingsSchema( $c->get( CheckoutFieldSettings::class ), $c->get( StripeExportRequirement::class ) ) ); $container->singleton( SettingsController::class, static fn ( Container $c ): SettingsController => new SettingsController( $c->get( SettingsSchema::class ), $c->get( StripeSettings::class ), $c->get( WebhookEndpoints::class ), $c->get( Appearance::class ), $c->get( StripeAccountLookup::class ) ) ); $container->singleton( SpaController::class, static fn ( Container $c ): SpaController => new SpaController( $c->get( ProStatus::class ), $c->get( ProFeatures::class ), $c->get( Dismissals::class ) ) ); $container->singleton( Menu::class, static fn ( Container $c ): Menu => new Menu( $c->get( SpaController::class ) ) ); } /** * Wire the admin hooks. * * @since 1.0.0 * * @param Container $container The shared plugin container. * @return void */ public function boot( Container $container ): void { $container->get( SettingsController::class )->hooks(); $container->get( SpaController::class )->hooks(); $container->get( Menu::class )->hooks(); } }