import { Module } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { MembershipController } from './membership.controller';
import { EffectiveMembershipService } from './effective-membership.service';
import { AppStoreJwsVerifier } from './apple/app-store-jws-verifier';
import { AppStoreTransactionService } from './apple/app-store-transaction.service';
import { AppStoreMembershipController } from './apple/app-store-membership.controller';
import { AppStoreNotificationController } from './apple/app-store-notification.controller';
import { AppStoreNotificationService } from './apple/app-store-notification.service';
import { EffectiveQuotaService } from './effective-quota.service';
import { QuotaGuardService } from './quota-guard.service';
import { PrismaService } from '../../infrastructure/database/prisma.service';

@Module({
  controllers: [
    MembershipController,
    AppStoreMembershipController,
    AppStoreNotificationController,
  ],
  providers: [
    EffectiveMembershipService,
    EffectiveQuotaService,
    QuotaGuardService,
    AppStoreJwsVerifier,
    AppStoreTransactionService,
    AppStoreNotificationService,
    PrismaService,
    ConfigService,
  ],
  exports: [EffectiveMembershipService, EffectiveQuotaService, QuotaGuardService],
})
export class MembershipModule {}
