declare type NonEmptyArray = [T, ...T[]]; export declare type TypeMeta = { name?: string; description?: string; }; declare type CustomValueType = string; export declare type ValueTypes = ValueType | NonEmptyArray; export declare type TypeDef = { $types: { [key: string]: ValueTypes; }; } & ObjectType; export declare type Validation = ValueTypes | TypeDef; export declare type SimpleTypes = 'string' | 'boolean' | 'number' | 'integer' | 'null' | '?' | 'any' | CustomValueType; export declare type ObjectType = { [key: string]: ValueTypes; }; export declare type EnumType = TypeMeta & { $enum: string[]; }; export declare type ArrayType = TypeMeta & { $array: ValueTypes; minLength?: number; maxLength?: number; }; export declare type MapType = TypeMeta & { $map: ValueTypes; regex?: string; minLength?: number; maxLength?: number; }; export declare type AndType = TypeMeta & { $and: (ObjectType | CustomValueType)[]; }; export declare type StringType = TypeMeta & { select?: string; $string: { minLength?: number; maxLength?: number; regex?: string; }; }; export declare type NumberType = TypeMeta & { postfix?: string; $number: { min?: number; max?: number; step?: number; }; }; export declare type MetaType = TypeMeta & { $type: ValueTypes; }; export declare type ValueType = SimpleTypes | EnumType | ObjectType | ArrayType | StringType | NumberType | MetaType | MapType | AndType; export declare const isSimpleType: (tbd: any) => tbd is string; export declare const isArray: (tbd: any) => tbd is ArrayType; export declare const isMap: (tbd: any) => tbd is MapType; export declare const isString: (tbd: any) => tbd is StringType; export declare const isNumber: (tbd: any) => tbd is NumberType; export declare const isMeta: (tbd: any) => tbd is MetaType; export declare const isEnum: (tbd: any) => tbd is EnumType; export declare const isObj: (tbd: any) => tbd is ObjectType; export declare const isTypeDefValidation: (tbd: any) => tbd is TypeDef; export declare const isAnd: (tbd: any) => tbd is TypeDef; export {};