import 'reflect-metadata'; import { Json } from './Json'; import { IJsonSerializer, jsonSerializer } from './IJsonSerializer'; import { IJsonSerializable } from './Json'; export interface JsonSerializableConstructor { fromJSON(json: Json): T; } /** * A base type to use for objects that can then be serialized to/from json using decorators */ export declare abstract class JsonSerializable implements IJsonSerializable { static fromJSON(json: Json): T; toJSON(_key?: string | number): Json; } /** * A default implementation of IJsonSerializer */ export declare class DefaultSerializer implements IJsonSerializer { readonly [jsonSerializer] = true; private readonly _jsonSerializableConstructor; constructor(jsonSerializableConstructor?: JsonSerializableConstructor); serialize(object: unknown): Json; deserialize(json: Json): any; } export declare function jsonProperty(name?: string, serializer?: IJsonSerializer | JsonSerializableConstructor): PropertyDecorator; export declare function jsonProperty(serializer?: IJsonSerializer | JsonSerializableConstructor): PropertyDecorator; export declare function jsonParameter(name?: string, serializer?: IJsonSerializer | JsonSerializableConstructor): ParameterDecorator;