import { ClassDefinition } from "./utility-types.js"; export declare abstract class Serializable> { constructor(data: TData); serialize(): TData; } export declare class Deserializer { private static readonly _typeCache; /** * @static */ private constructor(); static hasType(typeName: string): boolean; static registerType(type: SerializableClass, serializeInfo?: SerializableClassInfo): void; static deserialize(serialized: object): T; private static _getType; } export declare function serialize(target: SerializableClassGetter, context: ClassGetterDecoratorContext): void; export declare function serialize(target: SerializableClass, context: ClassDecoratorContext>): void; export declare function serialize(key: K extends "" ? never : K): UniversalSerializeDecorator; export type SerializableClass = ClassDefinition; export type SerializableClassGetter = (this: This) => T; export type SerializeClassDecorator = (target: SerializableClass, context: ClassDecoratorContext>) => void; export type SerializeGetterDecorator = (target: SerializableClassGetter, context: ClassGetterDecoratorContext) => void; interface SerializableClassInfo { className: string; prefix?: string; typeName: string; } type UniversalSerializeDecorator = (target: SerializableClass | SerializableClassGetter, context: ClassDecoratorContext> | ClassGetterDecoratorContext) => void; export {}; //# sourceMappingURL=serializable.d.ts.map