/// <reference types="react" />
import { Numeric } from '../../util/NumberUtils/NumberUtils';
import * as date from './date';
import { Validator as ValidatorType } from './interfaces';
import * as allOperators from './operators';
import * as ordinal from './ordinal';
export declare const addPreprocessor: <T>(preprocessor: import("./interfaces").Preprocessor<T>) => number;
export declare const validatorCreatorFactory: <B, I, F, P>({ validate, getValidatorErrorMessage, getValidatorBaseValue, getValueFromInput, getValueFromBase, operator, }: import("./validatorCreatorFactory").IValidatorCreatorOptions<B, I, F, P>) => import("./interfaces").ValidatorCreator<B, I, F, P>;
export declare type Validator<I, F, P> = ValidatorType<I, F, P>;
declare type IAllValues = any;
export interface IPredicate {
    (value: any, values: IAllValues, props?: any): boolean;
}
export declare const isPositiveCreator: (message?: string) => ValidatorType<Numeric, any, any>;
export declare const operators: typeof allOperators;
export declare const nonEmptyCreator: (message?: string) => ValidatorType<any, any, any>;
export declare const isNumberCreator: (message?: string) => ValidatorType<Numeric, any, any>;
export declare const isIntegerCreator: (message?: string | undefined) => ValidatorType<Numeric, any, any>;
export declare const maxLengthCreator: (length: number) => ValidatorType<string | number | any[], any, any>;
export declare const maxDecimalLengthCreator: (length: number) => ValidatorType<import("react").ReactText, any, any>;
export declare const exactLengthCreator: (length: number) => ValidatorType<string | any[], any, any>;
export declare const minLengthCreator: (length: number) => ValidatorType<import("react").ReactText, any, any>;
export declare const maxCountCreator: (count: number) => ValidatorType<string | number | any[], any, any>;
export declare const multipleOfFactorCreator: (factor: Numeric, message?: string | undefined) => ValidatorType<Numeric, any, any>;
export declare const requiredCreator: import("./interfaces").ValidatorCreator<void, any, any, any>;
export declare const eqCreator: ordinal.IOrdValidatorCreatorFactory;
export declare const ltCreator: ordinal.IOrdValidatorCreatorFactory;
export declare const lteCreator: ordinal.IOrdValidatorCreatorFactory;
export declare const gteCreator: ordinal.IOrdValidatorCreatorFactory;
export declare const inSegmentCreator: ordinal.IRangeValidatorCreatorFactory;
export declare const inIntervalCreator: ordinal.IRangeValidatorCreatorFactory;
export declare const requiredAtLeastOneOfCreator: <F>(fields: import("./interfaces").IFormFieldSpecification[]) => import("./interfaces").ValidatorCreator<import("./interfaces").IFormFieldValue<any>[], void, F, void>;
export declare const uniqueAmongstCreator: <F, V>(selectFields: (formData: F) => V[], transform?: import("./interfaces").ITransformer<any, V>) => import("./interfaces").ValidatorCreator<V[], V, F, void>;
export declare const checkedOneOfCreator: <F>(selectFields: (formData: F) => boolean[]) => import("./interfaces").ValidatorCreator<boolean, void, F, void>;
export declare const ltFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecificationDescriptor, right: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<Numeric, Numeric, F, void>;
export declare const lteFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecificationDescriptor, right: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<Numeric, Numeric, F, void>;
export declare const cantBeNegativeIfCreator: <F>(field: import("./interfaces").IFormFieldSpecificationDescriptor, condition: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<any, Numeric, F, void>;
export declare const gteFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecificationDescriptor, right: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<Numeric, Numeric, F, void>;
export declare const gtFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecificationDescriptor, right: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<Numeric, Numeric, F, void>;
export declare const requiredIfCheckedCreator: <F>(field: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<any, any, F, void>;
export declare const requiredIfSetCreator: <F>(field: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<any, any, F, void>;
export declare const notInTheFutureCreator: <F = void, P = void>(precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const notInThePastCreator: <F = void, P = void>(precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const afterTheDateCreator: ({ date, precision, }: date.IDateOrdValidatorProps) => import("./interfaces").ValidatorCreator<DateStr, DateStr, void, void>;
export declare const sameAsOrBeforeTheDateCreator: <F = void, P = void>({ date, precision, }: date.IDateOrdValidatorProps) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const sameAsOrAfterTheDateCreator: <F = void, P = void>({ date, precision, }: date.IDateOrdValidatorProps) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const sameAsOrBeforeFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecification, right: import("./interfaces").IFormFieldSpecification, precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, void>;
export declare const sameAsOrAfterFieldCreator: <F>(left: import("./interfaces").IFormFieldSpecification, right: import("./interfaces").IFormFieldSpecification, precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, void>;
export declare const maxInTheFutureCreator: <F, P>(amount: number, precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const maxInThePastCreator: <F, P>(amount: number, precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, P>;
export declare const overMonthFieldCreator: <F>(_left: import("./interfaces").IFormFieldSpecification, right: import("./interfaces").IFormFieldSpecification, precision?: import("moment").unitOfTime.DurationConstructor) => import("./interfaces").ValidatorCreator<DateStr, DateStr, F, void>;
export declare const minQueryLengthCreator: import("./interfaces").ValidatorCreator<number, string, any, any>;
export declare const isNotInCreator: (values: any[]) => import("./interfaces").ValidatorCreator<any[], any, any, any>;
export declare const maxLengthCreatorWithIgnoreByRegex: (maxLength: number, regex: RegExp) => import("./interfaces").ValidatorCreator<number, string | number | any[], any, any>;
export declare const matchesRegexCreator: (regexp: string, message?: string | undefined) => import("./interfaces").ValidatorCreator<RegExp, string, any, any>;
export declare const matchesRegexFieldCreator: <F>(field: import("./interfaces").IFormFieldSpecification) => import("./interfaces").ValidatorCreator<RegExp | undefined, string, F, void>;
export declare const required: ValidatorType<any, any, any>;
export declare const nonEmpty: ValidatorType<any, any, any>;
export declare const isNumber: ValidatorType<Numeric, any, any>;
export declare const isInteger: ValidatorType<Numeric, any, any>;
export declare const minQueryLength: ValidatorType<string, any, any>;
export declare const isNonNegative: ValidatorType<Numeric, any, any>;
export declare const isPositive: ValidatorType<Numeric, any, any>;
export declare const isValidURL: ValidatorType<string, any, any>;
export declare const isValidEmail: ValidatorType<string, any, any>;
export declare const requiredPhoneNumberCreator: (message?: string) => (...requiredParts: string[]) => Validator<any, any, any>;
export declare const requiredPhoneNumber: (...requiredParts: string[]) => Validator<any, any, any>;
export declare const validateIf: <I, F, P>(predicate: IPredicate | boolean, validator: ValidatorType<I, F, P> | ValidatorType<I, F, P>[]) => ValidatorType<I, F, P>;
export declare const externalIDLength: ValidatorType<string | number | any[], any, any>;
export declare const getBaseValue: <F>(right: any, otherRight: any) => (formValues: F, _: any, fieldName: string) => DeepTypeOf<F, keyof F> | undefined;
export declare const valueIsAbsent: (value: any) => boolean;
export declare const resolveRelativePath: <F>(relativePath: string, relativeTo: string) => keyof F;
export declare const zeroToHundredInterval: ValidatorType<Numeric, any, any>;
export {};
