import { Id, ValueObject } from "../core/index.js"; type JsonPrimitive = string | number | boolean | null; export type DeepJsonResult = T extends Id ? string : T extends ValueObject ? U : T extends Date ? string : T extends Array ? DeepJsonResult[] : T extends { toJSON(): infer R } ? DeepJsonResult : T extends object ? { [K in keyof T]: DeepJsonResult } : T extends JsonPrimitive ? T : never; export type Primitive = string | number | boolean | Date | null | undefined; export type UnwrapArray = T extends Array ? U : never; export type IsArray = T extends Array ? true : false; export type NonUndefined = T extends undefined ? never : T;