import { Maybe, StringOrSymbol, StringToAny } from './types'; import { ComponentScope } from '../enums'; import { ComponentIdentity } from '../utils/componentidentity'; export interface IContainerConfig { envFilterName?: string; defaultScope?: ComponentScope; componentDirs?: string[]; } export interface IfComponentDetails { identity: ComponentIdentity; scope: ComponentScope; propDependencies: Array; constructorDependencies: Array; extraDependencies: Array; provides?: Array; postConstruct?: string; preDestroy?: string; componentMetaData?: StringToAny; } export interface IComponentStorage { getComponent(id: ComponentIdentity): Maybe; setComponent(id: ComponentIdentity, component: any): void; } export interface IScopedComponentStorage extends IComponentStorage { scope: ComponentScope; } export declare type IocComponentGetter = (scopedComponentStorage?: Array) => T; export declare type ComponentGetterFactory = (container: IfIocContainer) => IocComponentGetter; export declare type LifecycleCallback = () => Promise; export interface IfComponentFactoryMethod { methodName: string; providesComponent: ComponentIdentity; } export interface IfConstructorDependency { parameterIndex: number; dependency: ComponentIdentity; } export interface IfComponentPropDependency { propertyName: StringOrSymbol; dependency: ComponentIdentity; } export interface IfIocComponent extends IfComponentDetails { get: IocComponentGetter; } export interface IfIocContainer { has(name: ComponentIdentity): boolean; getComponentDetails(id: ComponentIdentity): IfIocComponent; getComponent(id: ComponentIdentity, scopedStorage?: Array): any; addComponent(component: IfIocComponent): boolean; defaultScope: ComponentScope; readonly components: Array; initialize(components?: Array): Promise>; cleanup(): Promise; }