export interface Serializer { deserialize(message: Msg): Input; serialize(input: Input): Msg; } export interface SerializerImplementation { deserialize(message: Msg, defaultDeserialize: ((msg: Msg) => Input)): Input; serialize(input: Input, defaultSerialize: ((inp: Input) => Msg)): Msg; } export declare function extendSerializer(extend: Serializer, implementation: SerializerImplementation): Serializer; declare type JsonSerializablePrimitive = string | number | boolean | null; declare type JsonSerializableObject = { [key: string]: JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[] | undefined; }; export declare type JsonSerializable = JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[]; export declare const DefaultSerializer: Serializer; export {};