export declare const Modifier: unique symbol; export declare const Hint: unique symbol; export declare const Kind: unique symbol; export declare const PatternBoolean = "(true|false)"; export declare const PatternNumber = "(0|[1-9][0-9]*)"; export declare const PatternString = "(.*)"; export declare const PatternBooleanExact: string; export declare const PatternNumberExact: string; export declare const PatternStringExact: string; export type TupleToIntersect = T extends [infer I] ? I : T extends [infer I, ...infer R] ? I & TupleToIntersect : never; export type TupleToUnion = { [K in keyof T]: T[K]; }[number]; export type UnionToIntersect = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never; export type UnionLast = UnionToIntersect 0 : never> extends (x: infer L) => 0 ? L : never; export type UnionToTuple> = [U] extends [never] ? [] : [...UnionToTuple>, L]; export type Assert = T extends E ? T : never; export type Evaluate = T extends infer O ? { [K in keyof O]: O[K]; } : never; export type Ensure = T extends infer U ? U : never; export type TModifier = TReadonlyOptional | TOptional | TReadonly; export type TReadonly = T & { [Modifier]: 'Readonly'; }; export type TOptional = T & { [Modifier]: 'Optional'; }; export type TReadonlyOptional = T & { [Modifier]: 'ReadonlyOptional'; }; export interface SchemaOptions { $schema?: string; /** Id for this schema */ $id?: string; /** Title of this schema */ title?: string; /** Description of this schema */ description?: string; /** Default value for this schema */ default?: any; /** Example values matching this schema */ examples?: any; [prop: string]: any; } export interface TKind { [Kind]: string; } export interface TSchema extends SchemaOptions, TKind { [Modifier]?: string; [Hint]?: string; params: unknown[]; static: unknown; } export type TAnySchema = TSchema | TAny | TArray | TBigInt | TBoolean | TConstructor | TDate | TEnum | TFunction | TInteger | TIntersect | TLiteral | TNot | TNull | TNumber | TObject | TPromise | TRecord | TRef | TString | TSymbol | TTemplateLiteral | TThis | TTuple | TUndefined | TUnion | TUint8Array | TUnknown | TVoid; export type TNumeric = TInteger | TNumber; export interface NumericOptions extends SchemaOptions { exclusiveMaximum?: N; exclusiveMinimum?: N; maximum?: N; minimum?: N; multipleOf?: N; } export interface TAny extends TSchema { [Kind]: 'Any'; static: any; } export interface ArrayOptions extends SchemaOptions { uniqueItems?: boolean; minItems?: number; maxItems?: number; } export interface TArray extends TSchema, ArrayOptions { [Kind]: 'Array'; static: Static[]; type: 'array'; items: T; } export interface TBigInt extends TSchema, NumericOptions { [Kind]: 'BigInt'; static: bigint; type: 'null'; typeOf: 'BigInt'; } export interface TBoolean extends TSchema { [Kind]: 'Boolean'; static: boolean; type: 'boolean'; } export type TConstructorParameters> = TTuple; export type TInstanceType> = T['returns']; export type TCompositeEvaluateArray = { [K in keyof T]: T[K] extends TSchema ? Static : never; }; export type TCompositeArray = { [K in keyof T]: T[K] extends TObject ? P : {}; }; export type TCompositeProperties = Evaluate : I extends object ? I : {}>; export interface TComposite extends TObject { [Hint]: 'Composite'; static: Evaluate>>; properties: TCompositeProperties>; } export type TConstructorParameterArray = [...{ [K in keyof T]: Static, P>; }]; export interface TConstructor extends TSchema { [Kind]: 'Constructor'; static: new (...param: TConstructorParameterArray) => Static; type: 'object'; instanceOf: 'Constructor'; parameters: T; returns: U; } export interface DateOptions extends SchemaOptions { exclusiveMaximumTimestamp?: number; exclusiveMinimumTimestamp?: number; maximumTimestamp?: number; minimumTimestamp?: number; } export interface TDate extends TSchema, DateOptions { [Kind]: 'Date'; static: Date; type: 'object'; instanceOf: 'Date'; } export interface TEnumOption { type: 'number' | 'string'; const: T; } export interface TEnum = Record> extends TSchema { [Kind]: 'Union'; static: T[keyof T]; anyOf: TLiteral[]; } export type TExtends = (Static extends Static ? T : U) extends infer O ? UnionToTuple extends [infer X, infer Y] ? TUnion<[Assert, Assert]> : Assert : never; export type TExcludeTemplateLiteralResult = TUnionResult; }[T]>, TSchema[]>>; export type TExcludeTemplateLiteral = Exclude, Static> extends infer S ? TExcludeTemplateLiteralResult> : never; export type TExcludeArray = Assert> extends Static ? never : T[K]; }[number]>, TSchema[]> extends infer R ? TUnionResult> : never; export type TExclude = T extends TTemplateLiteral ? TExcludeTemplateLiteral : T extends TUnion ? TExcludeArray : T extends U ? TNever : T; export type TExtractTemplateLiteralResult = TUnionResult; }[T]>, TSchema[]>>; export type TExtractTemplateLiteral = Extract, Static> extends infer S ? TExtractTemplateLiteralResult> : never; export type TExtractArray = Assert> extends Static ? T[K] : never; }[number]>, TSchema[]> extends infer R ? TUnionResult> : never; export type TExtract = T extends TTemplateLiteral ? TExtractTemplateLiteral : T extends TUnion ? TExtractArray : T extends U ? T : T; export type TFunctionParameters = [...{ [K in keyof T]: Static, P>; }]; export interface TFunction extends TSchema { [Kind]: 'Function'; static: (...param: TFunctionParameters) => Static; type: 'object'; instanceOf: 'Function'; parameters: T; returns: U; } export interface TInteger extends TSchema, NumericOptions { [Kind]: 'Integer'; static: number; type: 'integer'; } export type TUnevaluatedProperties = undefined | TSchema | boolean; export interface IntersectOptions extends SchemaOptions { unevaluatedProperties?: TUnevaluatedProperties; } export interface TIntersect extends TSchema, IntersectOptions { [Kind]: 'Intersect'; static: TupleToIntersect<{ [K in keyof T]: Static, this['params']>; }>; type?: 'object'; allOf: [...T]; } export type TKeyOfTuple = { [K in keyof Static]: TLiteral>; } extends infer U ? UnionToTuple> : never; export type TKeyOf = (T extends TRecursive ? TKeyOfTuple : T extends TComposite ? TKeyOfTuple : T extends TIntersect ? TKeyOfTuple : T extends TUnion ? TKeyOfTuple : T extends TObject ? TKeyOfTuple : T extends TRecord ? [K] : [ ]) extends infer R ? TUnionResult> : never; export type TLiteralValue = string | number | boolean; export interface TLiteral extends TSchema { [Kind]: 'Literal'; static: T; const: T; } export interface TNever extends TSchema { [Kind]: 'Never'; static: never; not: {}; } export interface TNot extends TSchema { [Kind]: 'Not'; static: Static; allOf: [{ not: Not; }, T]; } export interface TNull extends TSchema { [Kind]: 'Null'; static: null; type: 'null'; } export interface TNumber extends TSchema, NumericOptions { [Kind]: 'Number'; static: number; type: 'number'; } export type ReadonlyOptionalPropertyKeys = { [K in keyof T]: T[K] extends TReadonlyOptional ? K : never; }[keyof T]; export type ReadonlyPropertyKeys = { [K in keyof T]: T[K] extends TReadonly ? K : never; }[keyof T]; export type OptionalPropertyKeys = { [K in keyof T]: T[K] extends TOptional ? K : never; }[keyof T]; export type RequiredPropertyKeys = keyof Omit | ReadonlyPropertyKeys | OptionalPropertyKeys>; export type PropertiesReducer> = Evaluate<(Readonly>>> & Readonly>> & Partial>> & Required>>)>; export type PropertiesReduce = PropertiesReducer; }>; export type TProperties = Record; export type ObjectProperties = T extends TObject ? U : never; export type ObjectPropertyKeys = T extends TObject ? keyof U : never; export type TAdditionalProperties = undefined | TSchema | boolean; export interface ObjectOptions extends SchemaOptions { additionalProperties?: TAdditionalProperties; minProperties?: number; maxProperties?: number; } export interface TObject extends TSchema, ObjectOptions { [Kind]: 'Object'; static: PropertiesReduce; additionalProperties?: TAdditionalProperties; type: 'object'; properties: T; required?: string[]; } export type TOmitArray = Assert<{ [K2 in keyof T]: TOmit, K>; }, TSchema[]>; export type TOmitProperties = Evaluate, TProperties>>; export type TOmit = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; export type TParameters = TTuple; export type TPartialObjectArray = Assert<{ [K in keyof T]: TPartial>; }, TObject[]>; export type TPartialArray = Assert<{ [K in keyof T]: TPartial>; }, TSchema[]>; export type TPartialProperties = Evaluate ? TReadonlyOptional : T[K] extends TReadonly ? TReadonlyOptional : T[K] extends TOptional ? TOptional : TOptional; }, TProperties>>; export type TPartial = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; export type TPickArray = { [K2 in keyof T]: TPick, K>; }; export type TPickProperties = Pick, keyof T>> extends infer R ? ({ [K in keyof R]: Assert extends TSchema ? R[K] : never; }) : never; export type TPick = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; export interface TPromise extends TSchema { [Kind]: 'Promise'; static: Promise>; type: 'object'; instanceOf: 'Promise'; item: TSchema; } export type RecordTemplateLiteralObjectType = Ensure]: T; }>>>; export type RecordTemplateLiteralType = IsTemplateLiteralFinite extends true ? RecordTemplateLiteralObjectType : TRecord; export type RecordUnionLiteralType[]>, T extends TSchema> = Static extends string ? Ensure]: T; }>> : never; export type RecordLiteralType, T extends TSchema> = Ensure>; export type RecordNumberType = Ensure>; export type RecordStringType = Ensure>; export type RecordKey = TUnion[]> | TLiteral | TTemplateLiteral | TInteger | TNumber | TString; export interface TRecord extends TSchema { [Kind]: 'Record'; static: Record, Static>; type: 'object'; patternProperties: { [pattern: string]: T; }; additionalProperties: false; } export interface TThis extends TSchema { [Kind]: 'This'; static: this['params'][0]; $ref: string; } export type TRecursiveReduce = Static]>; export interface TRecursive extends TSchema { [Hint]: 'Recursive'; static: TRecursiveReduce; } export interface TRef extends TSchema { [Kind]: 'Ref'; static: Static; $ref: string; } export type TReturnType = T['returns']; export type TRequiredArray = Assert<{ [K in keyof T]: TRequired>; }, TSchema[]>; export type TRequiredProperties = Evaluate ? TReadonly : T[K] extends TReadonly ? TReadonly : T[K] extends TOptional ? U : T[K]; }, TProperties>>; export type TRequired = T extends TRecursive ? TRecursive> : T extends TComposite ? TComposite> : T extends TIntersect ? TIntersect> : T extends TUnion ? TUnion> : T extends TObject ? TObject> : T; export type StringFormatOption = 'date-time' | 'time' | 'date' | 'email' | 'idn-email' | 'hostname' | 'idn-hostname' | 'ipv4' | 'ipv6' | 'uri' | 'uri-reference' | 'iri' | 'uuid' | 'iri-reference' | 'uri-template' | 'json-pointer' | 'relative-json-pointer' | 'regex'; export interface StringOptions extends SchemaOptions { minLength?: number; maxLength?: number; pattern?: string; format?: Format; contentEncoding?: '7bit' | '8bit' | 'binary' | 'quoted-printable' | 'base64'; contentMediaType?: string; } export interface TString extends TSchema, StringOptions { [Kind]: 'String'; static: string; type: 'string'; } export type SymbolValue = string | number | undefined; export interface TSymbol extends TSchema, SchemaOptions { [Kind]: 'Symbol'; static: symbol; type: 'null'; typeOf: 'Symbol'; } export type IsTemplateLiteralFiniteCheck = T extends TTemplateLiteral ? IsTemplateLiteralFiniteArray> : T extends TUnion ? IsTemplateLiteralFiniteArray> : T extends TString ? false : T extends TBoolean ? false : T extends TNumber ? false : T extends TInteger ? false : T extends TBigInt ? false : T extends TLiteral ? true : false; export type IsTemplateLiteralFiniteArray = T extends [infer L, ...infer R] ? IsTemplateLiteralFiniteCheck extends false ? false : IsTemplateLiteralFiniteArray> : T extends [infer L] ? IsTemplateLiteralFiniteCheck extends false ? false : true : true; export type IsTemplateLiteralFinite = T extends TTemplateLiteral ? IsTemplateLiteralFiniteArray : false; export type TTemplateLiteralKind = TUnion | TLiteral | TInteger | TTemplateLiteral | TNumber | TBigInt | TString | TBoolean | TNever; export type TTemplateLiteralConst = T extends TUnion ? { [K in keyof U]: TTemplateLiteralUnion, Acc>; }[number] : T extends TTemplateLiteral ? `${Static}` : T extends TLiteral ? `${U}` : T extends TString ? `${string}` : T extends TNumber ? `${number}` : T extends TBigInt ? `${bigint}` : T extends TBoolean ? `${boolean}` : never; export type TTemplateLiteralUnion = T extends [infer L, ...infer R] ? `${TTemplateLiteralConst}${TTemplateLiteralUnion, Acc>}` : T extends [infer L] ? `${TTemplateLiteralConst}${Acc}` : Acc; export interface TTemplateLiteral extends TSchema { [Kind]: 'TemplateLiteral'; static: TTemplateLiteralUnion; type: 'string'; pattern: string; } export type TTupleIntoArray> = T extends TTuple ? Assert : never; export interface TTuple extends TSchema { [Kind]: 'Tuple'; static: { [K in keyof T]: T[K] extends TSchema ? Static : T[K]; }; type: 'array'; items?: T; additionalItems?: false; minItems: number; maxItems: number; } export interface TUndefined extends TSchema { [Kind]: 'Undefined'; static: undefined; type: 'null'; typeOf: 'Undefined'; } export type TUnionOfLiteralArray[]> = { [K in keyof T]: Assert['const']; }[number]; export type TUnionOfLiteral[]>> = TUnionOfLiteralArray; export type TUnionResult = T extends [] ? TNever : T extends [infer S] ? S : TUnion; export type TUnionTemplateLiteral> = Ensure; }[S]>, TLiteral[]>>>; export interface TUnion extends TSchema { [Kind]: 'Union'; static: { [K in keyof T]: T[K] extends TSchema ? Static : never; }[number]; anyOf: T; } export interface Uint8ArrayOptions extends SchemaOptions { maxByteLength?: number; minByteLength?: number; } export interface TUint8Array extends TSchema, Uint8ArrayOptions { [Kind]: 'Uint8Array'; static: Uint8Array; instanceOf: 'Uint8Array'; type: 'object'; } export interface TUnknown extends TSchema { [Kind]: 'Unknown'; static: unknown; } export interface UnsafeOptions extends SchemaOptions { [Kind]?: string; } export interface TUnsafe extends TSchema { [Kind]: string; static: T; } export interface TVoid extends TSchema { [Kind]: 'Void'; static: void; type: 'null'; typeOf: 'Void'; } /** Creates a TypeScript static type from a TypeBox type */ export type Static = (T & { params: P; })['static']; export type TypeRegistryValidationFunction = (schema: TSchema, value: unknown) => boolean; /** A registry for user defined types */ export declare namespace TypeRegistry { /** Returns the entries in this registry */ function Entries(): Map>; /** Clears all user defined types */ function Clear(): void; /** Returns true if this registry contains this kind */ function Has(kind: string): boolean; /** Sets a validation function for a user defined type */ function Set(kind: string, func: TypeRegistryValidationFunction): void; /** Gets a custom validation function for a user defined type */ function Get(kind: string): TypeRegistryValidationFunction | undefined; } export type FormatRegistryValidationFunction = (value: string) => boolean; /** A registry for user defined string formats */ export declare namespace FormatRegistry { /** Returns the entries in this registry */ function Entries(): Map; /** Clears all user defined string formats */ function Clear(): void; /** Returns true if the user defined string format exists */ function Has(format: string): boolean; /** Sets a validation function for a user defined string format */ function Set(format: string, func: FormatRegistryValidationFunction): void; /** Gets a validation function for a user defined string format */ function Get(format: string): FormatRegistryValidationFunction | undefined; } export declare class TypeGuardUnknownTypeError extends Error { readonly schema: unknown; constructor(schema: unknown); } /** Provides functions to test if JavaScript values are TypeBox types */ export declare namespace TypeGuard { /** Returns true if the given schema is TAny */ function TAny(schema: unknown): schema is TAny; /** Returns true if the given schema is TArray */ function TArray(schema: unknown): schema is TArray; /** Returns true if the given schema is TBigInt */ function TBigInt(schema: unknown): schema is TBigInt; /** Returns true if the given schema is TBoolean */ function TBoolean(schema: unknown): schema is TBoolean; /** Returns true if the given schema is TConstructor */ function TConstructor(schema: unknown): schema is TConstructor; /** Returns true if the given schema is TDate */ function TDate(schema: unknown): schema is TDate; /** Returns true if the given schema is TFunction */ function TFunction(schema: unknown): schema is TFunction; /** Returns true if the given schema is TInteger */ function TInteger(schema: unknown): schema is TInteger; /** Returns true if the given schema is TIntersect */ function TIntersect(schema: unknown): schema is TIntersect; /** Returns true if the given schema is TKind */ function TKind(schema: unknown): schema is Record; /** Returns true if the given schema is TLiteral */ function TLiteral(schema: unknown): schema is TLiteral; /** Returns true if the given schema is TNever */ function TNever(schema: unknown): schema is TNever; /** Returns true if the given schema is TNot */ function TNot(schema: unknown): schema is TNot; /** Returns true if the given schema is TNull */ function TNull(schema: unknown): schema is TNull; /** Returns true if the given schema is TNumber */ function TNumber(schema: unknown): schema is TNumber; /** Returns true if the given schema is TObject */ function TObject(schema: unknown): schema is TObject; /** Returns true if the given schema is TPromise */ function TPromise(schema: unknown): schema is TPromise; /** Returns true if the given schema is TRecord */ function TRecord(schema: unknown): schema is TRecord; /** Returns true if the given schema is TRef */ function TRef(schema: unknown): schema is TRef; /** Returns true if the given schema is TString */ function TString(schema: unknown): schema is TString; /** Returns true if the given schema is TSymbol */ function TSymbol(schema: unknown): schema is TSymbol; /** Returns true if the given schema is TTemplateLiteral */ function TTemplateLiteral(schema: unknown): schema is TTemplateLiteral; /** Returns true if the given schema is TThis */ function TThis(schema: unknown): schema is TThis; /** Returns true if the given schema is TTuple */ function TTuple(schema: unknown): schema is TTuple; /** Returns true if the given schema is TUndefined */ function TUndefined(schema: unknown): schema is TUndefined; /** Returns true if the given schema is TUnion */ function TUnion(schema: unknown): schema is TUnion; /** Returns true if the given schema is TUnion[]> */ function TUnionLiteral(schema: unknown): schema is TUnion[]>; /** Returns true if the given schema is TUint8Array */ function TUint8Array(schema: unknown): schema is TUint8Array; /** Returns true if the given schema is TUnknown */ function TUnknown(schema: unknown): schema is TUnknown; /** Returns true if the given schema is a raw TUnsafe */ function TUnsafe(schema: unknown): schema is TUnsafe; /** Returns true if the given schema is TVoid */ function TVoid(schema: unknown): schema is TVoid; /** Returns true if this schema has the ReadonlyOptional modifier */ function TReadonlyOptional(schema: T): schema is TReadonlyOptional; /** Returns true if this schema has the Readonly modifier */ function TReadonly(schema: T): schema is TReadonly; /** Returns true if this schema has the Optional modifier */ function TOptional(schema: T): schema is TOptional; /** Returns true if the given schema is TSchema */ function TSchema(schema: unknown): schema is TSchema; } /** Fast undefined check used for properties of type undefined */ export declare namespace ExtendsUndefined { function Check(schema: TSchema): boolean; } export declare enum TypeExtendsResult { Union = 0, True = 1, False = 2 } export declare namespace TypeExtends { function Extends(left: TSchema, right: TSchema): TypeExtendsResult; } /** Specialized Clone for Types */ export declare namespace TypeClone { /** Clones a type. */ function Clone(schema: T, options: SchemaOptions): T; } export declare namespace ObjectMap { function Map(schema: TSchema, callback: (object: TObject) => TObject, options: SchemaOptions): T; } export declare namespace KeyResolver { function Resolve(schema: T): string[]; } export declare namespace TemplateLiteralPattern { function Create(kinds: TTemplateLiteralKind[]): string; } export declare namespace TemplateLiteralResolver { function Resolve(template: TTemplateLiteral): TString | TUnion | TLiteral; } export declare class TemplateLiteralParserError extends Error { constructor(message: string); } export declare namespace TemplateLiteralParser { type Expression = And | Or | Const; type Const = { type: 'const'; const: string; }; type And = { type: 'and'; expr: Expression[]; }; type Or = { type: 'or'; expr: Expression[]; }; /** Parses a pattern and returns an expression tree */ function Parse(pattern: string): Expression; /** Parses a pattern and strips forward and trailing ^ and $ */ function ParseExact(pattern: string): Expression; } export declare namespace TemplateLiteralFinite { function Check(expression: TemplateLiteralParser.Expression): boolean; } export declare namespace TemplateLiteralGenerator { function Generate(expression: TemplateLiteralParser.Expression): IterableIterator; } export declare class TypeBuilder { /** `[Utility]` Creates a schema without `static` and `params` types */ protected Create(schema: Omit): T; /** `[Standard]` Omits compositing symbols from this schema */ Strict(schema: T): T; } export declare class StandardTypeBuilder extends TypeBuilder { /** `[Modifier]` Creates a Optional property */ Optional(schema: T): TOptional; /** `[Modifier]` Creates a ReadonlyOptional property */ ReadonlyOptional(schema: T): TReadonlyOptional; /** `[Modifier]` Creates a Readonly object or property */ Readonly(schema: T): TReadonly; /** `[Standard]` Creates an Any type */ Any(options?: SchemaOptions): TAny; /** `[Standard]` Creates an Array type */ Array(items: T, options?: ArrayOptions): TArray; /** `[Standard]` Creates a Boolean type */ Boolean(options?: SchemaOptions): TBoolean; /** `[Standard]` Creates a Composite object type. */ Composite(objects: [...T], options?: ObjectOptions): TComposite; /** `[Standard]` Creates a Enum type */ Enum>(item: T, options?: SchemaOptions): TEnum; /** `[Standard]` A conditional type expression that will return the true type if the left type extends the right */ Extends(left: L, right: R, trueType: T, falseType: U, options?: SchemaOptions): TExtends; /** `[Standard]` Excludes from the left type any type that is not assignable to the right */ Exclude(left: L, right: R, options?: SchemaOptions): TExclude; /** `[Standard]` Extracts from the left type any type that is assignable to the right */ Extract(left: L, right: R, options?: SchemaOptions): TExtract; /** `[Standard]` Creates an Integer type */ Integer(options?: NumericOptions): TInteger; /** `[Standard]` Creates a Intersect type */ Intersect(allOf: [], options?: SchemaOptions): TNever; /** `[Standard]` Creates a Intersect type */ Intersect(allOf: [...T], options?: SchemaOptions): T[0]; Intersect(allOf: [...T], options?: IntersectOptions): TIntersect; /** `[Standard]` Creates a KeyOf type */ KeyOf(schema: T, options?: SchemaOptions): TKeyOf; /** `[Standard]` Creates a Literal type */ Literal(value: T, options?: SchemaOptions): TLiteral; /** `[Standard]` Creates a Never type */ Never(options?: SchemaOptions): TNever; /** `[Standard]` Creates a Not type. The first argument is the disallowed type, the second is the allowed. */ Not(not: N, schema: T, options?: SchemaOptions): TNot; /** `[Standard]` Creates a Null type */ Null(options?: SchemaOptions): TNull; /** `[Standard]` Creates a Number type */ Number(options?: NumericOptions): TNumber; /** `[Standard]` Creates an Object type */ Object(properties: T, options?: ObjectOptions): TObject; /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ Omit)[]>(schema: T, keys: readonly [...K], options?: SchemaOptions): TOmit; /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ Omit[]>>(schema: T, keys: K, options?: SchemaOptions): TOmit>; /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ Omit>(schema: T, key: K, options?: SchemaOptions): TOmit; /** `[Standard]` Creates a mapped type whose keys are omitted from the given type */ Omit(schema: T, key: K, options?: SchemaOptions): TOmit; /** `[Standard]` Creates a mapped type where all properties are Optional */ Partial(schema: T, options?: ObjectOptions): TPartial; /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ Pick)[]>(schema: T, keys: readonly [...K], options?: SchemaOptions): TPick; /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ Pick[]>>(schema: T, keys: K, options?: SchemaOptions): TPick>; /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ Pick>(schema: T, key: K, options?: SchemaOptions): TPick; /** `[Standard]` Creates a mapped type whose keys are picked from the given type */ Pick(schema: T, key: K, options?: SchemaOptions): TPick; /** `[Standard]` Creates a Record type */ Record[]>, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): RecordUnionLiteralType; /** `[Standard]` Creates a Record type */ Record, T extends TSchema>(key: K, schema: T, options?: ObjectOptions): RecordLiteralType; /** `[Standard]` Creates a Record type */ Record(key: K, schema: T, options?: ObjectOptions): RecordTemplateLiteralType; /** `[Standard]` Creates a Record type */ Record(key: K, schema: T, options?: ObjectOptions): RecordNumberType; /** `[Standard]` Creates a Record type */ Record(key: K, schema: T, options?: ObjectOptions): RecordStringType; /** `[Standard]` Creates a Recursive type */ Recursive(callback: (thisType: TThis) => T, options?: SchemaOptions): TRecursive; /** `[Standard]` Creates a Ref type. The referenced type must contain a $id */ Ref(schema: T, options?: SchemaOptions): TRef; /** `[Standard]` Creates a mapped type where all properties are Required */ Required(schema: T, options?: SchemaOptions): TRequired; /** `[Standard]` Creates a String type */ String(options?: StringOptions): TString; /** `[Standard]` Creates a template literal type */ TemplateLiteral(kinds: [...T], options?: SchemaOptions): TTemplateLiteral; /** `[Standard]` Creates a Tuple type */ Tuple(items: [...T], options?: SchemaOptions): TTuple; /** `[Standard]` Creates a Union type */ Union(anyOf: [], options?: SchemaOptions): TNever; /** `[Standard]` Creates a Union type */ Union(anyOf: [...T], options?: SchemaOptions): T[0]; /** `[Standard]` Creates a Union type */ Union(anyOf: [...T], options?: SchemaOptions): TUnion; /** `[Experimental]` Remaps a TemplateLiteral into a Union representation. This function is known to cause TS compiler crashes for finite templates with large generation counts. Use with caution. */ Union(template: T): TUnionTemplateLiteral; /** `[Standard]` Creates an Unknown type */ Unknown(options?: SchemaOptions): TUnknown; /** `[Standard]` Creates a Unsafe type that infers for the generic argument */ Unsafe(options?: UnsafeOptions): TUnsafe; } export declare class ExtendedTypeBuilder extends StandardTypeBuilder { /** `[Extended]` Creates a BigInt type */ BigInt(options?: NumericOptions): TBigInt; /** `[Extended]` Extracts the ConstructorParameters from the given Constructor type */ ConstructorParameters>(schema: T, options?: SchemaOptions): TConstructorParameters; /** `[Extended]` Creates a Constructor type */ Constructor, U extends TSchema>(parameters: T, returns: U, options?: SchemaOptions): TConstructor, U>; /** `[Extended]` Creates a Constructor type */ Constructor(parameters: [...T], returns: U, options?: SchemaOptions): TConstructor; /** `[Extended]` Creates a Date type */ Date(options?: DateOptions): TDate; /** `[Extended]` Creates a Function type */ Function, U extends TSchema>(parameters: T, returns: U, options?: SchemaOptions): TFunction, U>; /** `[Extended]` Creates a Function type */ Function(parameters: [...T], returns: U, options?: SchemaOptions): TFunction; /** `[Extended]` Extracts the InstanceType from the given Constructor */ InstanceType>(schema: T, options?: SchemaOptions): TInstanceType; /** `[Extended]` Extracts the Parameters from the given Function type */ Parameters>(schema: T, options?: SchemaOptions): TParameters; /** `[Extended]` Creates a Promise type */ Promise(item: T, options?: SchemaOptions): TPromise; /** `[Extended]` Creates a regular expression type */ RegEx(regex: RegExp, options?: SchemaOptions): TString; /** `[Extended]` Extracts the ReturnType from the given Function */ ReturnType>(schema: T, options?: SchemaOptions): TReturnType; /** `[Extended]` Creates a Symbol type */ Symbol(options?: SchemaOptions): TSymbol; /** `[Extended]` Creates a Undefined type */ Undefined(options?: SchemaOptions): TUndefined; /** `[Extended]` Creates a Uint8Array type */ Uint8Array(options?: Uint8ArrayOptions): TUint8Array; /** `[Extended]` Creates a Void type */ Void(options?: SchemaOptions): TVoid; } /** JSON Schema TypeBuilder with Static Resolution for TypeScript */ export declare const StandardType: StandardTypeBuilder; /** JSON Schema TypeBuilder with Static Resolution for TypeScript */ export declare const Type: ExtendedTypeBuilder;