import { Factory, Initializer, Destructor, FactoryResolver } from './factory'; import { Injection } from './injection'; import { SpecifierResolver } from './specifier'; import { Dict } from './dict'; export default class FactoryRegistry implements FactoryResolver { private _specifierResolver; private _factories; private _initializers; private _destructors; private _constructorArguments; private _initializerArguments; private _destructorArguments; constructor(specifierResolver: SpecifierResolver); registerFactory(specifier: Specifier, factory: Factory): void; unregisterFactory(specifier: Specifier): void; factoryFor(specifier: Specifier): Factory; registerInitializer(specifier: Specifier, initializer: Initializer): void; unregisterInitializer(specifier: Specifier, name: string): void; unregisterInitializers(specifier: Specifier): void; initializersFor(specifier: Specifier): Initializer[]; registerDestructor(specifier: Specifier, destructor: Destructor): void; unregisterDestructor(specifier: Specifier, name: string): void; unregisterDestructors(specifier: Specifier): void; destructorsFor(specifier: Specifier): Destructor[]; registerConstructorArguments(specifier: Specifier, args: Injection[]): void; unregisterConstructorArguments(specifier: Specifier): void; constructorArgumentsFor(specifier: Specifier): Injection[]; registerInitializerArguments(specifier: Specifier, name: string, args: Injection[]): void; unregisterInitializerArguments(specifier: Specifier, name?: string): void; initializerArgumentsFor(specifier: Specifier, name: string): Injection[]; registerDestructorArguments(specifier: Specifier, name: string, args: Injection[]): void; unregisterDestructorArguments(specifier: Specifier, name?: string): void; destructorArgumentsFor(specifier: Specifier, name: string): Injection[]; retrieveFactory(specifier: Specifier): Factory; retrieveInitializers(specifier: Specifier): Dict>; retrieveDestructors(specifier: Specifier): Dict>; retrieveConstructorArguments(specifier: Specifier): Injection[]; retrieveInitializerArguments(specifier: Specifier, name: string): Injection[]; retrieveDestructorArguments(specifier: Specifier, name: string): Injection[]; }