declare type StrictNullChecksWrapper = undefined extends null ? `strictNullChecks must be true in tsconfig to use ${Name}` : Type; declare type UnionToIntersection = (U extends any ? (_: U) => void : never) extends (_: infer I) => void ? I : never; export declare type SomeJSONSchema = UncheckedJSONSchemaType; declare type UncheckedPartialSchema = Partial>; export declare type PartialSchema = StrictNullChecksWrapper<"PartialSchema", UncheckedPartialSchema>; declare type JSONType = IsPartial extends true ? T | undefined : T; interface NumberKeywords { minimum?: number; maximum?: number; exclusiveMinimum?: number; exclusiveMaximum?: number; multipleOf?: number; format?: string; } interface StringKeywords { minLength?: number; maxLength?: number; pattern?: string; format?: string; } declare type UncheckedJSONSchemaType = (// these two unions allow arbitrary unions of types { anyOf: readonly UncheckedJSONSchemaType[]; } | { oneOf: readonly UncheckedJSONSchemaType[]; } | ({ type: readonly (T extends number ? JSONType<"number" | "integer", IsPartial> : T extends string ? JSONType<"string", IsPartial> : T extends boolean ? JSONType<"boolean", IsPartial> : never)[]; } & UnionToIntersection) | ((T extends number ? { type: JSONType<"number" | "integer", IsPartial>; } & NumberKeywords : T extends string ? { type: JSONType<"string", IsPartial>; } & StringKeywords : T extends boolean ? { type: JSONType<"boolean", IsPartial>; } : T extends readonly [any, ...any[]] ? { type: JSONType<"array", IsPartial>; items: { readonly [K in keyof T]-?: UncheckedJSONSchemaType & Nullable; } & { length: T["length"]; }; minItems: T["length"]; } & ({ maxItems: T["length"]; } | { additionalItems: false; }) : T extends readonly any[] ? { type: JSONType<"array", IsPartial>; items: UncheckedJSONSchemaType; contains?: UncheckedPartialSchema; minItems?: number; maxItems?: number; minContains?: number; maxContains?: number; uniqueItems?: true; additionalItems?: never; } : T extends Record ? { type: JSONType<"object", IsPartial>; additionalProperties?: boolean | UncheckedJSONSchemaType; unevaluatedProperties?: boolean | UncheckedJSONSchemaType; properties?: IsPartial extends true ? Partial> : UncheckedPropertiesSchema; patternProperties?: Record>; propertyNames?: Omit, "type"> & { type?: "string"; }; dependencies?: { [K in keyof T]?: Readonly<(keyof T)[]> | UncheckedPartialSchema; }; dependentRequired?: { [K in keyof T]?: Readonly<(keyof T)[]>; }; dependentSchemas?: { [K in keyof T]?: UncheckedPartialSchema; }; minProperties?: number; maxProperties?: number; } & (IsPartial extends true ? { required: Readonly<(keyof T)[]>; } : [UncheckedRequiredMembers] extends [never] ? { required?: Readonly[]>; } : { required: Readonly[]>; }) : T extends null ? { type: JSONType<"null", IsPartial>; nullable: true; } : never) & { allOf?: Readonly[]>; anyOf?: Readonly[]>; oneOf?: Readonly[]>; if?: UncheckedPartialSchema; then?: UncheckedPartialSchema; else?: UncheckedPartialSchema; not?: UncheckedPartialSchema; })) & { [keyword: string]: any; $id?: string; $ref?: string; $defs?: Record>; definitions?: Record>; }; export declare type JSONSchemaType = StrictNullChecksWrapper<"JSONSchemaType", UncheckedJSONSchemaType>; declare type Known = { [key: string]: Known; } | [Known, ...Known[]] | Known[] | number | string | boolean | null; declare type UncheckedPropertiesSchema = { [K in keyof T]-?: (UncheckedJSONSchemaType & Nullable) | { $ref: string; }; }; export declare type PropertiesSchema = StrictNullChecksWrapper<"PropertiesSchema", UncheckedPropertiesSchema>; declare type UncheckedRequiredMembers = { [K in keyof T]-?: undefined extends T[K] ? never : K; }[keyof T]; export declare type RequiredMembers = StrictNullChecksWrapper<"RequiredMembers", UncheckedRequiredMembers>; declare type Nullable = undefined extends T ? { nullable: true; const?: null; enum?: Readonly<(T | null)[]>; default?: T | null; } : { const?: T; enum?: Readonly; default?: T; }; export {};