import { StringSchema } from './StringSchema'; import { NumberSchema } from './NumberSchema'; import { BooleanSchema } from './BooleanSchema'; import { DateSchema } from './DateSchema'; import { EnumSchema } from './EnumSchema'; import { ArraySchema } from './ArraySchema'; import { ObjectSchema } from './ObjectSchema'; import { OrSchema } from './OrSchema'; export declare type Pick = { [P in K]: T[P]; }; export declare type NonNeverNames = { [K in keyof T]: T[K] extends (null | undefined) ? never : K; }[keyof T]; export declare type FilterNever = Pick>; export declare type CheckNull = TNull extends true ? (T | null) : T; export declare type CheckREQ = TReq extends true ? CheckNull : CheckNull; export declare type PrimitiveSchema = StringSchema | NumberSchema | BooleanSchema | DateSchema | EnumSchema; export declare type ExtractPrimitive = T extends StringSchema ? CheckREQ : T extends NumberSchema ? CheckREQ : T extends BooleanSchema ? CheckREQ : T extends DateSchema ? CheckREQ : T extends EnumSchema ? CheckREQ : T; export declare type ExtractObject = { [K in keyof T]: ConvertType; }; export declare type ConvertType = T extends PrimitiveSchema ? ExtractPrimitive : T extends ArraySchema ? CheckREQ ? CheckREQ : ConvertType2>> : T extends ObjectSchema ? CheckREQ : T extends OrSchema ? CheckREQ : T; export declare type ExtractObject2 = ConvertObject<{ [K in keyof T]: ConvertType2; }>; export declare type ConvertType2 = T extends PrimitiveSchema ? ExtractPrimitive : T extends ArraySchema ? CheckREQ ? CheckREQ : ConvertType3>> : T extends ObjectSchema ? CheckREQ : T extends OrSchema ? CheckREQ : T; export declare type ExtractObject3 = { [K in keyof T]: ConvertType3; }; export declare type ConvertType3 = T extends PrimitiveSchema ? ExtractPrimitive : T extends ArraySchema ? CheckREQ ? CheckREQ : ConvertType4>> : T extends ObjectSchema ? CheckREQ : T extends OrSchema ? CheckREQ : T; export declare type ExtractObject4 = { [K in keyof T]: ConvertType4; }; export declare type ConvertType4 = T extends PrimitiveSchema ? ExtractPrimitive : T; export declare type Convert = ConvertType; export declare type NonFunctionProp = T extends Function ? never : T; export declare type OptionalPropNames = { [P in keyof T]: undefined extends T[P] ? P : never; }[keyof T]; export declare type RequiredPropNames = { [P in keyof T]: undefined extends T[P] ? never : P; }[keyof T]; export declare type OptionalProps = { [P in OptionalPropNames]: T[P]; }; export declare type RequiredProps = { [P in RequiredPropNames]: T[P]; }; export declare type MakeOptional = { [P in keyof T]?: T[P]; }; export declare type ConvertObject = { [P in RequiredPropNames]: T[P]; } & { [P in OptionalPropNames]?: T[P]; };