import type { TypesMap } from "./TypesMap"; /** * Service container interface. */ export interface ServiceContainer { /** * Registers service or service factory function. * * @param key * @param service */ register(key: K, service: M[K] | ((locator: ServiceContainer) => M[K])): void; /** * Unregisters service. * * @param key */ unregister(key: K): void; /** * Resolves service by key. * * @param key */ resolve(key: K): M[K]; /** * Creates backup snapshot of service bindings and puts it into stack. */ backup(): void; /** * Restores previous backup from stack. */ restore(): void; /** * Creates child service container. */ createChild(): ServiceContainer; }