import { ReactNode } from 'react';
import Validity from './Validity';
import ValidationResult from './ValidationResult';
import Record from '../data-set/Record';
import Form from '../form/Form';
import { validationRule, ValidatorProps } from './rules';
import Field from '../data-set/Field';
import { FormField } from '../field/FormField';
export declare type CustomValidator = (value: any, name?: string, record?: Record | Form) => Promise<boolean | string | undefined>;
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 {
    private field?;
    private control?;
    private innerValidationResults?;
    get props(): ValidatorProps;
    private get uniqueRefFields();
    private get uniqueRefValidationResult();
    get validationResults(): ValidationResult[];
    get currentValidationResult(): ValidationResult | undefined;
    get validity(): Validity;
    get injectionOptions(): object;
    get validationMessage(): ReactNode;
    constructor(field?: Field, control?: FormField<any>);
    reset(): void;
    report(ret: ValidationResult): Promise<void>;
    clearErrors(): void;
    addError(result: ValidationResult): void;
    execute(rules: validationRule[], value: any[]): Promise<any>;
    checkValidity(value?: any): Promise<boolean>;
}
