import { interfaces } from 'inversify' ; export interface Newable < T > { new ( ... args ) : T ; } export interface Abstract < T > { prototype : T ; } export type ClassType < T > = { new ( ... args ) : T ; } ; export const IServiceManager = Symbol ( 'IServiceManager' ) ; export interface IServiceManager { add < T > ( serviceIdentifier , constructor , name ? ) : void ; addSingleton < T > ( serviceIdentifier , constructor , name ? ) : void ; addSingletonInstance < T > ( serviceIdentifier , instance , name ? ) : void ; addFactory < T > ( factoryIdentifier , factoryMethod ) : void ; get < T > ( serviceIdentifier , name ? ) : T ; getAll < T > ( serviceIdentifier , name ? ) : T [ ] ; } export const IServiceContainer = Symbol ( 'IServiceContainer' ) ; export interface IServiceContainer { get < T > ( serviceIdentifier , name ? ) : T ; getAll < T > ( serviceIdentifier , name ? ) : T [ ] ; }