import "reflect-metadata"; import { IDefinition } from "./types"; export declare const META_INJECT: unique symbol; export declare const META_PARAMETERS_INJECT: unique symbol; /** * Get a class constructor * @param {any} value */ export declare function getTarget(value: any): FunctionConstructor; /** * Check if a function or class has definition property * @param {Function} value Function or class to check */ export declare function hasDefinition(value: Function): boolean; export declare function emitTypes(): (target: any, method: string) => null; /** * Get default class definition * @param {Function} target */ export declare function getInitialDefinition(target: Function, context?: any): IDefinition; /** * Get decorated definition for a class or function */ export declare function getDefinition(value: any, context?: any): IDefinition; /** * set decorated definition for a class or function */ export declare function setDefinition(value: any, definition: Partial): IDefinition; export declare function extendDefinition(value: any, definition: Partial): IDefinition; export interface IPropertyInjectionOptions { lateBinding?: boolean; } /** * Injection for class or property * * @param service Service or services to inject * @param options Property injection options */ export declare function Inject(services: (Function | string)[]): ClassDecorator; export declare function Inject(service?: Function | string, options?: IPropertyInjectionOptions): any; export declare function Tag(...tags: string[]): (target: Function) => void; export declare function Service(definition?: Partial | string): (target: Function) => void;