import 'reflect-metadata'; import { Class } from './class.type'; export type MetaValue = MetaType | undefined; type ClassDecoratorDataFunc = (data: Data) => ClassDecorator; export declare const classMetadataDecorator: (key: string) => ClassDecoratorDataFunc; export declare function getClassMetadata(DTOClass: Class, key: string, includeParents: boolean): MetaValue; declare abstract class Reflector { readonly metaKey: string; constructor(metaKey: string); protected getMetadata(target: Function, includeParents: boolean): MetaValue; protected defineMetadata(data: Data, target: Function): void; } export declare class ValueReflector extends Reflector { set(DTOClass: Class, data: Data): void; get(DTOClass: Class, includeParents?: boolean): MetaValue; isDefined(DTOClass: Class): boolean; memoize(DTOClass: Class, fn: () => Data): Data; } export declare class ArrayReflector extends Reflector { append(DTOClass: Class, data: Data): void; get(DTOClass: Class, includeParents?: boolean): MetaValue; } export declare class MapReflector extends Reflector { set(DTOClass: Class, key: K, value: Data): void; get(DTOClass: Class, includeParents?: boolean): MetaValue>; get(DTOClass: Class, key: K, includeParents?: boolean): MetaValue; getValues(DTOClass: Class, includeParents?: boolean): MetaValue; has(DTOClass: Class, key: K): boolean; memoize(DTOClass: Class, key: K, fn: () => Data): Data; } export {};