declare function getMetadata(target: any): any; declare function getOrCreateMetadata(target: any): any; declare function mixin(target: T, ...source: S[]): R; declare class NonNullMap implements Map { private readonly empty; constructor(empty: () => V); clear(): void; delete(key: K): boolean; forEach(callbackfn: (value: V, key: K, map: Map) => void, thisArg?: any): void; get(key: K): V | undefined; set(key: K, value: V): this; has(key: K): boolean; get size(): number; entries(): MapIterator<[K, V]>; keys(): MapIterator; values(): MapIterator; [Symbol.iterator](): MapIterator<[K, V]>; get [Symbol.toStringTag](): string; private readonly map; } interface ISerializer { (instance: any): object; } declare function jsonEncoderReplacer(_: string, v: any): any; declare const defaultSerializer: ISerializer; declare function Serializable(serializer?: ISerializer): (_: any, ctx: DecoratorContext) => void; declare const Serializer: MethodDecorator; declare function serialize(inst: T): R; declare const jsonEncodeDecoder: EncodeDecoder; declare function encode(value: Base, encodeDecoder?: EncodeDecoder): Trans; declare function decode(value: Trans, encodeDecoder?: EncodeDecoder): Base; interface EncodeDecoder { encode: (data: Base) => Trans; decode: (chunk: Trans) => Base; } type ConstructorOf = new (...args: Args) => T; type FloatLiteral = `${number}.${number}`; interface RawType extends RawJSON { valueOf(): T; } declare const IS_RAW_SYMBOL: unique symbol; declare const f64: (literal: FloatLiteral) => { [IS_RAW_SYMBOL]: boolean; rawJSON: string; valueOf(): number; }; declare function isRawJSON(v: any): boolean; export { NonNullMap, Serializable, Serializer, decode, defaultSerializer, encode, f64, getMetadata, getOrCreateMetadata, isRawJSON, jsonEncodeDecoder, jsonEncoderReplacer, mixin, serialize }; export type { ConstructorOf, EncodeDecoder, FloatLiteral, ISerializer, RawType };