/** * @fileoverview * * We rely on a few generic types that aren't included by default in TypeScript. */ /** * A primitive value. */ export declare type Scalar = undefined | null | boolean | number | string | Symbol; /** * A missing object. */ export declare type Nil = undefined | null; /** * A component of a path through objects/arrays. */ export declare type PathPart = number | string; /** * A JavaScript constructor. */ export interface Constructor { new (...args: any[]): TClass; prototype: TClass; } /** * A partial object, applied recursively. */ export declare type DeepPartial = { [Key in keyof TType]?: DeepPartial; }; /** * A readonly object, applied recursively. */ export declare type DeepReadonly = { readonly [Key in keyof TType]: DeepReadonly; }; /** * Represents a complex object that can contain values of a specific type, * that can be rooted within objects/arrays of arbitrary depth. */ export declare type NestedValue = TValue | NestedArray | NestedObject; export interface NestedArray extends Array> { } export interface NestedObject { [key: string]: NestedValue; } export declare type JsonScalar = null | boolean | number | string; export declare type JsonValue = NestedValue; export declare type JsonObject = NestedObject; export declare type JsonArray = NestedArray;