import { Global, Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { ApiUsageService } from '@/common/auth/api-usage.service';
import { TokenService } from './auth/token.service';
import { AuditService } from './audit/audit.service';
import { NumberingService } from './numbering/numbering.service';
import { EventBus } from './events/event-bus.service';
import { EncryptionService } from './crypto/encryption.service';
import { StorageService } from './storage/storage.service';
import { MailService } from './mail/mail.service';

/** Cross-cutting services available to every module. */
@Global()
@Module({
  imports: [JwtModule.register({})],
  providers: [TokenService, ApiUsageService, AuditService, NumberingService, EventBus, EncryptionService, StorageService, MailService],
  exports: [TokenService, ApiUsageService, AuditService, NumberingService, EventBus, EncryptionService, StorageService, MailService, JwtModule],
})
export class CommonModule {}
