import { Constructor, staticImplements } from '../utils' import { deserializeWith } from './impl' import { Deserialize, Deserializer } from './interface' export function deserialize(constructor: C) { @staticImplements>() class Deserializable extends constructor { static name = constructor.name static deserialize(deserializer: D): T { return deserializeWith(deserializer, this, (this as any)[Symbol.metadata].serde) } } return Deserializable }