export declare type Message = () => string;
/**
 * Validate that the argument condition is [true] otherwise
 * throwing an exception with the specified message. This method is useful when
 * validating according to an arbitrary boolean expression, such as validating a
 * primitive number or using your own custom validation expression.
 *
 * @param expression The boolean expression to check
 * @param message the exception message if invalid, not null
 *
 * @return evaluated expression
 *
 * @throws Throws [ArgumentError] if expression is [false]
 */
export declare function isTrue(expression: boolean, message?: Message): boolean | never;
/**
 * Validate that the specified argument is not [null];
 * otherwise throwing an exception.
 *
 *      Validate.notNull(myObject, () => "The object must not be null");
 *
 * The message of the exception is &quot;The validated object is
 * null&quot;.
 *
 * @param expression The expression the should evaluate against null
 * @param message The exception message if invalid
 *
 * @return evaluated expression
 *
 * @throws Throws [ArgumentError] if expression is null
 */
export declare function notNull<T>(expression: T, message?: Message): NonNullable<T> | never;
/**
 * Validate that the specified argument is neither null
 * nor is empty.
 *
 * @param expression The expression the should evaluate against not being empty
 * @param message The exception message if invalid
 *
 * @return evaluated expression
 *
 * @throws Throws [ArgumentError] if expression is invalid
 */
export declare function notEmpty<T = object | string>(expression: T, message?: Message): T | never;
/**
 * Validate that the specified string is
 * neither null, a length of zero (no characters), empty
 * nor whitespace; otherwise throwing an exception with the specified
 * message.
 *
 * @param expression The expression the should evaluate against not being blank
 * @param message The exception message if invalid
 *
 * @return evaluated expression - undefined gets remove
 *
 * @throws Throws [ArgumentError] if expression is invalid
 */
export declare function notBlank(expression: string | undefined, message?: Message): string | never;
/**
 * Validates that the given [index] is available in the given [array]
 * and its value is not null or undefined.
 *
 * @param index Array-Index
 * @param array The Array to check against
 * @param message The exception message if invalid
 *
 * @return If the index is valid it is returned
 *
 * @throws Throws [ArgumentError] if expression is invalid
 */
export declare function isIndexValid<T>(index: number, array: T[], message?: Message): T | never;
/**
 * Validates that the given [property] is available in the given [obj]
 * and its value is not null or undefined.
 *
 * @param key Property in [obj]
 * @param obj The object to check the property against
 * @param message The exception message if invalid
 *
 * @return If the key is valid it is returned
 *
 * @throws Throws [ArgumentError] if expression is invalid
 */
export declare function isPropertyValid(key: string, obj: {}, message?: Message): string | never;
/**
 * Validate that the specified [input] matches the specified [regex] pattern;
 * otherwise throwing an exception.
 *
 * @param input String to check against the given [regex]
 * @param regexp The Pattern to check the string against
 * @param message The exception message if invalid
 *
 * @return If the key is valid it is returned
 *
 * @throws Throws [ArgumentError] if expression is invalid
 */
export declare function matchesPattern(input: string, regexp: RegExp, message?: Message): string | never;
export declare function isEmail(email: string, message?: Message): string | never;
/** Length of hostname must not exceed 255 characters */
export declare function isHostname(hostname: string, message?: Message): string | never;
export declare function isPassword(password: string, message?: Message): string | never;
export declare function isAlphanumeric(value: string, message?: Message): string | never;
export declare function isHex(value: string, message?: Message): string | never;
export declare function isUuid(value: string, message?: Message): string | never;
export declare function isUrl(url: string, message?: Message): string | never;
export declare function isPort(value: string | number, message?: Message): number | never;
export declare function inclusiveBetween(value: number, start: number, end: number, message?: Message): number | never;
export declare function isWebToken(token: string, message?: Message): string | never;
export declare function isLocation(latitude: number, longitude: number, message?: Message): {
    latitude: number;
    longitude: number;
};
