type DeepOmit = T extends any[] ? DeepOmit[] : T extends (...args: any[]) => any ? T : T extends Array ? DeepOmit[] : { [P in keyof T as P extends K | A ? never : P]: DeepOmit}.${infer R}` ? R : never, A>; }; type ConditionalObjectKeys = T extends Array ? Array> : T extends object ? Prettify<{ [K in keyof T as undefined extends T[K] ? never : K]: ConditionalObjectKeys; } & { [K in keyof T as undefined extends T[K] ? K : never]?: ConditionalObjectKeys; }> : T; declare class JSONRedacted { value: T; private constructor(); valueOf(): T; toBSON(): T; toJSON(): never; static from(value: T | JSONRedacted): JSONRedacted; } type Format = Prettify extends true ? any : T extends Primitives ? T : IsInUnion extends true ? Format, Primitives, FactoryKey> | undefined : T extends Array ? Format[] : T extends Record any> ? Format, Primitives, FactoryKey> : T extends Function ? never : T extends object ? ConditionalObjectKeys<{ [K in keyof T as IsInTypeList, [never, undefined]> extends true ? never : K]: Format; }> : never>; type JSONPrimitives = string | number | boolean | null; type JSONValueOf = Format; type BSONValueOf = Format; type Prettify = T extends Array ? Array> : IsClassInstance extends true ? T : T extends object ? { [K in keyof T]: Prettify; } & {} : T; type EnumToStringUnion> = `${T[keyof T]}`; type DeepPartial = { [P in keyof T]?: DeepPartial; }; type DistributiveOmit = T extends any ? Omit : never; type IsInUnion = U extends T ? true : false; type IsInTypeList = L extends [infer First, ...infer Remaining] ? IsType extends true ? true : IsInTypeList : false; type IsAny = 0 extends 1 & T ? true : false; type CheckSameType = Exclude | Exclude extends never ? true : false; type IsType = IsAny extends true ? (IsAny extends true ? true : CheckSameType) : CheckSameType; type IsPlainObject = T extends object ? T extends (...args: any[]) => any ? false : T extends any[] ? false : T extends Date | RegExp | Error ? false : true : false; type IsClassInstance = T extends object ? (IsPlainObject extends true ? false : true) : false; type StopTypes = number | string | boolean | symbol | bigint | Date; type ExcludedTypes = (...args: any[]) => any; type Dot = '' extends U ? T : `${T}.${U}`; type Paths = T extends StopTypes ? '' : T extends object ? { [K in keyof T & string]: T[K] extends StopTypes ? K : T[K] extends ExcludedTypes ? D : K | Dot>; }[keyof T & string] : T extends readonly any[] ? Paths : D; interface JsonSchema { $ref?: string; $refId?: string; type?: string | string[]; format?: string; pattern?: string; minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; minLength?: number; maxLength?: number; minItems?: number; maxItems?: number; items?: JsonSchema | JsonSchema[]; properties?: Record; required?: string[]; additionalProperties?: boolean | JsonSchema; propertyNames?: JsonSchema; enum?: any[]; anyOf?: JsonSchema[]; allOf?: JsonSchema[]; oneOf?: JsonSchema[]; const?: any; not?: JsonSchema; title?: string; description?: string; default?: any; examples?: any[]; contentMediaType?: string | string[]; } export { type BSONValueOf, type ConditionalObjectKeys, type DeepOmit, type DeepPartial, type DistributiveOmit, type EnumToStringUnion, type IsClassInstance, type IsInTypeList, type IsPlainObject, type IsType, JSONRedacted, type JSONValueOf, type JsonSchema, type Paths, type Prettify };