export type Constructor = new (...args: any[]) => T; export type AbstractConstructor = abstract new (...args: any[]) => T; export type ServiceIdentifier = string | symbol | Constructor | AbstractConstructor; export type Factory = (container: ContainerInterface) => T; export interface Binding { factory: Factory; singleton: boolean; instance?: T; } export interface ContainerInterface { bind(identifier: ServiceIdentifier, factory: Factory): void; singleton(identifier: ServiceIdentifier, factory: Factory): void; bindValue(identifier: ServiceIdentifier, value: T): void; make(identifier: ServiceIdentifier): T; has(identifier: ServiceIdentifier): boolean; flush(): void; } export interface ServiceProviderInterface { register(): void; boot(): Promise; } export interface ContextualBinding { target: ServiceIdentifier; dependency: ServiceIdentifier; implementation: ServiceIdentifier | Factory; } //# sourceMappingURL=types.d.ts.map