import ValidationError from "./ValidationError";
import ValidatorOptionsExtended from "../interfaces/ValidatorOptionsExtended";
import WebJsonable from "../interfaces/WebJsonable";
import { ValidatorOptions } from "../interfaces";
/**
 * Validator - class for declaring plugin setting validation error token.
 * @class
 * @author Danil Andreev
 */
export default class Validator implements ValidatorOptions, WebJsonable {
    /**
     * Codes - available error codes for validation.
     */
    static readonly Codes: {
        INVALID_PAYLOAD: number;
        INVALID_TYPE: number;
        INVALID_NUMBER: number;
        INVALID_INTEGER: number;
        INVALID_BOOLEAN: number;
        INVALID_OBJECT: number;
        INVALID_KEY: number;
        INVALID_STRING: number;
        INVALID_ARRAY: number;
        OUT_OF_BOUNDS: number;
        HIGHER_THAN_MAX: number;
        TOO_BIG_VALUE: number;
        LOWER_THAN_MIN: number;
        LOWER_THAN_ZERO: number;
        TOO_SMALL_VALUE: number;
        MIN_HIGHER_THAN_MAX: number;
    };
    /**
     * key - validated object key.
     */
    readonly key: string;
    /**
     * expected - expected value of validated object.
     */
    readonly expected: string;
    readonly message?: string;
    readonly status?: number;
    readonly got?: any;
    protected nested: ValidationError[];
    /**
     * Creates an instance of Validator.
     * @constructor
     * @param key - The key of an element in setting.
     * @param expected - Expected value of an element.
     * @param options - Options for more detailed setup.
     * @author Danil Andreev
     */
    constructor(key: string, expected: string, options?: ValidatorOptionsExtended);
    /**
     * compareCode - returns true if expected code is subset of current
     * @param expected - Code for checking.
     * @param current - Code from validation.
     * @example
     * Validator.compareCode(420, 421) === true
     * Validator.compareCode(400, 421) === true
     * Validator.compareCode(422, 421) === false
     * Validator.compareCode(431, 421) === false
     */
    static compareCode(expected: number, current: number): boolean;
    /**
     * createValidator - creates Validator instance from input structure.
     * @method
     * @param input - Any input data. Will be checked and validated.
     * @throws TypeError
     * @author Danil Andreev
     */
    static createValidator(input: any): Validator;
    /**
     * getNested - returns an array of nested errors.
     * @method
     * @author Danil Andreev
     */
    getNested(): readonly ValidationError[];
    /**
     * addNested - adds nested validation error to object.
     * @param error - Error object.
     */
    addNested(error: ValidationError): Validator;
    getJSON(): object;
}
