import { HttpModule } from "@nestjs/axios"; import { Module } from "@nestjs/common"; import { TypeOrmModule } from "@nestjs/typeorm"; import { Invoice } from "../billing/entities/invoice.entity"; import { EimsAuthService } from "./eims-auth.service"; import { EimsAutoSubmitService } from "./eims-auto-submit.service"; import { EimsClientService } from "./eims-client.service"; import { EimsCredentialsProvider } from "./eims-credentials.provider"; import { EimsInvoiceController } from "./eims-invoice.controller"; import { EimsInvoiceRegistrationService } from "./eims-invoice-registration.service"; import { EimsSignerService } from "./eims-signer.service"; import { EimsSystemState } from "./entities/eims-system-state.entity"; /** * MoR EIMS e-invoicing: signed transport, authentication, and manual single-invoice registration. * * Exports only what other modules will consume; the credential loader and signer stay internal so * the private key has exactly one user. Nothing here is called from invoice creation. */ @Module({ imports: [ HttpModule.register({ timeout: Number(process.env.EIMS_HTTP_TIMEOUT_MS) || 30_000 }), TypeOrmModule.forFeature([EimsSystemState, Invoice]), ], controllers: [EimsInvoiceController], providers: [ EimsCredentialsProvider, EimsSignerService, EimsAuthService, EimsClientService, EimsInvoiceRegistrationService, EimsAutoSubmitService, ], exports: [EimsAuthService, EimsClientService, EimsInvoiceRegistrationService], }) export class EimsModule {}