import { PropertySchema } from "./decorators"; import { ClassType } from "@marcj/estdlib"; /** * Converts a argument of a method from class to plain. */ export declare function argumentClassToPlain(classType: ClassType, methodName: string, argument: number, value: any): any; /** * Converts a result type of a method from class to plain. */ export declare function methodResultClassToPlain(classType: ClassType, methodName: string, value: any): any; /** * Converts an argument of a method from class to plain. */ export declare function argumentPlainToClass(classType: ClassType, methodName: string, argument: number, value: any): any; /** * Converts a single property value. */ export declare function propertyClassToPlain(classType: ClassType, propertyName: string, propertyValue: any, propertySchema?: PropertySchema): any; /** * Converts a result type of a method from class to plain. */ export declare function methodResultPlainToClass(classType: ClassType, methodName: string, value: any): any; /** * Clones a class instance deeply. */ export declare function cloneClass(target: T, parents?: any[]): T; /** * Converts a class instance into a plain object, which can be used with JSON.stringify() to convert it into a JSON string. */ export declare function classToPlain(classType: ClassType, target: T, options?: { excludeReferences?: boolean; }): any; /** * Takes a regular object with partial fields defined of classType and converts only them into the class variant. * * Returns a new regular object again. */ export declare function partialPlainToClass(classType: ClassType, target: { [path: string]: any; }, parents?: any[]): Partial<{ [F in K]: any; }>; /** * Takes a object with partial class fields defined of classType and converts only them into the plain variant. * * Returns a new regular object again. */ export declare function partialClassToPlain(classType: ClassType, target: { [path: string]: any; }): Partial<{ [F in K]: any; }>; /** * Take a regular object literal and returns an instance of classType. * Missing data is either replaced by the default value of that property or undefined. * * This method does not validate the given data. Use either [[validatedPlainToClass]] to validate beforehand * or use [[validate]] on your newly created instance. * * ```typescript * const entity = plainToClass(MyEntity, {field1: 'value'}); * entity instanceof MyEntity; //true * ``` */ export declare function plainToClass(classType: ClassType, data: object, parents?: any[]): T; /** * Same as [plainToClass] but with validation before creating the class instance. * * ```typescript * try { * const entity = await validatedPlainToClass(MyEntity, {field1: 'value'}); * entity instanceof MyEntity; //true * } catch (error) { * if (error instanceof ValidationFailed) { * //handle that case. * } * } * ``` */ export declare function validatedPlainToClass(classType: ClassType, data: object, parents?: any[]): T; /** * @hidden */ export declare function deleteExcludedPropertiesFor(classType: ClassType, item: any, target: 'mongo' | 'plain'): void; /** * @hidden */ export declare function getIdField(classType: ClassType): (keyof T & string) | undefined; /** * @hidden */ export declare function getDecorator(classType: ClassType): string | undefined; /** * @hidden */ export declare function getRegisteredProperties(classType: ClassType): string[]; /** * @hidden */ export declare function isArrayType(classType: ClassType, property: string): boolean; /** * @hidden */ export declare function isMapType(classType: ClassType, property: string): boolean; /** * @hidden */ export declare function isEnumAllowLabelsAsValue(classType: ClassType, property: string): boolean; /** * @hidden */ export declare function isExcluded(classType: ClassType, property: string, wantedTarget: string): boolean; export declare function getEntityName(classType: ClassType): string; /** * @hidden */ export declare function getDatabaseName(classType: ClassType): string | undefined; /** * @hidden */ export declare function getCollectionName(classType: ClassType): string | undefined; /** * @hidden */ export declare function applyDefaultValues(classType: ClassType, value: { [name: string]: any; }): object;