import { DateTimeFormatter } from "./datetime"; import { FieldInterface, FilterInterface, SchemaInterface, SkipIfUndefinedSettings, ValidatorInterface } from "./interfaces"; interface FilterSettings { inFilters: FilterInterface[]; outFilters: FilterInterface[]; } interface ValidatorSettings { inValidators: ValidatorInterface[]; outValidators: ValidatorInterface[]; } interface BaseOptions { dumpName?: string; localName?: string; dumpOnly?: boolean; loadName?: string; remoteName?: string; loadOnly?: boolean; filters?: FilterSettings | FilterInterface[]; validators?: ValidatorSettings | ValidatorInterface[]; skipIfUndefined?: boolean | SkipIfUndefinedSettings; } export declare abstract class Base implements FieldInterface { name: string | null; remoteName: string; dumpOnly: boolean; localName: string; loadOnly: boolean; validators: ValidatorSettings; filters: FilterSettings; skipIfUndefined: SkipIfUndefinedSettings; constructor(options?: OptionsType); constructor(name: string | null, options?: OptionsType); abstract dump(val: any, context?: any, result?: any, schema?: SchemaInterface): any; abstract load(val: any, context?: any, result?: any, schema?: SchemaInterface): any; protected prepareOptions(options?: OptionsType): OptionsType; protected applyFilters(val: any, filters: FilterInterface[]): any; protected applyValidators(val: any, context: any, result: any, schema: SchemaInterface, validators: ValidatorInterface[]): void; private createFilterSettings; private createValidatorSettings; private applyOptions; protected processOptions(options: T): void; } interface AbstractFieldOptions extends BaseOptions { required?: boolean; nullable?: boolean; defaultValue?: any; } export declare abstract class AbstractField extends Base { required: boolean; nullable: boolean; defaultValue: any; protected resolveMissingAndNull(val: any): any; protected resolveIsMissing(val: any): any; protected resolveIsNull(val: any): any; protected processOptions(options: T): void; } export declare abstract class CommonBase extends AbstractField { dump(val: any, context?: any, result?: any, schema?: SchemaInterface): any; load(val: any, context?: any, result?: any, schema?: SchemaInterface): any; abstract dumpValue(val: any): any; abstract loadValue(val: any): any; } export declare class Str extends CommonBase { dumpValue(val: any): string; loadValue(val: any): string; } export declare class Numeric extends CommonBase { dumpValue(val: any): Number; loadValue(val: any): Number; } export declare class Int extends Numeric { dumpValue(val: number): number; loadValue(val: any): Number; } export declare class Bool extends CommonBase { dumpValue(val: any): boolean; loadValue(val: any): boolean; } interface DateBaseOptions extends AbstractFieldOptions { formatter?: DateTimeFormatter; } export declare abstract class DateBase extends CommonBase { formatter: DateTimeFormatter; constructor(options?: DateBaseOptions); constructor(name: string | null, options?: DateBaseOptions); } export declare class Date_ extends DateBase { dumpValue(val: Date): string; loadValue(val: string): any; } export declare class Time extends DateBase { dumpValue(val: Date): string; loadValue(val: string): Date; } export declare class DateTime extends DateBase { dumpValue(val: Date): string; loadValue(val: any): Date; } export declare abstract class ComplexFieldBase extends AbstractField { } export declare class Nested extends ComplexFieldBase { schema: SchemaInterface; constructor(schema: SchemaInterface, options?: AbstractFieldOptions); constructor(name: string | null, schema: SchemaInterface, options?: AbstractFieldOptions); dump(val: any): Object; load(val: Object): any; } export declare class List extends ComplexFieldBase { itemField: FieldInterface; constructor(itemField: FieldInterface, options?: AbstractFieldOptions); constructor(name: string | null, itemField: FieldInterface, options?: AbstractFieldOptions); load(val: Object[]): any[]; dump(val: any[]): Object[]; protected resolveMissingAndNull(val: any): void; } export declare abstract class AbstractMapping extends ComplexFieldBase { protected keyType: FieldInterface; protected valueType: FieldInterface; constructor(name: string | null, keyType: FieldInterface, valueType: FieldInterface, options?: AbstractFieldOptions); constructor(keyType: FieldInterface, valueType: FieldInterface, options?: AbstractFieldOptions); } export declare class Dict extends AbstractMapping { dump(val: any): any; load(val: any): any; } export declare class Map_ extends AbstractMapping { dump(val: any): any; load(val: any): any; } export declare class Raw extends AbstractField { dump(val: any): any; load(val: any): any; } export declare class Callbacks extends AbstractField { loadFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any; dumpFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any; constructor(loadFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any, dumpFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any, options?: AbstractFieldOptions); constructor(name: string | null, loadFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any, dumpFn: (val: any, context: any, result: any, schema: SchemaInterface | undefined) => any, options?: AbstractFieldOptions); dump(val: any, context: any, result: any, schema: SchemaInterface | undefined): any; load(val: any, context: any, result: any, schema: SchemaInterface | undefined): any; } export {};