import * as defuss_runtime from 'defuss-runtime'; import { PathAccessor, ValidationStep } from 'defuss-runtime'; export * from 'defuss-runtime'; type ValidationChain = ValidationChainApi & ET; interface FieldValidationMessage { message: T; path: string; } interface ValidationChainApi { fieldPath: string | PathAccessor; validationCalls: Call[]; lastValidationResult: AllValidationResult; transformedData: any; options: ValidationChainOptions; not: ValidationChainApi & ET; isSafeNumber(message?: string): ValidationChain; isString(message?: string): ValidationChain; isArray(message?: string): ValidationChain; isObject(message?: string): ValidationChain; isDate(message?: string): ValidationChain; isSafeNumeric(message?: string): ValidationChain; isBoolean(message?: string): ValidationChain; isInteger(message?: string): ValidationChain; isNull(message?: string): ValidationChain; isRequired(message?: string): ValidationChain; isUndefined(message?: string): ValidationChain; isDefined(message?: string): ValidationChain; isEmpty(message?: string): ValidationChain; isInstanceOf any>(someConstructorFunction: T, message?: string): ValidationChain; isTypeOf(type: string, message?: string): ValidationChain; isNull(message?: string): ValidationChain; isEmail(message?: string): ValidationChain; isUrl(message?: string): ValidationChain; isUrlPath(message?: string): ValidationChain; isSlug(message?: string): ValidationChain; isPhoneNumber(message?: string): ValidationChain; hasDateFormat(format: string, message?: string): ValidationChain; hasPattern(pattern: RegExp, message?: string): ValidationChain; is(v: any, message?: string): ValidationChain; isEqual(value: T, message?: string): ValidationChain; isInstanceOf(c: new (...args: any[]) => T, message?: string): ValidationChain; isTypeOf(type: string, message?: string): ValidationChain; isOneOf(options: T, message?: string): ValidationChain; isTrue(message?: string): ValidationChain; isFalse(message?: string): ValidationChain; isTruthy(message?: string): ValidationChain; isFalsy(message?: string): ValidationChain; isLongerThan(minLength: number, inclusive?: boolean, message?: string): ValidationChain; isShorterThan(maxLength: number, inclusive?: boolean, message?: string): ValidationChain; isGreaterThan(minValue: number, inclusive?: boolean, message?: string): ValidationChain; isLessThan(maxValue: number, inclusive?: boolean, message?: string): ValidationChain; isAfter(minDate: Date, inclusive?: boolean, message?: string): ValidationChain; isBefore(maxDate: Date, inclusive?: boolean, message?: string): ValidationChain; asString(): ValidationChain; asNumber(): ValidationChain; asBoolean(): ValidationChain; asDate(): ValidationChain; asArray(transformerFn: (value: any) => any): ValidationChain; asInteger(): ValidationChain; useFormatter(messageFn: (messages: FieldValidationMessage[], format: (msgs: FieldValidationMessage[]) => string) => string): ValidationChain; isValid(formData: T): Promise; getMessages(): FieldValidationMessage[]; getData(): any; getField(path: string | PathAccessor): any; } interface ValidationChainOptions { timeout?: number; onValidationError?: (error: Error, step: ValidationStep) => void; } interface AllValidationResult { isValid: boolean; messages: FieldValidationMessage[]; error?: Error; } declare class Call { name: string; fn: (...args: any[]) => Promise; args: any[]; type: "validator" | "transformer"; constructor(name: string, fn: (...args: any[]) => Promise, args: any[], type?: "validator" | "transformer"); } declare class Rules implements ValidationChainApi { fieldPath: string | PathAccessor; validationCalls: Call[]; lastValidationResult: AllValidationResult; transformedData: any; options: ValidationChainOptions; messageFormatter?: (messages: FieldValidationMessage[], format: (msgs: FieldValidationMessage[]) => string) => string; _state: { isNegated: boolean; hasValidators: boolean; }; constructor(fieldPath: string | PathAccessor, options?: ValidationChainOptions); get not(): ValidationChainApi & ET; protected _handleValidationError(error: Error, callback?: (isValid: boolean, error?: Error) => void): boolean; isValid(formData: T, callback?: (isValid: boolean, error?: Error) => void): Promise; private _triggerValidation; private _executeValidation; private _buildValidationResult; private _buildErrorResult; private _getFieldValue; useFormatter(messageFn?: (messages: FieldValidationMessage[], format: (msgs: FieldValidationMessage[]) => string) => string): ValidationChainApi & ET; getMessages(): FieldValidationMessage[]; getData(): any; getField(path: string | PathAccessor): any; then(onfulfilled?: ((value: Rules) => TResult1 | PromiseLike) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | null): Promise; } declare function rule(fieldPath: string | PathAccessor, options?: ValidationChainOptions): ValidationChainApi; declare namespace rule { var extend: any>(ExtensionClass: ET) => { (fieldPath: string | PathAccessor, options?: ValidationChainOptions): ValidationChainApi> & InstanceType; extend: /*elided*/ any; }; } declare function transval(...args: (Rules | Rules[])[]): { isValid: (formData: T, callback?: (isValid: boolean, error?: Error) => void) => Promise; getMessages: (path?: string | PathAccessor, customFormatterFn?: (messages: FieldValidationMessage[]) => T) => T; getData: () => any; getField: (path: string | PathAccessor) => any; }; type ExtendedValidationChain = Rules & T; declare const transformers: { asArray: (...args: any[]) => any; asBoolean: (...args: any[]) => any; asDate: (...args: any[]) => any; asInteger: (...args: any[]) => any; asNumber: (...args: any[]) => any; asString: (...args: any[]) => any; }; declare const validators: { isAfter: defuss_runtime.ValidatorFn; isArray: defuss_runtime.ValidatorPrimitiveFn; isBefore: defuss_runtime.ValidatorFn; isBoolean: defuss_runtime.ValidatorPrimitiveFn; isDate: defuss_runtime.ValidatorPrimitiveFn; isDefined: defuss_runtime.ValidatorPrimitiveFn; isEmail: defuss_runtime.ValidatorPrimitiveFn; isEmpty: defuss_runtime.ValidatorPrimitiveFn; is: defuss_runtime.ValidatorFn; isEqual: defuss_runtime.ValidatorFn; isGreaterThan: defuss_runtime.ValidatorFn; isInteger: defuss_runtime.ValidatorPrimitiveFn; isLongerThan: defuss_runtime.ValidatorFn; isLessThan: defuss_runtime.ValidatorFn; isSafeNumber: defuss_runtime.ValidatorPrimitiveFn; isSafeNumeric: defuss_runtime.ValidatorPrimitiveFn; isObject: defuss_runtime.ValidatorPrimitiveFn; isOneOf: defuss_runtime.ValidatorFn; isPhoneNumber: defuss_runtime.ValidatorPrimitiveFn; isRequired: defuss_runtime.ValidatorPrimitiveFn; isShorterThan: defuss_runtime.ValidatorFn; isSlug: defuss_runtime.ValidatorPrimitiveFn; isString: defuss_runtime.ValidatorPrimitiveFn; isUrl: defuss_runtime.ValidatorPrimitiveFn; isUrlPath: defuss_runtime.ValidatorPrimitiveFn; hasPattern: defuss_runtime.ValidatorFn; isTrue: defuss_runtime.ValidatorFn; isFalse: defuss_runtime.ValidatorFn; isTruthy: defuss_runtime.ValidatorFn; isFalsy: defuss_runtime.ValidatorFn; hasDateFormat: defuss_runtime.ValidatorFn; isInstanceOf: defuss_runtime.ValidatorFn; isTypeOf: defuss_runtime.ValidatorFn; isNull: defuss_runtime.ValidatorPrimitiveFn; }; export { Call, Rules, rule, transformers, transval, validators }; export type { AllValidationResult, ExtendedValidationChain, FieldValidationMessage, ValidationChainApi, ValidationChainOptions };