import { Type } from '../common/cli-types'; import { ProviderToken } from './providers'; /** * Metadata that describes an argument of a constructor that is injectable */ export interface InjectableArgDefinition { /** * Position of the argument in constructor's call signature */ index: number; /** * Where the `@Inject()` decorator has been used it is the token provided into the decorator, else it is the argument's design type attained through reflection */ injectToken: ProviderToken; optional: boolean; } /** * Determines whether a constructor has metadata that allows dependencies to be injected into it * @param constructor constructor */ export declare function hasInjectableArgs(constructor: Type): boolean; /** * Returns a constructor's metadata that describes its' arguments for dependency injection * @param constructor constructor */ export declare function getInjectablesArgs(constructor: Type): InjectableArgDefinition[]; /** * Attains design metadata from the arguments of a constructor and attaches this metadata to the constructor, with sufficient details to allow dependencies to be * injected at a later stage * @param constructor constructor */ export declare function registerInjectablesArgs(constructor: Type): void;