export declare const enum ValidationState { VALID = "valid", INVALID = "invalid" } type ValidResult = { state: 'valid'; }; type InvalidResult = { state: 'invalid'; error?: E; }; export type ValidationResult = ValidResult | InvalidResult; export type PredicateFn = (value: T) => boolean; export type ValidationFn = (value: T) => ValidationResult; export type ValidationTuple = [ValidationFn, E]; export type Validator = ValidationFn | ValidationTuple; export declare class Validation { static all(validators: ValidationFn[]): ValidationFn; static all(validators: Validator[]): ValidationFn; static allErrors(validators: Validator[]): ValidationFn; static any(validators: ValidationFn[]): ValidationFn; static any(validators: Validator[]): ValidationFn; static mapAll(validator: PredicateFn | ValidationFn, errorFn?: (value: T) => E): ValidationFn; static mapAny(validator: PredicateFn | ValidationFn, error?: E): ValidationFn; } export declare function asValidator(predicate: PredicateFn, error?: E): ValidationFn; export declare function withError(fn: PredicateFn, error: E): ValidationFn; export declare function withError(fn: ValidationFn, error: E): ValidationFn; export declare function withErrorFn(fn: PredicateFn, errorFn: (value: T) => E): ValidationFn; export declare function withErrorFn(fn: ValidationFn, errorFn: (value: T) => E): ValidationFn; export declare function validResult(): ValidResult; export declare function invalidResult(): InvalidResult; export declare function invalidResult(error: E): InvalidResult; export declare const run: (validator: PredicateFn | Validator, value: T, error?: E) => ValidResult | InvalidResult; export declare function toValidationResult(result: boolean, error?: E): ValidationResult; export {};