import { Module } from "@nestjs/common";
import { UsersModule } from "@bff/modules/users/users.module.js";
import { MappingsModule } from "@bff/modules/id-mappings/mappings.module.js";
import { IntegrationsModule } from "@bff/integrations/integrations.module.js";
import { WorkflowModule } from "@bff/modules/shared/workflow/index.js";
import { AddressModule } from "@bff/modules/address/address.module.js";
import { TokensModule } from "../tokens/tokens.module.js";
import { OtpModule } from "../otp/otp.module.js";
// Workflow services
import { VerificationWorkflowService } from "../infra/workflows/verification-workflow.service.js";
import { GuestEligibilityWorkflowService } from "../infra/workflows/guest-eligibility-workflow.service.js";
import { AccountCreationWorkflowService } from "../infra/workflows/account-creation-workflow.service.js";
import { AccountMigrationWorkflowService } from "../infra/workflows/account-migration-workflow.service.js";
// Step services
import {
  ResolveSalesforceAccountStep,
  CreateWhmcsClientStep,
  CreatePortalUserStep,
  UpdateSalesforceFlagsStep,
  GenerateAuthResultStep,
  CreateEligibilityCaseStep,
} from "../infra/workflows/steps/index.js";
// Controller
import { GetStartedController } from "../presentation/http/get-started.controller.js";

@Module({
  imports: [
    TokensModule,
    OtpModule,
    UsersModule,
    MappingsModule,
    IntegrationsModule,
    WorkflowModule,
    AddressModule,
  ],
  controllers: [GetStartedController],
  providers: [
    // Workflow services
    VerificationWorkflowService,
    GuestEligibilityWorkflowService,
    AccountCreationWorkflowService,
    AccountMigrationWorkflowService,
    // Step services
    ResolveSalesforceAccountStep,
    CreateWhmcsClientStep,
    CreatePortalUserStep,
    UpdateSalesforceFlagsStep,
    GenerateAuthResultStep,
    CreateEligibilityCaseStep,
  ],
})
export class GetStartedModule {}
