//#region src/utils.d.ts type FieldKey = string; type ObjectType> = T extends object ? T extends unknown[] ? never : T & {} : never; declare function getKeysAsProps(object: T): KeyOf[]; /** * tells whether `a` & `b` are equals * @param depth how deep in nesting should equality checks be performed for objects */ declare function isEqual(a: unknown, b: T, depth?: number): a is T; declare function isFunctionLike(value: unknown): value is T; declare function isNullOrUndefined(value: unknown): value is null | undefined; declare function isOneOf(value: unknown, values: ArrayOfMinSizeTwo | Readonly>): value is T; declare function isRecordLike(value: unknown): value is ObjectType; declare function isPropertyOf(prop: string | number | symbol, object: T): prop is keyof T; declare function toArray(value: T | T[]): T[]; //#endregion //#region src/schema/utils/types.d.ts declare const SCHEMA_ERRORS: { readonly INVALID_SCHEMA: "INVALID_SCHEMA"; }; declare const VALIDATION_ERRORS: { readonly NOTHING_TO_UPDATE: "NOTHING_TO_UPDATE"; readonly VALIDATION_ERROR: "VALIDATION_ERROR"; }; declare const ERRORS: { readonly NOTHING_TO_UPDATE: "NOTHING_TO_UPDATE"; readonly VALIDATION_ERROR: "VALIDATION_ERROR"; readonly INVALID_SCHEMA: "INVALID_SCHEMA"; }; type ValidationErrorMessage = keyof typeof VALIDATION_ERRORS; type FieldError = { reason: string; metadata: Record | null; }; type InputFieldError = FieldError | { reason: FieldError['reason']; } | { metadata: FieldError['metadata']; }; type ErrorPayload = Partial>; type InputPayload = Record; type IValidationError = ({ message: ValidationErrorMessage; } & ExtraData) & {}; interface IErrorTool { /** return what your validation error should look like from this method */ get data(): IValidationError; /** array of fields that have failed validation */ get fields(): string[]; /** determines if validation has failed */ get isLoaded(): boolean; /** - Appends a field to your final validation error - if validation payload already has provided field, only the metadata (if available) will be updated */ set(field: FieldKey, error: FieldError, value?: unknown): this; /** method to set the value of the validation error message */ setMessage(message: ValidationErrorMessage): this; } //#endregion //#region src/schema/utils/error-tool.d.ts declare class DefaultErrorTool implements IErrorTool<{ payload: ErrorPayload; }> { private message; private _payload; constructor(message: ValidationErrorMessage); get data(): { message: "NOTHING_TO_UPDATE" | "VALIDATION_ERROR"; payload: Partial>; }; get fields(): string[]; get isLoaded(): boolean; set(field: PayloadKeys, value: FieldError): this; setMessage(message: ValidationErrorMessage): this; } //#endregion //#region src/schema/utils/timestamp-tool.d.ts declare class TimeStampTool { private _keys; private timestamps; private nullable; constructor(timestamps: NS.Options['timestamps']); private _makeTimestamps; getKeys(): { createdAt: string; updatedAt: string; }; isTimestampKey: (key: string) => boolean; get isNullable(): boolean; get withTimestamps(): boolean; } //#endregion //#region src/schema/utils/index.d.ts declare function isFieldError(data: unknown): data is FieldError; declare function isInputFieldError(data: unknown): data is Partial; declare function makeFieldError(value: InputPayload[FieldKey] | InputFieldError, fallbackMessage?: string): FieldError; //#endregion //#region src/schema/types.d.ts type Context = Readonly & {}>; type SetterFnData = Readonly; }, CtxOptions>>; type ReadonlyIvoSummary = (Readonly; inputValues: Partial>; isUpdate: false; previousValues: null; values: Readonly; }, CtxOptions>> | Readonly>; ctx: Context; inputValues: Partial>; isUpdate: true; previousValues: Readonly; values: Readonly; }, CtxOptions>>) & {}; type IvoSummary = (Readonly; inputValues: Partial>; isUpdate: false; previousValues: null; values: Readonly; }, CtxOptions>> | Readonly>; ctx: Context; inputValues: Partial>; isUpdate: true; previousValues: Readonly; values: Readonly; }, CtxOptions>>) & {}; type WithReadonlyCtxOptions = T & { options: Readonly; }; type WithCtxOptions = WithReadonlyCtxOptions & { updateOptions: (updates: Partial) => void; } & {}; type TypeOf = Exclude; type AsyncSetter = (data: SetterFnData) => TypeOf | Promise>; type NotAllowedError = string | InputFieldError; type SetterWithSummary = (summary: IvoSummary & {}) => TypeOf; type Setter = (data: SetterFnData) => TypeOf; type RequiredHandlerRes = boolean | [boolean, string] | [boolean, InputFieldError] | readonly [boolean, string] | readonly [boolean, InputFieldError]; type RequiredHandler = (summary: IvoSummary & {}) => RequiredHandlerRes | Promise; type AsyncShouldUpdate = (summary: IvoSummary & {}) => boolean | Promise; type Resolver = (summary: IvoSummary & {}) => TypeOf | Promise>; type VirtualResolver = (summary: IvoSummary) => TypeOf | Promise>; type PostValidator, Input, Output, Aliases, CtxOptions extends ObjectType> = (summary: IvoSummary, propertiesProvided: InputKeys[]) => undefined | ResponseErrorObject | PostValidatorSanitizedResponse | Promise | PostValidatorSanitizedResponse>; type PostValidatorSanitizedResponse, Input, Output> = { [Key in K]?: { validated: TypeOf ? Output[Key] : Input[Key]>; } }; type PostValidationConfig, Input, Output, Aliases, CtxOptions extends ObjectType> = { properties: ArrayOfMinSizeTwo; validator: PostValidator | ArrayOfMinSizeOne | ArrayOfMinSizeOne>>; }; type KeyOf = Extract; declare namespace NS { export type LifeCycle = (typeof LIFE_CYCLES)[number]; export type DeleteHandler = (data: Readonly, options: Readonly) => unknown | Promise; export type FailureHandler = (ctx: Context, options: Readonly) => unknown | Promise; export type SuccessHandler = (summary: ReadonlyIvoSummary) => unknown | Promise; export type OnSuccessConfigObject = { properties: ArrayOfMinSizeTwo>; handler: SuccessHandler | ArrayOfMinSizeOne>; }; export type OnSuccessConfig = SuccessHandler | OnSuccessConfigObject | ArrayOfMinSizeOne | OnSuccessConfigObject>; export type Definitions = PrettyType<{ [K in keyof (Input | Output)]: PublicProperty } & { [K in keyof Omit]?: PrivateProperty } & { [K in keyof Omit]: Virtual }>; type PublicProperty = Enumerable & (LaxProperty | ReadOnly | ReadonlyNoInit | Required | RequiredBy | RequiredReadonly); type PrivateProperty = XOR, Dependent>; export type Definitions_ = { [K in keyof Input]?: Listenable & { allow?: Readonly> | { values: Readonly>; error?: NotAllowedError | ((value: unknown, allowedValues: ArrayOfMinSizeOne) => NotAllowedError); }; alias?: string; constant?: unknown; default?: unknown; dependsOn?: KeyOf | KeyOf[]; ignore?: SetterWithSummary; readonly?: boolean | 'lax'; resolver?: Function; required?: boolean | RequiredHandler; sanitizer?: VirtualResolver; shouldInit?: false | Setter; shouldUpdate?: false | Setter; validator?: Function | [Function, Function]; value?: unknown; virtual?: boolean; } }; export type AliasToVirtualMap = Record>; export type VirtualToAliasMap = Record, string>; export type DependencyMap = { [K in KeyOf]?: KeyOf[] }; type Listenable = { onDelete?: DeleteHandler | ArrayOfMinSizeOne>; onFailure?: FailureHandler | ArrayOfMinSizeOne>; onSuccess?: SuccessHandler | ArrayOfMinSizeOne>; }; type Constant = { constant: true; onDelete?: DeleteHandler | ArrayOfMinSizeOne>; onSuccess?: SuccessHandler | ArrayOfMinSizeOne>; value: TypeOf | AsyncSetter; }; type Enumerable = T> = { allow?: ArrayOfMinSizeTwo | { values: ArrayOfMinSizeTwo; error?: NotAllowedError | ((value: unknown, allowedValues: ArrayOfMinSizeOne) => NotAllowedError); }; }; type Dependables = Exclude>, K>; type Dependent = { default: TypeOf | AsyncSetter; dependsOn: Dependables | ArrayOfMinSizeOne>; onDelete?: DeleteHandler | ArrayOfMinSizeOne>; onSuccess?: SuccessHandler | ArrayOfMinSizeOne>; readonly?: true; resolver: Resolver; }; type InitAndUpdateBlockable = XOR<{ ignore?: SetterWithSummary; }, XOR<{ shouldInit?: Setter; shouldUpdate?: Setter; }, XOR<{ shouldInit?: false | Setter; shouldUpdate?: Setter; }, { shouldInit?: Setter; shouldUpdate?: false | Setter; }>>>; type LaxProperty = Listenable & InitAndUpdateBlockable & { default: TypeOf | AsyncSetter; validator?: Validator | [Validator, SecondaryValidator]; }; type ReadOnly = Listenable & { default: TypeOf | AsyncSetter; readonly: 'lax'; validator: Validator | [Validator, SecondaryValidator]; } & XOR<{ ignore?: SetterWithSummary; }, { shouldInit?: Setter; shouldUpdate?: Setter; }>; type ReadonlyNoInit = Listenable & { default: TypeOf | AsyncSetter; readonly: true; validator?: Validator | [Validator, SecondaryValidator]; } & XOR<{ ignore?: SetterWithSummary; }, { shouldInit?: false | Setter; shouldUpdate?: Setter; }>; type RequiredReadonly = Listenable & { readonly: true; } & ({ validator: Validator | [Validator, SecondaryValidator]; } | (Enumerable & { validator?: Validator | [Validator, SecondaryValidator]; })); type Required = Listenable & { required: true; shouldUpdate?: false | Setter; } & ({ validator: Validator | [Validator, SecondaryValidator]; } | (Enumerable & { validator?: Validator | [Validator, SecondaryValidator]; })); type RequiredBy = Listenable & { default: TypeOf | AsyncSetter; required: RequiredHandler; readonly?: true; validator: Validator | [Validator, SecondaryValidator]; } & XOR<{ ignore?: SetterWithSummary; }, { shouldInit?: Setter; shouldUpdate?: Setter; }>; type Virtual = InitAndUpdateBlockable & Enumerable & { alias?: Exclude, K> extends undefined ? string : Exclude, K>; required?: RequiredHandler; virtual: true; sanitizer?: VirtualResolver; onFailure?: FailureHandler | ArrayOfMinSizeOne>; onSuccess?: SuccessHandler | ArrayOfMinSizeOne>; validator: VirtualValidator | [VirtualValidator, SecondaryValidator]; }; export type InternalOptions = never> = { ErrorTool: ErrorToolClass; equalityDepth: number; onDelete?: DeleteHandler | ArrayOfMinSizeOne>; onSuccess?: SuccessHandler | ArrayOfMinSizeOne>; postValidate?: PostValidationConfig, Input, Output, object, CtxOptions> | ArrayOfMinSizeOne, Input, Output, object, CtxOptions>>; setMissingDefaultsOnUpdate?: boolean; shouldUpdate?: boolean | AsyncShouldUpdate; timestamps?: boolean | { createdAt?: boolean | string; updatedAt?: boolean | string; }; }; export type Options = never, CtxOptions extends ObjectType = {}> = { ErrorTool?: ErrorToolClass; equalityDepth?: number; onDelete?: DeleteHandler | ArrayOfMinSizeOne>; onSuccess?: OnSuccessConfig; postValidate?: PostValidationConfig, Input, Output, Aliases, CtxOptions> | ArrayOfMinSizeOne, Input, Output, Aliases, CtxOptions>>; setMissingDefaultsOnUpdate?: boolean; shouldUpdate?: boolean | AsyncShouldUpdate; timestamps?: boolean | { createdAt?: boolean | string; updatedAt?: boolean | string | { key?: string; nullable?: boolean; }; }; }; export type OptionsKey> = KeyOf>; export type PrivateOptions = { timestamps: Timestamp; }; export type Timestamp = { createdAt: string; updatedAt: string; }; export type ExtensionOptions, CtxOptions extends ObjectType = {}> = Options & { remove?: KeyOf> | KeyOf>[]; useParentOptions?: boolean; }; export {}; } type ValidationResponse = { valid: true; validated: T; } | { metadata: FieldError['metadata']; reason: string; valid: false; }; type InvalidValidatorResponse = { metadata?: FieldError['metadata']; reason?: string; valid: false; value?: unknown; }; type ValidatorResponseObject = { valid: true; validated?: T; } | InvalidValidatorResponse; type ResponseErrorObject = { [K in KeyOf]?: string | InputFieldError }; type ValidatorResponse = boolean | (ValidatorResponseObject & {}); type Validator = (value: unknown, summary: IvoSummary & {}) => ValidatorResponse> | Promise>>; type SecondaryValidator = (value: T, summary: IvoSummary & {}) => ValidatorResponse | Promise>; type VirtualValidator = (value: unknown, summary: IvoSummary & {}) => ValidatorResponse> | Promise>>; type ArrayOfMinSizeOne = [T, ...T[]] | readonly [T, ...T[]]; type ArrayOfMinSizeTwo = [T, T, ...T[]] | readonly [T, T, ...T[]]; declare const DEFINITION_RULES: readonly ["alias", "allow", "constant", "default", "dependsOn", "ignore", "onDelete", "onFailure", "onSuccess", "readonly", "resolver", "required", "sanitizer", "shouldInit", "shouldUpdate", "validator", "value", "virtual"]; type DefinitionRule = (typeof DEFINITION_RULES)[number]; declare const LIFE_CYCLES: readonly ["onDelete", "onFailure", "onSuccess"]; interface ErrorToolClass { new (message: ValidationErrorMessage, ctxOptions: CtxOptions): ErrorTool; } type TypeFromPromise = T extends Promise ? I : T; type RealType_ = T extends ((...args: never) => infer I) ? I : T; type PrettyType = { [K in keyof T]: T[K] } & {}; type RealType = { [K in keyof T]: TypeFromPromise | RealType_> } & {}; type Merge = { [K in keyof A | keyof B]: Exclude }; type Without = { [P in Exclude]?: never }; type XOR = (T | U extends object ? (Without & U) | ((Without & T) & {}) : T | U) & {}; //#endregion //#region src/schema/schema-core.d.ts declare abstract class SchemaCore> { protected _definitions: NS.Definitions_; protected _options: NS.InternalOptions; protected defaults: Partial; protected readonly aliasToVirtualMap: NS.AliasToVirtualMap; protected readonly dependencyMap: NS.DependencyMap; protected readonly propsToAllowedValuesMap: Map>; protected readonly propsWithSecondaryValidators: Set; protected readonly virtualToAliasMap: NS.AliasToVirtualMap; protected readonly postValidationConfigMap: Map, Input, Output, unknown, CtxOptions>["validator"]; }>; protected readonly propToPostValidationConfigIDsMap: Map>; protected readonly onSuccessConfigMap: Map[]; }>; protected readonly propToOnSuccessConfigIDMap: Map>; protected readonly constants: Set>; protected readonly dependents: Set>; protected readonly laxProps: Set>; protected readonly props: Set>; protected readonly propsRequiredBy: Set>; protected readonly readonlyProps: Set>; protected readonly requiredProps: Set>; protected readonly virtuals: Set>; protected timestampTool: TimeStampTool; protected readonly globalDeleteHandlers: NS.DeleteHandler[]; protected readonly globalSuccessHandlers: NS.SuccessHandler[]; constructor(definitions: NS.Definitions_, options?: NS.Options); protected _getAliasByVirtual: (prop: KeyOf) => string | undefined; protected _getDependencies: (prop: string) => NonNullable[KeyOf]>; protected _getVirtualByAlias: (alias: string) => KeyOf | undefined; private _getCircularDependenciesOf; private _getRedundantDependenciesOf; private _isRedundantDependencyOf; private _setDependencies; private _areHandlersOk; protected _checkOptions: (options: NS.Options) => void; protected _checkPropDefinitions: (definitions: NS.Definitions_) => void; protected _hasAllowedValues: (prop: string) => boolean; protected _isConstant: (prop: string) => boolean; protected _isDefaultable: (prop: string) => boolean; protected _isDependentProp: (prop: string) => boolean; protected _isInputProp: (prop: string) => boolean; protected _isLaxProp: (prop: string) => boolean; protected _isProp: (prop: string) => boolean; protected _isReadonly: (prop: string) => boolean; protected _isRequired: (prop: string) => boolean; protected _isRequiredBy: (prop: string) => boolean; protected _isRuleInDefinition: (prop: string, rules: DefinitionRule | DefinitionRule[]) => boolean; protected _isVirtualAlias: (prop: string) => boolean; protected _isVirtual: (prop: string) => boolean; protected _getDefinition: (prop: string) => NonNullable[KeyOf]>; protected _getFrozenCopy: (data: T) => Readonly; protected _getHandlers: (prop: string, lifeCycle: NS.LifeCycle) => T[]; private _isValidatorOk; private __hasAllowedValues; private __isConstantProp; private __isDependentProp; private __isPropDefinitionOk; private __isReadonly; private __isRequiredCommon; private __isRequired; private __isRequiredBy; private __isIgnoreConfigOk; private __isShouldInitConfigOk; private __isShouldUpdateConfigOk; private __isVirtualRequiredBy; private __isVirtual; private __isVirtualAliasOk; private __isVirtualAliasOk2; private __isLax; private _isPostValidateSingleConfigOk; private __isOnSuccessSingleConfigOk; private _registerPostValidator; private _registerSuccessConfig; private _isOnSuccessOptionOk; private _isPostValidateOptionOk; private _isTimestampsOptionOk; } //#endregion //#region src/schema/index.d.ts type IvoResultInfo, Operation extends 'create' | 'update' = 'create'> = { data: NonNullable>['data']>; error: null; } | { data: null; error: NonNullable>['error']>; }; declare class Schema, const Output extends RealType = Input, const Aliases = {}, const CtxOptions extends ObjectType = {}, const ErrorTool extends IErrorTool = DefaultErrorTool>> extends SchemaCore { constructor(definitions: NS.Definitions, options?: NS.Options); get definitions(): NS.Definitions; get options(): NS.InternalOptions; get reservedKeys(): string[]; extend, const ExtendedOutput extends RealType = ExtendedInput, const Aliases = object, const ExtendedCtxOptions extends ObjectType = CtxOptions, const ExtendedErrorTool extends IErrorTool = DefaultErrorTool>>(definitions: Partial>, options?: NS.ExtensionOptions): Schema; getModel(): Model; } declare class ModelTool, Output extends RealType, Aliases = {}, CtxOptions extends ObjectType = {}, ErrorTool extends IErrorTool = DefaultErrorTool>> extends SchemaCore { private _regeneratedProps; private inputValues; private context; private contextOptions; private partialContext; private values; constructor(schema: Schema); protected _getContext(previousValues?: Partial | null): Readonly>>; protected _getSummary({ data, inputValues, isUpdate }: { data: Partial; inputValues: Partial>; isUpdate: boolean; }): ReadonlyIvoSummary; protected _getMutableSummary(props: { data: Partial; inputValues: Partial>; isUpdate: boolean; }): IvoSummary; protected _getPartialContext: () => Readonly>>; protected _updateContext: (updates: Partial) => void; protected _updatePartialContext: (updates: Partial) => void; protected _getCtxOptions: () => Readonly; protected _updateCtxOptions: (options: Partial) => Readonly; protected _getDefaultValue: (prop: string) => Promise; protected _getRequiredState: (prop: string, summary: IvoSummary) => Promise<[boolean, string | FieldError]>; protected _getConstantValue: (prop: string) => any; protected _getValueBy: (prop: string, rule: DefinitionRule, extraCtx?: ObjectType) => any; private _cleanInput; private _generateConstants; private _isIngnorable; private _shouldIgnore; private _isInitAllowed; private _canInit; private _isUpdateAllowed; private _isVirtualInit; private _getValidationSummary; private _getPrimaryValidator; private _getSecondaryValidator; private _getNotAllowedError; private _handleError; private _handleInvalidValue; private _handleCreationPrimaryValidations; private _handleUpdatePrimaryValidations; private _handleSecondaryValidations; private _isSuccessfulProp; private _handlePostValidations; private _handlePostValidator; private _handleRequiredBy; private _handleSanitizationOfVirtuals; private _handleObjectValidationResponse; private _isSanitizable; private _isGloballyUpdatable; private _isUpdatable; private _isInputOrAlias; private _makeHandleFailure; private _makeHandleSuccess; private _resolveDependentChanges; private _setValues; private _setMissingDefaults; private _setValidValue; private _sanitizeValidationResponse; private _useConfigProps; private _validateAndSet; private _validate; create(input?: Partial, contextOptions?: Partial): Promise<{ data: null; error: ErrorTool["data"]; handleFailure: () => Promise; handleSuccess: null; } | { data: Output; error: null; handleFailure: null; handleSuccess: () => Promise; }>; delete(values: Output, contextOptions?: Partial): Promise; update(values: Output, changes: Partial, ctxOptions?: Partial): Promise<{ data: null; error: ErrorTool["data"]; handleFailure: () => Promise; handleSuccess: null; } | { data: Partial; error: null; handleFailure: null; handleSuccess: () => Promise; }>; } declare class Model, Output extends RealType, Aliases = never, CtxOptions extends ObjectType = never, ErrorTool extends IErrorTool = DefaultErrorTool>> { private modelFactory; constructor(modelFactory: () => ModelTool); create: (values?: Partial, contextOptions?: Partial) => Promise<{ data: null; error: ErrorTool["data"]; handleFailure: () => Promise; handleSuccess: null; } | { data: Output; error: null; handleFailure: null; handleSuccess: () => Promise; }>; delete: (values: Output, contextOptions?: Partial) => Promise; update: (values: Output, changes: Partial, contextOptions?: Partial) => Promise<{ data: null; error: ErrorTool["data"]; handleFailure: () => Promise; handleSuccess: null; } | { data: Partial; error: null; handleFailure: null; handleSuccess: () => Promise; }>; } //#endregion //#region src/validators.d.ts type ArrayValidatorOptions = { max?: number | ValueError; min?: number | ValueError; unique?: boolean; uniqueKey?: string; } & ArrayFilterOptions & ArraySortOptions; type ArrayFilterOptions = { filter: ArrayFilterFn; modifier?: never; postModFilter?: never; map?: never; } | { filter: ArrayFilterFn; modifier: (item: PreFilteredType) => ModType | Promise; postModFilter?: (item: ModType) => boolean | Promise; map?: (item: ModType) => FinalType | Promise; }; type ArrayFilterFn = ((item: unknown) => item is T) | ((item: unknown) => boolean | Promise); type ArraySortOptions = { sort?: (a: T, b: T) => number; sortOrder?: never; } | { sort?: boolean; sortOrder?: 'asc' | 'desc'; }; declare function makeArrayValidator({ filter, map, modifier, postModFilter, max, min, sort, sortOrder, unique, uniqueKey }: ArrayValidatorOptions): (value: unknown) => Promise>; declare function validateBoolean(value: unknown): ValidationResponse; declare const validateCreditCard: (value: unknown) => { metadata: FieldError["metadata"]; reason: string; valid: false; } | { valid: true; validated: string | number; }; declare const validateEmail: (value: unknown, regExp?: RegExp) => { metadata: FieldError["metadata"]; reason: string; valid: false; } | { valid: true; validated: string; }; type AllowConfig = ArrayOfMinSizeTwo | { values: ArrayOfMinSizeTwo; error: string; }; type ExclusionConfig = T | ArrayOfMinSizeTwo | { values: T | ArrayOfMinSizeTwo; error: string; }; type ValueError = { value: T; error: string; }; type NumberValidatorOptions = { exclude?: ExclusionConfig; } & XOR<{ allow: AllowConfig; }, { max?: number | ValueError; min?: number | ValueError; nullable?: boolean; }>; type StringValidatorOptions = { exclude?: ExclusionConfig; } & XOR<{ allow: AllowConfig; }, { max?: number | ValueError; min?: number | ValueError; normalForm?: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'; normalize?: boolean; nullable?: boolean; regExp?: ValueError; trim?: boolean; }>; declare function makeNumberValidator({ exclude, allow, max, min, nullable }?: NumberValidatorOptions): (value: unknown) => ValidationResponse; declare function makeStringValidator({ exclude, allow, max, min, normalForm, normalize, nullable, regExp, trim }?: StringValidatorOptions): (value: unknown) => ValidationResponse; //#endregion export { type ArrayOfMinSizeOne, type ArrayOfMinSizeTwo, type ArrayValidatorOptions, type Context, ERRORS, type ErrorPayload, type FieldError, type FieldKey, type IErrorTool, type IValidationError, type InputFieldError, type InputPayload, type IvoResultInfo, type IvoSummary, type KeyOf, type Merge, type NumberValidatorOptions, type ObjectType, type ReadonlyIvoSummary, type RealType, SCHEMA_ERRORS, Schema, type SetterFnData, type StringValidatorOptions, VALIDATION_ERRORS, type ValidationErrorMessage, type ValidatorResponse, type ValidatorResponseObject, type XOR, getKeysAsProps, isEqual, isFieldError, isFunctionLike, isInputFieldError, isNullOrUndefined, isOneOf, isPropertyOf, isRecordLike, makeArrayValidator, makeFieldError, makeNumberValidator, makeStringValidator, toArray, validateBoolean, validateCreditCard, validateEmail };