/// import { ExcelParseOptions } from "@punks/backend-core"; export type EntryValidationError = { errorCode: string; value?: any; payload?: any; }; export type EntryValidationResult = { isValid: boolean; validationErrors: EntryValidationError[]; }; export type ImportEntryValidationError = { errorCode: string; column: { name: string; key: string; value?: any; }; }; export type ImportEntryValidationResult = { isValid: boolean; validationErrors: ImportEntryValidationError[]; }; export type EntitySerializerColumnParser = (value: any) => any; export type EntitySerializerColumnParseAction = (value: any, item: TSheetItem) => void; export type EntitySerializerColumnConverter = (value: any, item: TSheetItem) => any; export type EntitySerializerColumnValidator = { key: string; fn: (item: TSheetItem) => EntryValidationResult; }; export type EntitySerializerSheetCustomParser = "date"; export type EntitySerializerColumnModifier = "trim" | "lowercase" | "uppercase"; export type EntitySerializerColumnDefinition = { name: string; aliases?: string[]; key: string; selector: keyof TSheetItem | ((item: TSheetItem) => any); colSpan?: number; sampleValue?: any; parser?: EntitySerializerColumnParser; parseAction?: EntitySerializerColumnParseAction; converter?: EntitySerializerColumnConverter; validators?: EntitySerializerColumnValidator[]; idColumn?: boolean; sheetParser?: EntitySerializerSheetCustomParser; array?: boolean; arraySeparator?: string | RegExp; modifiers?: EntitySerializerColumnModifier[]; }; export type EntitySerializerSheetOptions = { name?: string; useTypeColumn?: boolean; }; export type EntitySerializerSheetDefinition = { autoColumns?: boolean; columns: EntitySerializerColumnDefinition[]; sheet?: EntitySerializerSheetOptions; options?: ExcelParseOptions; }; export type EntityExportFile = { content: Buffer; contentType: string; fileName: string; }; export declare enum EntitySerializationFormat { Csv = "csv", Json = "json", Xlsx = "xlsx" } export type ImportEntry = { id?: TEntityId; item: TSheetItem; rowIndex: number; status: ImportEntryValidationResult; }; export interface IEntitySerializer { export(filters?: TEntitySearchParameters, payload?: TPayload): Promise; import(items: TSheetItem[], payload?: TPayload): Promise; serialize(items: TSheetItem[], format: EntitySerializationFormat, payload?: TPayload): Promise; parse(data: Buffer, format: EntitySerializationFormat, payload?: TPayload): Promise[]>; createSample(format: EntitySerializationFormat): Promise; }