import { Rules } from '../types';
declare class validateAttributes {
    /**
     * Stores the data object
     */
    data: object;
    /**
     * Stores the rules object
     */
    rules: Rules;
    constructor(data?: object, rules?: Rules);
    /**
     * Validate that an attribute was "accepted".
     *
     * This validation rule implies the attribute is "required".
     */
    validateAccepted(value: any): boolean;
    /**
     * Validate that an attribute was "accepted" when another attribute has a given value.
     */
    validateAcceptedIf(value: any, parameters: string[]): boolean;
    /**
     *  Validate the date is after a given date.
     */
    validateAfter(value: any, parameters: string[]): boolean;
    /**
     * Validate the date is after or equal a given date.
     */
    validateAfterOrEqual(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute contains only alphabetic characters.
     */
    validateAlpha(value: any): boolean;
    /**
     * Validate that an attribute contains only alpha-numeric characters, dashes, and underscores.
     */
    validateAlphaDash(value: any): boolean;
    /**
     * Validate that an attribute contains only alpha-numeric characters.
     */
    validateAlphaNum(value: any): boolean;
    /**
     * Validate that an attribute is an array
     */
    validateArray(value: any): boolean;
    /**
     * Validate that an attribute is an array and that his values are unique
     */
    validateArrayUnique(value: any): boolean;
    /**
     * Always returns true - this method will be used in conbination with other rules and will be used to stop validation of first failure
     */
    validateBail(): boolean;
    /**
     *  Validate the date is before a given date.
     */
    validateBefore(value: any, parameters: string[]): boolean;
    /**
     * Validate the date is before or equal a given date.
     */
    validateBeforeOrEqual(value: any, parameters: string[]): boolean;
    /**
     * Validate the size of an attribute is between a set of values
     */
    validateBetween(value: any, parameters: number[], attribute: string): boolean;
    /**
     * Validate that an attribute is boolean
     */
    validateBoolean(value: any, parameters: number[], attribute: string): boolean;
    /**
     * Validate that an attribute has matching confirmation.
     */
    validateConfirmed(value: any, parameters: any, attribute: string): boolean;
    /**
     * Validate that an attribute is a valid date.
     */
    validateDate(value: any): boolean;
    /**
     * Validate that an attribute is equal to another date.
     */
    validateDateEquals(value: any, paramters: string[]): boolean;
    /**
     * Validate that an attribute was "declined".
     *
     * This validation rule implies the attribute is "required".
     */
    validateDeclined(value: any): boolean;
    /**
     * Validate that an attribute was "declined" when another attribute has a given value.
     */
    validateDeclinedIf(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute is different from another attribute.
     */
    validateDifferent(value: any, parameters: string[]): boolean;
    /**
     *  Validate that an attribute has a given number of digits.
     */
    validateDigits(value: any, parameters: any[]): boolean;
    /**
     * Validate that an attribute is between a given number of digits.
     */
    validateDigitsBetween(value: any, parameters: any[]): boolean;
    /**
     * Validate that an attribute is a valid email address.
     */
    validateEmail(value: any): boolean;
    /**
     * Validate the attribute ends with a given substring.
     */
    validateEndsWith(value: any, parameters: string[]): boolean;
    /**
     * Validate that two attributes match.
     */
    validateSame(value: any, paramaters: string[]): boolean;
    /**
     * Validate the size of an attribute.
     */
    validateSize(value: any, parameters: string[], attribute: string): boolean;
    /**
     * Validate Optinial attributes. Always return true, just lets us put sometimes in rule.
     */
    validateSometimes(): boolean;
    /**
     * Validate the attribute starts with a given substring.
     */
    validateStartsWith(value: any, parameters: string[]): boolean;
    /**
     * Validate that a required attribute exists
     */
    validateRequired(value: any): boolean;
    /**
     * Validate that an attribute exists when another atteribute has a given value
     */
    validateRequiredIf(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute exists when another attribute does not have a given value.
     */
    validateRequiredUnless(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute exists when any other attribute exists.
     */
    validateRequiredWith(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute exists when all other attributes exist.
     */
    validateRequiredWithAll(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute exists when another attribute does not.
     */
    validateRequiredWithout(value: any, parameters: string[]): boolean;
    /**
     * Validate that an attribute exists when all other attributes do not.
     */
    validateRequiredWithoutAll(value: any, parameters: string[]): boolean;
    /**
     * Determine if any of the given attributes fail the required test.
     */
    anyFailingRequired(attributes: string[]): boolean;
    /**
     * Determine if all of the given attributes fail the required test.
     */
    allFailingRequired(attributes: string[]): boolean;
    /**
     * Validate that an attribute is a string.
     */
    validateString(value: any): boolean;
    /**
    * Validate the size of an attribute is less than a maximum value.
    */
    validateMax(value: any, parameters: number[], attribute: string): boolean;
    /**
     * Validate the size of an attribute is greater than a minimum value.
     */
    validateMin(value: any, parameters: number[], attribute: string): boolean;
    /**
     * Validate that an attribute is numeric.
     */
    validateNumeric(value: any, parameters: string[], attribute: string): boolean;
    /**
     * Validate that an attribute is an object
     */
    validateObject(value: any): boolean;
    /**
     * Validate that an attribute exists even if not filled.
     */
    validatePresent(value: any, parameters: string[], attribute: string): boolean;
    /**
     * Validate that an attribute is an integer.
     */
    validateInteger(value: any, parameters: string[], attribute: string): boolean;
    /**
     * Validate that the attribute is a valid JSON string
     */
    validateJson(value: any): boolean;
    /**
     * Validate that an attribute is greater than another attribute.
     */
    validateGt(value: any, parameters: any[], attribute: string): boolean;
    /**
     * Validate that an attribute is greater than or equal  another attribute.
     */
    validateGte(value: any, parameters: any[], attribute: string): boolean;
    /**
     * Validate that an attribute is less than another attribute.
     */
    validateLt(value: any, parameters: any[], attribute: string): boolean;
    /**
     * Validate that an attribute is less than or equal another attribute.
     */
    validateLte(value: any, parameters: any[], attribute: string): boolean;
    /**
     * Validate an attribute is contained within a list of values.
     */
    validateIn(value: any, parameters: string[]): boolean;
    /**
     * "Indicate" validation should pass if value is null
     *
     * Always returns true, just lets us put "nullable" in rules.
     */
    validateNullable(): boolean;
    /**
     * Validate an attribute is not contained within a list of values.
     */
    validateNotIn(value: any, parameters: string[]): boolean;
    /**
     * Always returns true - this method will be used in conbination with other rules
     */
    validateStrict(): boolean;
    /**
     * Validate that an attribute is a valid URL.
     */
    validateUrl(value: any): boolean;
    /**
     *  Determine if a comparison passes between the given values.
     */
    compareDates(value: any, parameter: any, operator: string, rule: string): boolean;
    /**
     * Require a certain number of parameters to be present
     */
    requireParameterCount(count: number, parameters: string[] | number[], rule: string): void;
    /**
     * Prepare the values for validation
     */
    parseDependentRuleParameters(other: any, parameters: string[]): any[];
}
export default validateAttributes;
