export declare type NonPromise = undefined | { then?: undefined; }; export declare type DefaultType = F | { (): F & NonPromise; }; export declare type CheckFunction = ((name: string, mixed: any) => Promise); export declare type CheckType = CheckFunction | Schema | { (): F & NonPromise; }; export declare const DateInstance: () => Date; export declare const StringArray: () => string[]; export declare const NumberArray: () => number[]; export declare const BooleanArray: () => boolean[]; export declare const DateArray: () => Date[]; export declare const OptionalString: () => string | undefined; export declare const OptionalNumber: () => number | undefined; export declare const OptionalBoolean: () => boolean | undefined; export declare const OptionalDate: () => Date | undefined; export declare type CheckObject = { default: DefaultType; check: CheckType; }; export declare type Field = CheckType | CheckObject; export declare type Fields = { [fieldName in keyof T]: Field; }; export interface Schema { allowExtraFields?: boolean; check?: (name: string, target: T) => Promise; fields: Fields; }