import type { ImportDataActions } from "./importDataActions.js"; import { type AppwriteConfig, type AttributeMappings, type CollectionCreate, type ConfigDatabase, type ImportDef } from "appwrite-utils"; import { z } from "zod"; import { type Databases } from "node-appwrite"; import { AuthUserCreateSchema } from "../schemas/authUser.js"; export declare const CollectionImportDataSchema: z.ZodObject<{ collection: z.ZodOptional>; orders: z.ZodOptional>; error: z.ZodOptional; required: z.ZodOptional; array: z.ZodOptional; default: z.ZodOptional, z.ZodNull]>>; xdefault: z.ZodOptional, z.ZodNull]>>; format: z.ZodOptional; size: z.ZodOptional>; min: z.ZodOptional>; max: z.ZodOptional>; elements: z.ZodOptional>; encrypt: z.ZodOptional; relatedCollection: z.ZodOptional; relationType: z.ZodOptional; twoWay: z.ZodOptional; twoWayKey: z.ZodOptional; onDelete: z.ZodOptional; side: z.ZodOptional; importMapping: z.ZodOptional; }, z.core.$strip>>; }, z.core.$loose>, z.ZodDiscriminatedUnion<[z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"string">; size: z.ZodDefault>; xdefault: z.ZodOptional>; encrypt: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"integer">; min: z.ZodOptional; max: z.ZodOptional; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"double">; min: z.ZodOptional; max: z.ZodOptional; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"float">; min: z.ZodOptional; max: z.ZodOptional; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"boolean">; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"datetime">; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"email">; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"ip">; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"url">; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"enum">; elements: z.ZodDefault>; xdefault: z.ZodOptional>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"relationship">; relatedCollection: z.ZodOptional; relatedTable: z.ZodOptional; relationType: z.ZodEnum<{ oneToMany: "oneToMany"; manyToOne: "manyToOne"; oneToOne: "oneToOne"; manyToMany: "manyToMany"; }>; twoWay: z.ZodBoolean; twoWayKey: z.ZodOptional; onDelete: z.ZodDefault>; side: z.ZodOptional>; importMapping: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"varchar">; size: z.ZodOptional; xdefault: z.ZodOptional>; encrypt: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"text">; xdefault: z.ZodOptional>; encrypt: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"mediumtext">; xdefault: z.ZodOptional>; encrypt: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"longtext">; xdefault: z.ZodOptional>; encrypt: z.ZodOptional; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"point">; xdefault: z.ZodOptional>>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"line">; xdefault: z.ZodOptional>>; }, z.core.$strip>, z.ZodObject<{ array: z.ZodOptional; format: z.ZodOptional; key: z.ZodString; status: z.ZodOptional; attributes: z.ZodOptional>; orders: z.ZodOptional>; required: z.ZodDefault>; $createdAt: z.ZodOptional; $updatedAt: z.ZodOptional; error: z.ZodOptional; type: z.ZodLiteral<"polygon">; xdefault: z.ZodOptional>>; }, z.core.$strip>], "type">>>>; $id: z.ZodOptional; enabled: z.ZodOptional>; $permissions: z.ZodDefault>>>; databaseId: z.ZodOptional; documentSecurity: z.ZodOptional>; indexes: z.ZodPipe>>; status: z.ZodOptional; error: z.ZodOptional; attributes: z.ZodArray; orders: z.ZodOptional>; }, z.core.$strip>>>>, z.ZodTransform<{ key: string; type: "key" | "unique" | "fulltext"; attributes: string[]; status?: string | undefined; error?: string | undefined; orders?: string[] | undefined; }[], { key: string; type: "key" | "unique" | "fulltext"; attributes: string[]; status?: string | undefined; error?: string | undefined; orders?: string[] | undefined; }[]>>; importDefs: z.ZodDefault>>; filePath: z.ZodString; basePath: z.ZodOptional; primaryKeyField: z.ZodDefault; idMappings: z.ZodOptional; targetFieldToMatch: z.ZodOptional; targetField: z.ZodString; targetCollection: z.ZodString; }, z.core.$strip>>>; createUsers: z.ZodOptional>>; updateMapping: z.ZodOptional>; attributeMappings: z.ZodArray; oldKeys: z.ZodOptional>; targetKey: z.ZodString; valueToSet: z.ZodOptional; fileData: z.ZodOptional>; converters: z.ZodOptional>>; validationActions: z.ZodOptional; }, z.core.$strip>>>>; postImportActions: z.ZodOptional]>>; }, z.core.$strip>>>>; }, z.core.$strip>>; }, z.core.$strip>>>>; databaseIds: z.ZodOptional>; }, z.core.$strip>>; data: z.ZodArray>>; filePath: z.ZodString; basePath: z.ZodOptional; primaryKeyField: z.ZodDefault; idMappings: z.ZodOptional; targetFieldToMatch: z.ZodOptional; targetField: z.ZodString; targetCollection: z.ZodString; }, z.core.$strip>>>; createUsers: z.ZodOptional>>; updateMapping: z.ZodOptional>; attributeMappings: z.ZodArray; oldKeys: z.ZodOptional>; targetKey: z.ZodString; valueToSet: z.ZodOptional; fileData: z.ZodOptional>; converters: z.ZodOptional>>; validationActions: z.ZodOptional; }, z.core.$strip>>>>; postImportActions: z.ZodOptional]>>; }, z.core.$strip>>>>; }, z.core.$strip>>; }, z.core.$strip>>; }, z.core.$strip>>; }, z.core.$strip>; export type CollectionImportData = z.infer; export declare class DataLoader { private appwriteFolderPath; private importDataActions; private database; private usersController; private config; importMap: Map)[]; }[] | undefined; }[]; type?: "create" | "update" | undefined; basePath?: string | undefined; idMappings?: { sourceField: string; targetField: string; targetCollection: string; fieldToSet?: string | undefined; targetFieldToMatch?: string | undefined; }[] | undefined; createUsers?: boolean | null | undefined; updateMapping?: { originalIdField: string; targetField: string; } | undefined; } | undefined; }[]; collection?: { name: string; attributes: ({ key: string; required: boolean; type: "string"; size: number; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; encrypt?: boolean | undefined; } | { key: string; required: boolean; type: "integer"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; min?: number | undefined; max?: number | undefined; xdefault?: number | null | undefined; } | { key: string; required: boolean; type: "double"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; min?: number | undefined; max?: number | undefined; xdefault?: number | null | undefined; } | { key: string; required: boolean; type: "float"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; min?: number | undefined; max?: number | undefined; xdefault?: number | null | undefined; } | { key: string; required: boolean; type: "boolean"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: boolean | null | undefined; } | { key: string; required: boolean; type: "datetime"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; } | { key: string; required: boolean; type: "email"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; } | { key: string; required: boolean; type: "ip"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; } | { key: string; required: boolean; type: "url"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; } | { key: string; required: boolean; type: "enum"; elements: string[]; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; } | { key: string; required: boolean; type: "relationship"; relationType: "oneToMany" | "manyToOne" | "oneToOne" | "manyToMany"; twoWay: boolean; onDelete: "setNull" | "cascade" | "restrict"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; relatedCollection?: string | undefined; relatedTable?: string | undefined; twoWayKey?: string | undefined; side?: "parent" | "child" | undefined; importMapping?: { originalIdField: string; targetField?: string | undefined; } | undefined; } | { key: string; required: boolean; type: "varchar"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; size?: number | undefined; xdefault?: string | null | undefined; encrypt?: boolean | undefined; } | { key: string; required: boolean; type: "text"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; encrypt?: boolean | undefined; } | { key: string; required: boolean; type: "mediumtext"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; encrypt?: boolean | undefined; } | { key: string; required: boolean; type: "longtext"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: string | null | undefined; encrypt?: boolean | undefined; } | { key: string; required: boolean; type: "point"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: any[] | null | undefined; } | { key: string; required: boolean; type: "line"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: any[] | null | undefined; } | { key: string; required: boolean; type: "polygon"; array?: boolean | undefined; format?: string | undefined; status?: string | undefined; attributes?: string[] | undefined; orders?: string[] | undefined; $createdAt?: string | undefined; $updatedAt?: string | undefined; error?: string | undefined; xdefault?: any[] | null | undefined; })[]; $permissions: { permission: string; target: string; }[]; indexes: { key: string; type: "key" | "unique" | "fulltext"; attributes: string[]; status?: string | undefined; error?: string | undefined; orders?: string[] | undefined; }[]; importDefs: { filePath: string; primaryKeyField: string; attributeMappings: { targetKey: string; oldKey?: string | undefined; oldKeys?: string[] | undefined; valueToSet?: any; fileData?: { name: string; path: string; } | undefined; converters?: string[] | undefined; validationActions?: { action: string; params: string[]; }[] | undefined; postImportActions?: { action: string; params: (string | Record)[]; }[] | undefined; }[]; type?: "create" | "update" | undefined; basePath?: string | undefined; idMappings?: { sourceField: string; targetField: string; targetCollection: string; fieldToSet?: string | undefined; targetFieldToMatch?: string | undefined; }[] | undefined; createUsers?: boolean | null | undefined; updateMapping?: { originalIdField: string; targetField: string; } | undefined; }[]; $id?: string | undefined; enabled?: boolean | undefined; databaseId?: string | undefined; documentSecurity?: boolean | undefined; databaseIds?: string[] | undefined; } | undefined; }>; private oldIdToNewIdPerCollectionMap; collectionImportOperations: Map; private mergedUserMap; private emailToUserIdMap; private phoneToUserIdMap; private userIdSet; userExistsMap: Map; private shouldWriteFile; private _adapter; private getAdapter; constructor(appwriteFolderPath: string, importDataActions: ImportDataActions, database: Databases, config: AppwriteConfig, shouldWriteFile?: boolean); getCollectionKey(name: string): string; /** * Merges two objects by updating the source object with the target object's values. * It iterates through the target object's keys and updates the source object if: * - The source object has the key. * - The target object's value for that key is not null, undefined, or an empty string. * - If the target object has an array value, it concatenates the values and removes duplicates. * * @param source - The source object to be updated. * @param target - The target object with values to update the source object. * @returns The updated source object. */ mergeObjects(source: any, update: any): any; loadData(importDef: ImportDef): any[]; checkMapValuesForId(newId: string, collectionName: string): string | false; getTrueUniqueId(collectionName: string): string; createContext(db: ConfigDatabase, collection: CollectionCreate, item: any, docId: string): any; /** * Transforms the given item based on the provided attribute mappings. * This method applies conversion rules to the item's attributes as defined in the attribute mappings. * * @param item - The item to be transformed. * @param attributeMappings - The mappings that define how each attribute should be transformed. * @returns The transformed item. */ transformData(item: any, attributeMappings: AttributeMappings): any; setupMaps(dbId: string, specificCollections?: string[]): Promise; getAllUsers(): Promise[]>; start(dbId: string, specificCollections?: string[]): Promise; /** * Deals with merged users by iterating through all collections in the configuration. * We have merged users if there are duplicate emails or phones in the import data. * This function will iterate through all collections that are the same name as the * users collection and pull out their primaryKeyField's. It will then loop through * each collection and find any documents that have a * * @return {void} This function does not return anything. */ /** * Gets the value to match for a given key in the final data or context. * @param finalData - The final data object. * @param context - The context object. * @param key - The key to get the value for. * @returns The value to match for from finalData or Context */ getValueFromData(finalData: any, context: any, key: string): any; updateOldReferencesForNew(): void; private writeMapsToJsonFile; /** * Prepares user data by checking for duplicates based on email or phone, adding to a duplicate map if found, * and then returning the transformed item without user-specific keys. * * @param item - The raw item to be processed. * @param attributeMappings - The attribute mappings for the item. * @returns The transformed item with user-specific keys removed. */ prepareUserData(item: any, attributeMappings: AttributeMappings, primaryKeyField: string, newId: string): { transformedItem: any; existingId: string | undefined; userData: { rawData: any; finalData: z.infer; }; }; /** * Prepares the data for creating user collection documents. * This involves loading the data, transforming it according to the import definition, * and handling the creation of new unique IDs for each item. * * @param db - The database configuration. * @param collection - The collection configuration. * @param importDef - The import definition containing the attribute mappings and other relevant info. */ prepareUserCollectionCreateData(db: ConfigDatabase, collection: CollectionCreate, importDef: ImportDef): Promise; /** * Prepares the data for creating documents in a collection. * This involves loading the data, transforming it, and handling ID mappings. * * @param db - The database configuration. * @param collection - The collection configuration. * @param importDef - The import definition containing the attribute mappings and other relevant info. */ prepareCreateData(db: ConfigDatabase, collection: CollectionCreate, importDef: ImportDef): Promise; /** * Prepares the data for updating documents within a collection. * This method loads the raw data based on the import definition, transforms it according to the attribute mappings, * finds the new ID for each item based on the primary key or update mapping, and then validates the transformed data. * If the data is valid, it updates the import definition with any post-import actions and adds the item to the current collection data. * * @param db - The database configuration. * @param collection - The collection configuration. * @param importDef - The import definition containing the attribute mappings and other relevant info. */ prepareUpdateData(db: ConfigDatabase, collection: CollectionCreate, importDef: ImportDef): Promise; private updateReferencesBasedOnAttributeMappings; private getMergedId; /** * Generates attribute mappings with post-import actions based on the provided attribute mappings. * This method checks each mapping for a fileData attribute and adds a post-import action to create a file * and update the field with the file's ID if necessary. * * @param attributeMappings - The attribute mappings from the import definition. * @param context - The context object containing information about the database, collection, and document. * @param item - The item being imported, used for resolving template paths in fileData mappings. * @returns The attribute mappings updated with any necessary post-import actions. */ getAttributeMappingsWithActions(attributeMappings: AttributeMappings, context: any, item: any): ({ targetKey: string; oldKey?: string | undefined; oldKeys?: string[] | undefined; valueToSet?: any; fileData?: { name: string; path: string; } | undefined; converters?: string[] | undefined; validationActions?: { action: string; params: string[]; }[] | undefined; postImportActions?: { action: string; params: (string | Record)[]; }[] | undefined; } | { postImportActions: { action: string; params: any[]; }[]; targetKey: string; oldKey?: string | undefined; oldKeys?: string[] | undefined; valueToSet?: any; fileData?: { name: string; path: string; } | undefined; converters?: string[] | undefined; validationActions?: { action: string; params: string[]; }[] | undefined; })[]; }