import { ActivationContext } from "./ActivationContext"; export interface Descriptor { activate(context: ActivationContext): T; } export type ServiceMap = { [k in keyof S]: Descriptor; }; export type PartialServiceMap = { [k in keyof S]?: Descriptor; }; export interface Resolver { resolve, T extends ContainerServices[K] = ContainerServices[K]>(name: K, def?: T): T; } export type ContainerServices = S & { container: Resolver; }; export type ActivationType = "singleton" | "container" | "hierarchy" | "context" | "call";