import { JSONSchema7, JSONSchema7Type } from 'json-schema'; import { Serial } from 'type-core'; interface Schema extends JSONSchema7 { type: Schema.TypeName; default?: Schema.Type; examples?: Schema.Type; enum?: Array>; const?: Schema.Type; format?: Schema.Format; } declare namespace Schema { type Format = 'date' | 'time' | 'date-time' | 'duration' | 'uri' | 'uri-reference' | 'uri-template' | 'email' | 'hostname' | 'ipv4' | 'ipv6' | 'regex' | 'uuid' | 'json-pointer' | 'relative-json-pointer' | 'iri' | 'iri-reference' | 'idn-email' | 'idn-hostname'; type Type = JSONSchema7Type & T; type TypeName = Type extends undefined ? 'null' | 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' : Type extends null ? 'null' : Type extends string ? 'string' : Type extends number ? 'number' | 'integer' : Type extends boolean ? 'boolean' : Type extends Array ? 'array' : Type extends { [key: string]: Serial; } ? 'object' : 'null' | 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object'; type NameType = T extends 'null' ? null : T extends 'string' ? string : T extends 'number' ? number : T extends 'integer' ? number : T extends 'boolean' ? boolean : T extends 'array' ? Array : T extends 'object' ? { [key: string]: Serial; } : never; } export { Schema };