import type { FormData, FormState, ValidationRules, BaseValidatorRule, CustomRules, CustomFieldName, CustomValidatorErrorMessage } from "./type";
export default class Validator {
    private formData;
    private rules;
    private validatorError;
    private validator;
    stopOnFirstFailure: boolean;
    private customFieldNames;
    private customValidatorErrorMessage;
    /**
     * Constructor for the Validator class.
     * @param formData The form data to validate.
     * @param customRules Custom validation rules to use.
     * @param rules Validation rules to apply to the form data.
     */
    constructor({ formData, customRules, rules, stopOnFirstFailure, }?: FormState);
    /**
     * Merges the base rules and custom rules into a single object.
     * @param customRules The custom rules to merge with the base rules.
     */
    mergeCustomRules(customRules: CustomRules | undefined): this;
    /**
     * Validates the form data with the set of given rules.
     */
    validate(): Promise<Validator>;
    /**
     * Validates the given field with the set of rules.
     * @param field The field to validate.
     * @param fieldRules The validation rules to apply to the field.
     */
    private validateField;
    /**
     * Validates the elements of an array field in the form data.
     * @param field The field name, including a wildcard character.
     * @param fieldKeys The field name split into an array of keys.
     * @param fieldRules The validation rules to apply to the field.
     */
    private validateArrayObjects;
    /**
     * Validates the elements of an array field in the form data.
     * @param field The field name, whitout a wildcard character.
     * @param fieldKeys The field name split into an array of keys.
     * @param fieldRules The validation rules to apply to the field.
     */
    private validateFieldValue;
    /**
     * Gets the validator result for the given field and rule.
     * @param field The field to validate.
     * @param rule The validation rule to apply to the field.
     */
    private getValidatorResult;
    /**
     * Handles string rules by parsing the rule string and calling the corresponding
     * validator function with the provided arguments.
     * @param field The field to validate.
     * @param rule The string rule to handle.
     */
    private handleStringRule;
    /**
     * To parse rule into validator name & parameters
     * Example:
     * between:2,3
     * Result:
     * validatorName = between
     * parameters = [2,3]
     * @param rule
     */
    private parseRule;
    /**
     * To get errorBag
     */
    getErrorBag(): import("./type").ErrorBag;
    /**
     * To get overall error mesasge
     */
    getErrorMessage(): string;
    /**
     * To set custom error message
     */
    setErrorMessage(errorMessage: string): void;
    /**
     * To get error by field name
     */
    getError(field: string): string | undefined;
    /**
     * To get failed fields
     */
    getFailedFields(): string[];
    /**
     * To check if form data is pass the validator
     */
    pass(): boolean;
    /**
     * To check if form data is fail the validator
     */
    fail(): boolean;
    /**
     * To clear error from error bags
     */
    clearErrors(): this;
    getFormData(): FormData;
    setFormData(formData: FormData): this;
    setFieldErrors(field: string, fieldErrors: string[]): void;
    setFormKeyValue(key: string, value: any): void;
    getValidator(): BaseValidatorRule & CustomRules;
    setValidator(validator: BaseValidatorRule & CustomRules): this;
    getRules(): ValidationRules;
    setRules(rules: ValidationRules): this;
    setCustomFieldName(customFieldNames: CustomFieldName): void;
    getCustomFieldName(): CustomFieldName;
    setCustomValidatorErrorMessage(customValidatorErrorMessage: CustomValidatorErrorMessage): void;
    getCustomValidatorErrorMessage(): CustomValidatorErrorMessage;
}
