import { IntersectionType } from './types'; import { keySignature, ValidationError, Type, StringType, NumberType, LiteralType, ObjectType, ArrayType, UnionType, PartialType, TupleType, DateType, LazyType, UndefinedType, NullType, NullableType, EnumType, BooleanType, UnknownType, NumberOptions, Literal, ObjectShape, ObjectOptions, AnyType, ArrayOptions, UnionOptions, PartialOpts, IntersectionResult, DeepPartialShape, PartialShape, Eval, ToUnion, StringTypes, OptionalType, BigIntOptions, BigIntType, StringOptions, EnumOptions } from './types'; export { keySignature, ValidationError, Type, Infer, AnyType, ObjectShape, NumberType, BooleanType, StringType, UndefinedType, NullType, ObjectType, ArrayType, TupleType, NullableType, OptionalType, MappedType, DateType, UnknownType, UnionType, IntersectionType, } from './types'; export declare const string: (opts?: StringOptions) => StringType; export declare const boolean: () => BooleanType; export declare const number: (opts?: NumberOptions) => NumberType; export declare const bigint: (opts?: BigIntOptions) => BigIntType; export declare const unknown: () => UnknownType; export declare const literal: (literal: T) => LiteralType; export declare const object: (shape: T, opts?: ObjectOptions) => ObjectType; export declare const array: (schema: T, opts?: ArrayOptions) => ArrayType; export declare const union: (schemas: T, opts?: UnionOptions) => UnionType; export declare const intersection: (l: T, r: K) => IntersectionResult; type LiteralWrapper = T extends Literal ? LiteralType : never; type ToLiteralUnion = { [key in keyof T]: LiteralWrapper; }; export declare const literals: (...args: T) => UnionType>; export declare const record: (schema: T) => ObjectType<{ [keySignature]: T; }>; export declare const dictionary: (schema: T) => ObjectType<{ [keySignature]: T extends OptionalType ? T : OptionalType; }>; export declare const tuple: (schemas: T) => TupleType; export declare const date: () => DateType; export declare const lazy: AnyType>(fn: T) => LazyType; export declare function partial, K extends PartialOpts>(schema: T, opts?: K): T extends ObjectType ? ObjectType : PartialShape>> : never; export declare function partial(schema: T, opts?: K): PartialType; export declare function pick, K extends T extends ObjectType ? Shape extends { [keySignature]: AnyType; } ? string : StringTypes : never>(schema: T, keys: K[]): T extends ObjectType ? ObjectType, ToUnion>> & (Shape extends { [keySignature]: AnyType; } ? Shape extends { [keySignature]: infer KeySig; } ? { [key in Exclude, keyof Shape>]: KeySig; } : {} : {})>> : never; export declare function omit, K extends T extends ObjectType ? StringTypes : never>(schema: T, keys: K[]): T extends ObjectType ? ObjectType>>> : never; declare const undefinedValue: () => UndefinedType; declare const nullValue: () => NullType; declare const enumValue: (e: T, opts?: EnumOptions) => EnumType; export { undefinedValue as undefined, nullValue as null, enumValue as enum }; declare const _default: { Type: typeof Type; string: (opts?: StringOptions) => StringType; boolean: () => BooleanType; number: (opts?: NumberOptions) => NumberType; bigint: (opts?: BigIntOptions) => BigIntType; unknown: () => UnknownType; literal: (literal: T) => LiteralType; literals: (...args: T) => UnionType>; date: () => DateType; object: (shape: T, opts?: ObjectOptions) => ObjectType; array: (schema: T, opts?: ArrayOptions) => ArrayType; union: (schemas: T, opts?: UnionOptions) => UnionType; intersection: (l: T, r: K) => IntersectionResult; record: (schema: T) => ObjectType<{ [keySignature]: T; }>; dictionary: (schema: T) => ObjectType<{ [keySignature]: T extends OptionalType ? T : OptionalType; }>; tuple: (schemas: T) => TupleType; partial: typeof partial; pick: typeof pick; omit: typeof omit; required: typeof required; lazy: AnyType>(fn: T) => LazyType; undefined: () => UndefinedType; null: () => NullType; enum: (e: T, opts?: EnumOptions) => EnumType; ValidationError: typeof ValidationError; keySignature: typeof keySignature; NumberType: typeof NumberType; BooleanType: typeof BooleanType; StringType: typeof StringType; UndefinedType: typeof UndefinedType; NullType: typeof NullType; ObjectType: typeof ObjectType; ArrayType: typeof ArrayType; TupleType: typeof TupleType; NullableType: typeof NullableType; OptionalType: typeof OptionalType; DateType: typeof DateType; UnknownType: typeof UnknownType; UnionType: typeof UnionType; IntersectionType: typeof IntersectionType; }; export default _default; type Require = T extends NullableType ? Require : T extends OptionalType ? Require : T; export declare function required(schema: T): Require;