import { BullModule } from "@nestjs/bullmq";
import { Module } from "@nestjs/common";
import { BillingAdminController } from "./billing-admin.controller";
import { BillingStatsService } from "./billing-stats.service";
import { BILLING_QUEUE } from "./billing.constants";
import { BillingProcessor } from "./billing.processor";
import { BillingScheduler } from "./billing.scheduler";
import { InvoiceAdminController } from "./invoice-admin.controller";
import { InvoiceService } from "./invoice.service";
import { PricingPlanAdminController } from "./pricing-plan-admin.controller";
import { PricingPlanService } from "./pricing-plan.service";

@Module({
  imports: [BullModule.registerQueue({ name: BILLING_QUEUE })],
  controllers: [
    BillingAdminController,
    PricingPlanAdminController,
    InvoiceAdminController,
  ],
  providers: [
    BillingStatsService,
    PricingPlanService,
    InvoiceService,
    BillingProcessor,
    BillingScheduler,
  ],
  exports: [BillingStatsService, PricingPlanService, InvoiceService],
})
export class BillingModule {}
