import { Types } from 'mongoose'; import { CreatedAt, Id, Timestamps, UpdatedAt, VerKey, VerOption } from './_shared'; declare type IsNever = 0 extends (1 & T) ? NOT : T extends never ? IS : NOT; export declare type OptionalField = 'notRequired'; export declare type Optional = Record; declare type OptionalKeys = { [K in keyof T]: T[K] extends Record ? Record extends T[K] ? K : never : never; }[keyof T]; declare type RequiredKeys = { [K in keyof T]: IsNever ? Record extends T[K] ? never : K : K>; }[keyof T]; export declare type Convert = { [P in RequiredKeys]: T[P]; } & { [P in OptionalKeys]?: T[P] extends Record ? Record extends T[P] ? (O | undefined) : never : never; }; export declare type OptionIdDisabled = Record; export declare type OptionIdAsDefault = Record; declare type OptionVerDisabled = Record; declare type OptionVerString = Record>; declare type OptionVerAsDefault = Record; /** * Add numbers! */ declare type OptionVerAsCustom = Record; declare type TimestampsEnabled = Record; declare type TimestampsEnabledEach = TimestampEnabled & TimestampEnabled; declare type TimestampEnabled = Record>; declare type TimestampString = Record>>; declare type TimestampAsDefault = Record; declare type TimestampAsCustom> = Record; declare type GetSchemaId = Opts extends OptionIdDisabled ? {} : OptionIdAsDefault; declare type GetSchemaVer = Opts extends OptionVerDisabled ? {} : Opts extends OptionVerString ? OptionVerAsCustom : OptionVerAsDefault; declare type GetSchemaTimestamp = Opts extends (TimestampsEnabled | TimestampsEnabledEach | TimestampEnabled) ? TimestampAsDefault : Opts extends TimestampString ? TimestampAsCustom : {}; export declare type DefinitionField = 'definition'; export declare type Definition = Record; export declare type GetSchemaType = GetSchemaId & Convert & GetSchemaTimestamp & GetSchemaTimestamp & GetSchemaVer; export {};