import type { Validator } from './Validation.js'; interface ValidatorAttributes { message?: string; } interface ValueNumberAttributes extends ValidatorAttributes { value: number | string; } interface DigitAttributes extends ValidatorAttributes { integer: number; fraction: number; } interface SizeAttributes extends ValidatorAttributes { min?: number; max?: number; } interface PatternAttributes extends ValidatorAttributes { regexp: RegExp | string; } interface DecimalAttributes extends ValueNumberAttributes { inclusive?: boolean; } declare abstract class AbstractValidator implements Validator { message: string; impliesRequired: boolean; constructor(attrs?: ValidatorAttributes); abstract validate(value: T): Promise | boolean; abstract get name(): string; } export declare class Required extends AbstractValidator { impliesRequired: boolean; validate(value: T): boolean; readonly name: string; } declare abstract class NumberValidator extends AbstractValidator { validate(value: T): boolean; } export declare class IsNumber extends NumberValidator { optional: boolean; constructor(optional: boolean, attrs?: ValidatorAttributes); validate(value: number | null | undefined): boolean; readonly name = "IsNumber"; } declare abstract class ValueNumberValidator extends NumberValidator { value: number; protected constructor(attrs: ValueNumberAttributes | number | string); } export declare class Email extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: string | null | undefined): boolean; readonly name = "Email"; } export declare class Null extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: any): boolean; readonly name = "Null"; } export declare class NotNull extends Required { constructor(attrs?: ValidatorAttributes); validate(value: T): value is NonNullable; readonly name = "NotNull"; } export declare class NotEmpty extends Required { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "NotEmpty"; } export declare class NotBlank extends Required { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "NotBlank"; } export declare class AssertTrue extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "AssertTrue"; } export declare class AssertFalse extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "AssertFalse"; } export declare class Min extends ValueNumberValidator { constructor(attrs: ValueNumberAttributes | number | string); validate(value: T): boolean; readonly name = "Min"; } export declare class Max extends ValueNumberValidator { constructor(attrs: ValueNumberAttributes | number | string); validate(value: T): boolean; readonly name = "Max"; } export declare class DecimalMin extends ValueNumberValidator { inclusive: boolean; constructor(attrs: DecimalAttributes | number | string); validate(value: T): boolean; readonly name = "DecimalMin"; } export declare class DecimalMax extends ValueNumberValidator { inclusive: boolean; constructor(attrs: DecimalAttributes | number | string); validate(value: T): boolean; readonly name = "DecimalMax"; } export declare class Negative extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "Negative"; } export declare class NegativeOrZero extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "NegativeOrZero"; } export declare class Positive extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "Positive"; } export declare class PositiveOrZero extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "PositiveOrZero"; } export declare class Size extends AbstractValidator { min: number; max: number; constructor(attrs?: SizeAttributes); validate(value: string): boolean; readonly name = "Size"; } export declare class Digits extends AbstractValidator { integer: number; fraction: number; constructor(attrs: DigitAttributes); validate(value: T): boolean; readonly name = "Digits"; } export declare class Past extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "Past"; } export declare class Future extends AbstractValidator { constructor(attrs?: ValidatorAttributes); validate(value: T): boolean; readonly name = "Future"; } export declare class Pattern extends AbstractValidator { regexp: RegExp; constructor(attrs: PatternAttributes | RegExp | string); validate(value: any): boolean; readonly name = "Pattern"; } export declare class ValidityStateValidator extends AbstractValidator { message: string; constructor(); validate(): boolean; readonly name = "ValidityStateValidator"; } export {};