import { type SetupParams, buildCatalogs, buildTransactionManager } from "@erp/core/api"; import type { IProformaPublicServices } from "@erp/customer-invoices/api"; import type { ICustomerPublicServices } from "@erp/customers/api"; import { buildCreateProformaFromFactugesUseCase, buildFactugesInputMappers, } from "../../application/di"; import type { CreateProformaFromFactugesUseCase } from "../../application/use-cases"; export type FactugesInternalDeps = { useCases: { createProforma: (publicServices: { customerServices: ICustomerPublicServices; proformaServices: IProformaPublicServices; }) => CreateProformaFromFactugesUseCase; }; }; export function buildFactugesDependencies(params: SetupParams): FactugesInternalDeps { const { database } = params; // Infrastructure const transactionManager = buildTransactionManager(database); const catalogs = buildCatalogs(); // Application helpers const inputMappers = buildFactugesInputMappers(catalogs); // Internal use cases (factories) return { useCases: { createProforma: (publicServices: { customerServices: ICustomerPublicServices; proformaServices: IProformaPublicServices; }) => buildCreateProformaFromFactugesUseCase({ dtoMapper: inputMappers.createInputMapper, publicServices, catalogs, transactionManager, }), }, }; }