import { Token } from '../di'; import { Renderable } from '../dom'; import { RenderableConstructorArg } from '../common'; import { SerializerContainer, BaseSerializerArg } from './SerializerContainer'; import { ConfiguredSerializer } from './ConfiguredSerializer'; export declare const SERIALIZER_CONFIG: Token; export interface SerializerConfig { exclude?: string[]; always?: { [key: string]: any; }; } export interface Serialized { name: string; serializer?: SerializedSerializerConfig; } export interface SerializedSerializerConfig extends Serialized, SerializerConfig { } export declare abstract class Serializer { protected container: SerializerContainer; protected config: SerializerConfig | null; abstract serialize(node: R): S; abstract deserialize(serialized: S): RenderableConstructorArg; postDeserialized(serialized: S, node: RenderableConstructorArg): RenderableConstructorArg; postSerialized(node: R, serialized: S): S; getConfig(): SerializerConfig | null; exclude(node: R): boolean; static resolve(serializer: BaseSerializerArg): { config: SerializerConfig | null; type: typeof Serializer; }; static resolveAndSerialize(serializer: BaseSerializerArg): SerializedSerializerConfig; static configure(config: any): ConfiguredSerializer; static register(container: SerializerContainer): void; }