import { IEntity } from "../entity.spec" ; import { TObjectProto } from "../_.spec" ; import { ISerialFormat } from "./serial-format.spec" ; export type TCustomDeserializer = ( data : unknown ) => Object ; export type TDeserializer = ( constructorName : string , data : unknown ) => Object ; export type TEntity = { [ componentName ] : unknown ; } ; export type TSerDeOptions < T > = { fallbackHandler ? : T ; useDefaultHandler ? : boolean ; useRegisteredHandlers ? : boolean ; } ; export type TSerializable = unknown ; export type TSerializer = ( component : unknown ) => TSerializable ; export interface ISerDeDataSet { entities : IterableIterator < IEntity > ; } export interface ISerDeOperations { deserializer : TCustomDeserializer ; serializer : TSerializer ; } export interface ISerDe { param data param options deserialize ( data , options ? ) : ISerDeDataSet ; /**
     * Get an overview over all registered type handlers; useful for debugging
     */ getRegisteredTypeHandlers ( ) : IterableIterator < [ string , ISerDeOperations ] > ; param Type param deserializer param serializer registerTypeHandler ( Type , deserializer , serializer ) : void ; param data param options serialize ( data , options ? ) : ISerialFormat ; } export const CTagMarker = '#Tags' ;