/** * Dependency Injection Container - Manages module dependencies and lifecycle * * This module provides a simple dependency injection system for MCP modules */ import { Logger } from "./types.js"; export interface ServiceDefinition { name: string; factory: (container: DIContainer) => T; singleton?: boolean; dependencies?: string[]; } export interface ServiceInstance { instance?: T; definition: ServiceDefinition; initialized: boolean; } export declare class DIContainer { private services; private logger; constructor(logger: Logger); /** * Register a service definition */ register(definition: ServiceDefinition): void; /** * Register multiple services */ registerServices(definitions: ServiceDefinition[]): void; /** * Get a service instance */ get(name: string): T; /** * Check if a service is registered */ has(name: string): boolean; /** * Get all registered service names */ getServiceNames(): string[]; /** * Create a service instance with dependency resolution */ private createInstance; /** * Clear all services (useful for testing) */ clear(): void; /** * Get service statistics */ getStats(): { totalServices: number; initializedServices: number; singletonServices: number; }; } /** * Service factory for common MCP services */ export declare class MCPServiceFactory { /** * Create default MCP services */ static createDefaultServices(logger: Logger): ServiceDefinition[]; /** * Create custom service definition */ static createService(name: string, factory: (container: DIContainer) => T, options?: { singleton?: boolean; dependencies?: string[]; }): ServiceDefinition; } /** * Service locator pattern implementation */ export declare class ServiceLocator { private static container; /** * Initialize the service locator with a container */ static initialize(container: DIContainer): void; /** * Get a service from the global container */ static get(name: string): T; /** * Check if a service exists */ static has(name: string): boolean; /** * Clear the global container */ static clear(): void; } //# sourceMappingURL=dependency-injection.d.ts.map