import { ReactNode } from 'react';
import ValidationResult from './ValidationResult';
import Record from '../data-set/Record';
import { Form } from '../interface';
import { ValidatorBaseProps, ValidatorProps } from './rules';
import { ValidationErrors, ValidationSelfErrors } from '../data-set/DataSet';
export declare type CustomValidator = (value: any, name?: string, record?: Record | Form) => PromiseLike<boolean | string | undefined> | boolean | string | undefined;
export declare type ValidationReport = {
    valid: boolean;
    validationResults: ValidationResult[];
    validatorProps: ValidatorBaseProps;
};
export interface ValidationMessages {
    badInput?: ReactNode;
    patternMismatch?: ReactNode;
    rangeOverflow?: ReactNode;
    rangeUnderflow?: ReactNode;
    stepMismatch?: ReactNode;
    stepMismatchBetween?: ReactNode;
    tooLong?: ReactNode;
    tooShort?: ReactNode;
    typeMismatch?: ReactNode;
    valueMissing?: ReactNode;
    valueMissingNoLabel?: ReactNode;
    customError?: ReactNode;
    uniqueError?: ReactNode;
    unknown?: ReactNode;
}
export default class Validator {
    validationResults?: ValidationResult[] | undefined;
    private static addError;
    static reportAll(errors: ValidationErrors[]): void;
    static reportDataSet(errors: ValidationSelfErrors[]): void;
    static report(results: ValidationResult[], props: ValidatorBaseProps): Promise<void>;
    private static execute;
    static checkValidity(value?: unknown, props?: ValidatorBaseProps, getProp?: <T extends keyof ValidatorProps>(key: T) => ValidatorProps[T]): Promise<ValidationReport>;
}
