import { DeflateOptions, InflateOptions } from './options'; import { Constructor } from './util'; /** Represents a generic type serializer */ interface TypeSerializer { /** * Serializer function * @param original Original value * @param options Options passed to `deflate` function * @returns Serialized value */ down?(original: TOriginal, options: DeflateOptions): TSerialized | Promise; /** * Deserializer function * @param serialized Serialized value * @param options Options passed to `inflate` function * @returns Original value */ up?(serialized: TSerialized, options: InflateOptions): TOriginal | Promise; /** * Type of serializable * @defaultValue * * For types: Type constructor function * * For properties: Value of `design:type` metadata for given property */ type?: Constructor; } declare namespace TypeSerializer { /** Compile type serializer partials to a final type serializer */ function compile(partials: Array>): TypeSerializer; } export default TypeSerializer;