declare type MessageType = string | ((props: any) => string); export interface BaseOptions { required?: RequiredOptions; min?: MinOptions; max?: MaxOptions; regExp?: RegExpOptions; } export declare type RequiredOptions = { message?: MessageType; }; export declare type MinOptions = { min: number; message?: MessageType; }; export declare type MaxOptions = { max: number; message?: MessageType; }; export declare type RegExpOptions = { regExp: string | RegExp; message?: MessageType; }; export declare type BaseOptionKeys = keyof BaseOptions; export declare type ValidatorFunc = (val: any, formValues: any, callback: (res: true | Error) => void, props?: Record) => void | Promise; export declare type Validator = { [key in string]?: ValidatorFunc; }; export declare type ValidatorProps = { [key in string]?: string | number; } & { max?: MaxFuncOutPut['max']; min?: MinFuncOutPut['min']; required?: RequiredFuncOutPut['required']; regExp?: RegExpFuncOutPut['regExp']; message?: string; }; export interface RequiredFuncOutPut { message: MessageType; required: boolean; } export interface MinFuncOutPut { message: MessageType; min: number; } export interface MaxFuncOutPut { message: MessageType; max: number; } export interface RegExpFuncOutPut { message: MessageType; regExp: string | RegExp; } export interface Type { type: 'number' | 'array' | 'string'; } export declare type InnerRuleFuncResult = RequiredFuncOutPut & MinFuncOutPut & MaxFuncOutPut & RegExpFuncOutPut & Type; export interface BaseOptionRule { required: { (message?: string): RequiredFuncOutPut; isInnerValidator: true; }; min: { (length: number, message?: string): MinFuncOutPut; isInnerValidator: true; }; max: { (length: number, message?: string): MaxFuncOutPut; isInnerValidator: true; }; regExp: { (regexp: string | RegExp, message?: string): RegExpFuncOutPut; isInnerValidator: true; }; } export declare type Rule = Validator[keyof Validator] | BaseOptionRule[keyof BaseOptionRule] | RequiredFuncOutPut | MinFuncOutPut | MaxFuncOutPut | RegExpFuncOutPut | Type; export {};