import { Severity, Validatable, ValidationFailure } from "../shared";
import { ValidationRule } from "../validation";
import { CommonValidatorBuilder, ValidationOptionsBuilder } from "./";
export declare class CommonValidatorBuilderImpl<T, TProperty> implements ValidationOptionsBuilder<T>, CommonValidatorBuilder<T, TProperty> {
    protected validationRule: ValidationRule<T, TProperty | Iterable<TProperty>>;
    constructor(validationRule: ValidationRule<T, TProperty | Iterable<TProperty>>);
    withFailureCode(errorCode: string): ValidationOptionsBuilder<T>;
    withFailureMessage(errorMessage: string): ValidationOptionsBuilder<T>;
    withSeverity(severity: Severity): ValidationOptionsBuilder<T>;
    withPropertyName(name: string): ValidationOptionsBuilder<T>;
    whenDefined(): ValidationOptionsBuilder<T>;
    whenNotNull(): ValidationOptionsBuilder<T>;
    when(expression: (input: T) => boolean): ValidationOptionsBuilder<T>;
    unless(expression: (input: T) => boolean): ValidationOptionsBuilder<T>;
    onFailure(callback: (failure: ValidationFailure) => void): ValidationOptionsBuilder<T>;
    fulfills(validator: Validatable<TProperty>): this & ValidationOptionsBuilder<T>;
    fulfills(validationExpression: (input: TProperty) => boolean): this & ValidationOptionsBuilder<T>;
    isDefined(): this & ValidationOptionsBuilder<T>;
    isUndefined(): this & ValidationOptionsBuilder<T>;
    isNull(): this & ValidationOptionsBuilder<T>;
    isNotNull(): this & ValidationOptionsBuilder<T>;
    isEmpty(): this & ValidationOptionsBuilder<T>;
    isNotEmpty(): this & ValidationOptionsBuilder<T>;
    isEqualTo(comparison: TProperty): this & ValidationOptionsBuilder<T>;
    isNotEqualTo(comparison: TProperty): this & ValidationOptionsBuilder<T>;
    isIn(iterable: Iterable<TProperty> | object): this & ValidationOptionsBuilder<T>;
    isNotIn(iterable: Iterable<TProperty> | object): this & ValidationOptionsBuilder<T>;
}
