import { TypeAnnotation } from './transformer' ; import { MinimisedTree , ReferentialEqualityAnnotations } from './plainer' ; export type Class = { new ( ... args ) : any ; } ; export type PrimitveJSONValue = string | number | boolean | undefined | null ; export type JSONValue = PrimitveJSONValue | JSONArray | JSONObject ; export interface JSONArray extends Array < JSONValue > { } export interface JSONObject { [ key ] : JSONValue ; } type ClassInstance = any ; export type SerializableJSONValue = Symbol | Set < SuperJSONValue > | Map < SuperJSONValue , SuperJSONValue > | undefined | bigint | Date | ClassInstance | RegExp ; export type SuperJSONValue = JSONValue | SerializableJSONValue | SuperJSONArray | SuperJSONObject ; export interface SuperJSONArray extends Array < SuperJSONValue > { } export interface SuperJSONObject { [ key ] : SuperJSONValue ; } export interface SuperJSONResult { json : JSONValue ; meta ? : { values ? : MinimisedTree < TypeAnnotation > ; referentialEqualities ? : ReferentialEqualityAnnotations ; } ; }