import { Moment } from "moment"; type Simplify = string | T extends string ? string : T extends number ? number : T extends boolean ? boolean : T extends Moment ? string : T extends Array ? Array> : T extends (infer K)[] ? Simplify[] : T extends Object ? Serializable : any; export type Serializable = { [K in keyof T]: Simplify } export type Transformer = { transform(subject: TFrom): TResult; reverseTransform(subject: TResult): TFrom; } export type SerializationTransformer> = Transformer