import type { GetOverridedKeys } from '@js-toolkit/utils/types/augmentation'; export interface ValidatorTypes { } export type ValidatorType = GetOverridedKeys<'error' | 'warn' | 'info', ValidatorTypes>; export type ValueAssertion = (value: V) => boolean; export type TargetValueAssertion = (value: V, target: T, prop: keyof T) => boolean; type MessageBuilder | TargetValueAssertion> = (...args: Parameters) => string; export interface ValidatorConfig | TargetValueAssertion> { readonly type: ValidatorType; readonly message: string | MessageBuilder; /** Use this prop if you need to tell that the validation result is still valid but you want to return some message. */ readonly valid?: boolean; } export interface Validator | TargetValueAssertion = ValueAssertion | TargetValueAssertion> extends ValidatorConfig { readonly assertion: A; } export type ValidatorOptions | TargetValueAssertion> = Partial>; export declare function required({ type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function min(minValue: number, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function max(maxValue: number, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function minLength(minValue: number, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function maxLength(maxValue: number, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function match(regExp: RegExp, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function oneOf(list: unknown[], { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function email({ type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function propEquals(otherProp: K, { type, message, ...rest }?: ValidatorOptions>): Validator>; export declare function dateString({ type, message, ...rest }?: ValidatorOptions>): Validator>; export {};