import { CfnService } from '@lib/cloudfront/cfn.service';
import { PdfService } from '@lib/pdf/src';
import { S3Service } from '@lib/s3/src';
import { Module } from '@nestjs/common';
import { AdminInvoiceController } from './invoice-admin.controller';
import { AdminInvoiceService } from './invoice-admin.service';
import { InvoiceFaxOverlayService } from './invoice-fax-overlay.service';
import { InvoiceStorageService } from './invoice-storage.service';
import { InvoiceBuilder } from './invoice.builder';
import { InvoiceController } from './invoice.controller';
import { InvoiceDrawer } from './invoice.drawer';
import { InvoiceRepository } from './invoice.repository';
import { InvoiceService } from './invoice.service';

@Module({
  controllers: [InvoiceController, AdminInvoiceController],
  providers: [
    InvoiceService,
    InvoiceStorageService,
    S3Service,
    PdfService,
    InvoiceBuilder,
    InvoiceDrawer,
    InvoiceRepository,
    AdminInvoiceService,
    CfnService,
    InvoiceFaxOverlayService,
  ],
  //* InvoiceFaxOverlayService 는 FaxModule(재발송)이 쓴다. InvoiceModule 은 FaxModule 을
  //* import 하지 않으므로 순환 참조가 생기지 않는다.
  exports: [InvoiceService, InvoiceFaxOverlayService],
})
export class InvoiceModule {}
