export type BeanToken = string | (new (...args: any[]) => T); export interface BeanOptions { /** Tokens supplied to the factory method, in argument order. */ dependencies?: readonly BeanToken[]; } export interface BeanDefinition { token: BeanToken; methodName: string | symbol; dependencies: readonly BeanToken[]; } /** Marks a class as an explicit source of application bean factories. */ export declare function Configuration(): object>(ctor: T) => T; /** * Declares a configuration method as a bean factory. When no token is given, * the method name is used. Dependencies are deliberately explicit and never * inferred from emitted decorator metadata. */ export declare function Bean(token?: BeanToken, options?: BeanOptions): MethodDecorator; export declare function Bean(options?: BeanOptions): MethodDecorator; export declare function getBeanDefinitions(target: Function): readonly BeanDefinition[];