interface Options { /** Validation type */ type: 'number' | 'text' | 'date' | 'list' | 'textLength' | 'empty' | 'notEmpty'; // Ignore the validation when is blank allowBlank?: boolean; /** Criteria to be match */ criteria: | '=' | '!=' | '>=' | '>' | '<=' | '<' | 'between' | 'not between' | 'valid date' | 'valid email' | 'valid url' | 'contains' | 'not contains' | 'begins with' | 'ends with' } export type Validations = (value: string | number, options: Options) => boolean | { url: (value: any, options: object) => boolean; email: (value: any, options: object) => boolean; required: (value: any, options: object) => boolean; empty: (value: any, options: object) => boolean; notEmpty: (value: any, options: object) => boolean; number: (value: any, options: object) => boolean; login: (value: any, options: object) => boolean; list: (value: any, options: object) => boolean; date: (value: any, options: object) => boolean; text: (value: any, options: object) => boolean; textLength: (value: any, options: object) => boolean; exist: (value: any, options: object) => boolean; 'not exists': (value: any, options: object) => boolean; }