import { type ModuleParams, buildTransactionManager } from "@erp/core/api"; import { type ListInvoiceSeriesUseCase, buildInvoiceSeriesFinder, buildInvoiceSeriesSnapshotBuilders, buildListInvoiceSeriesUseCase, } from "../../../application"; import { buildInvoiceSeriesRepository } from "./invoice-series-repository.di"; export type InvoiceSeriesInternalDeps = { useCases: { listInvoiceSeries: () => ListInvoiceSeriesUseCase; }; }; export function buildInvoiceSeriesDependencies(params: ModuleParams): InvoiceSeriesInternalDeps { const { database } = params; const transactionManager = buildTransactionManager(database); const repository = buildInvoiceSeriesRepository(database); const finder = buildInvoiceSeriesFinder(repository); const snapshotBuilders = buildInvoiceSeriesSnapshotBuilders(); return { useCases: { listInvoiceSeries: () => buildListInvoiceSeriesUseCase({ finder, summarySnapshotBuilder: snapshotBuilders.summary, transactionManager, }), }, }; }