import { Strings } from "./strings";
import { Numbers } from "./numbers";
import { Booleans } from "./booleans";
import { Dates } from "./dates";
import { DateTimes } from "./datetimes";
import { Times } from "./times";
import { TypeValidator, TypeValidatorWithContext } from "./base";
import { Arrays } from "./arrays";
import { ValidatorItem } from "../main";
import { Primitive } from "../utils";
export { TypeValidator } from "./base";
export declare const custom: <T>() => TypeValidator<T>;
export declare const string: <T extends string | undefined = string>() => Strings<T>;
export declare const number: <T extends number | undefined = number>() => Numbers<T>;
export declare const boolean: <T extends boolean | undefined = boolean>() => Booleans<T>;
export declare const date: <T extends Date | undefined = Date>() => Dates<T>;
export declare const time: <T extends Date | undefined = Date>() => Times<T>;
export declare const datetime: <T extends Date | undefined = Date>() => DateTimes<T>;
export declare const array: <T>() => Arrays<T, Array<T>>;
/**
 * build validator for single type (string | number | ...)
 */
export declare function primitive<T extends Primitive, CTX extends Record<string, any> = any>(validations: TypeValidator<T> | TypeValidatorWithContext<T, CTX>[]): ValidatorItem<T, CTX>;
