import { z } from 'zod/v4-mini'; import { Readable } from 'node:stream'; import { mongodb } from '@unchainedshop/mongodb'; import * as AssortmentHandlers from './handlers/assortment/index.ts'; import * as FilterHandlers from './handlers/filter/index.ts'; import * as ProductHandlers from './handlers/product/index.ts'; import type { Modules } from '../modules.ts'; import type { Services } from '../services/index.ts'; export interface BulkImportOperationResult { entity: string; operation: string; success: boolean; } export type BulkImportOperation = { payloadSchema?: z.ZodMiniObject; } & ((payload: any, options: { bulk: (collection: string) => typeof mongodb.BulkOperationBase; createShouldUpsertIfIDExists?: boolean; updateShouldUpsertIfIDNotExists?: boolean; skipCacheInvalidation?: boolean; }, unchainedAPI: T) => Promise); export type BulkImportHandler = Record>; export declare const getOperation: (entity: string, operation: string) => BulkImportOperation; export default function createBulkImporterFactory(db: any, bulkImporterOptions: any): { createBulkImporter: (options: any) => { validate: (event: any) => Promise; prepare: (event: any, unchainedAPI: { modules: Modules; services: Services; }) => Promise; execute: () => Promise<({ processedOperations: {}; processedBulkOperations: PromiseSettledResult[]; } | { preparationIssues: { operation: string; entity: string; payloadId: string; errorCode: string; errorMessage: string; }[]; })[] | ({ processedOperations: {}; processedBulkOperations: PromiseSettledResult[]; } | null)[]>; invalidateCaches: (unchainedAPI: { modules: Modules; services: Services; }) => Promise; }; validateEventStream: (readStream: Readable) => Promise; pipeEventStream: (readStream: Readable, bulkImporter: ReturnType<(options: any) => { validate: (event: any) => Promise; prepare: (event: any, unchainedAPI: { modules: Modules; services: Services; }) => Promise; execute: () => Promise<({ processedOperations: {}; processedBulkOperations: PromiseSettledResult[]; } | { preparationIssues: { operation: string; entity: string; payloadId: string; errorCode: string; errorMessage: string; }[]; })[] | ({ processedOperations: {}; processedBulkOperations: PromiseSettledResult[]; } | null)[]>; invalidateCaches: (unchainedAPI: { modules: Modules; services: Services; }) => Promise; }>, unchainedAPI: { modules: Modules; services: Services; }) => Promise; }; export type BulkImporter = ReturnType; export { AssortmentHandlers, ProductHandlers, FilterHandlers };