import { Definition } from "./Definition"; import { Container } from "./Container"; export type DefinitionPredicate = (service: Definition) => boolean; export type ServiceFactory = (...args: any[]) => any; export type AnnotationPredicate = (annotation: any) => boolean; export type ServiceName = string | symbol; export declare namespace ServiceName { function is(value: any): value is ServiceName; } export declare const onMiddlewareAttach: unique symbol; export interface Middleware { (this: Container, definition: Definition, next: (service: any) => any | Promise): any | Promise; [onMiddlewareAttach]?: (container: Container) => void; }