import { FEATURE_OPT_IN_DI_TOKENS } from "@calcom/features/feature-opt-in/di/tokens"; import { FeatureOptInService } from "@calcom/features/feature-opt-in/services/FeatureOptInService"; import { moduleLoader as featureRepositoryModuleLoader } from "@calcom/features/flags/di/FeatureRepository.module"; import { moduleLoader as teamFeatureRepositoryModuleLoader } from "@calcom/features/flags/di/TeamFeatureRepository.module"; import { moduleLoader as userFeatureRepositoryModuleLoader } from "@calcom/features/flags/di/UserFeatureRepository.module"; import type { Module } from "@evyweb/ioctopus"; import { bindModuleToClassOnToken, createModule, type ModuleLoader } from "../di"; const thisModule: Module = createModule(); const token: symbol = FEATURE_OPT_IN_DI_TOKENS.FEATURE_OPT_IN_SERVICE; const moduleToken: symbol = FEATURE_OPT_IN_DI_TOKENS.FEATURE_OPT_IN_SERVICE_MODULE; const loadModule: ReturnType = bindModuleToClassOnToken({ module: thisModule, moduleToken, token, classs: FeatureOptInService, depsMap: { featureRepo: featureRepositoryModuleLoader, teamFeatureRepo: teamFeatureRepositoryModuleLoader, userFeatureRepo: userFeatureRepositoryModuleLoader, }, }); export const moduleLoader: ModuleLoader = { token, loadModule, }; export type { FeatureOptInService };