import type { ITransactionManager } from "@erp/core/api"; import type { IIssuedInvoiceDocumentReportService, IIssuedInvoiceFinder } from "../services"; import type { IIssuedInvoiceListItemSnapshotBuilder } from "../snapshot-builders"; import type { IIssuedInvoiceFullSnapshotBuilder } from "../snapshot-builders/full"; import type { IIssuedInvoiceReportSnapshotBuilder } from "../snapshot-builders/report"; import { GetIssuedInvoiceByIdUseCase, ListIssuedInvoicesUseCase, ReportIssuedInvoiceUseCase, } from "../use-cases"; export function buildGetIssuedInvoiceByIdUseCase(deps: { finder: IIssuedInvoiceFinder; fullSnapshotBuilder: IIssuedInvoiceFullSnapshotBuilder; transactionManager: ITransactionManager; }) { return new GetIssuedInvoiceByIdUseCase( deps.finder, deps.fullSnapshotBuilder, deps.transactionManager ); } export function buildListIssuedInvoicesUseCase(deps: { finder: IIssuedInvoiceFinder; itemSnapshotBuilder: IIssuedInvoiceListItemSnapshotBuilder; transactionManager: ITransactionManager; }) { return new ListIssuedInvoicesUseCase( deps.finder, deps.itemSnapshotBuilder, deps.transactionManager ); } export function buildReportIssuedInvoiceUseCase(deps: { finder: IIssuedInvoiceFinder; fullSnapshotBuilder: IIssuedInvoiceFullSnapshotBuilder; reportSnapshotBuilder: IIssuedInvoiceReportSnapshotBuilder; documentService: IIssuedInvoiceDocumentReportService; transactionManager: ITransactionManager; }) { return new ReportIssuedInvoiceUseCase( deps.finder, deps.fullSnapshotBuilder, deps.reportSnapshotBuilder, deps.documentService, deps.transactionManager ); }