/** * HTTP Client Factory - unified HTTP client management * * Why: Eliminates code duplication in HTTP client creation and management * Provides consistent client lifecycle, auth handling, and caching */ import { HttpClient } from './interceptors.js'; import type { MetricsCollector } from '../core/metrics.js'; import type { MetricsContextLabels } from '../core/metrics.js'; import type { Profile, AuthInterceptor } from '../types/profile.js'; import type { Logger } from '../core/logger.js'; export interface HttpClientConfig { profile: Profile; baseUrl: string; sessionToken?: string; authConfigs?: AuthInterceptor[]; metricsContext?: MetricsContextLabels; logger?: Logger; } /** * Factory for creating and managing HTTP clients * Handles both global and session-specific clients */ export declare class HttpClientFactory { private globalClient?; private sessionClients; private metrics; /** * Create global HTTP client (for stdio transport) */ createGlobalClient(config: HttpClientConfig): HttpClient; /** * Get or create session-specific HTTP client */ getOrCreateSessionClient(sessionId: string, config: HttpClientConfig): HttpClient; /** * Get global client (throws if not initialized) */ getGlobalClient(): HttpClient; /** * Get session client (throws if not exists) */ getSessionClient(sessionId: string): HttpClient; /** * Cleanup session client */ cleanupSessionClient(sessionId: string): boolean; /** * Check if global client exists */ hasGlobalClient(): boolean; /** * Check if session client exists */ hasSessionClient(sessionId: string): boolean; setMetricsCollector(metrics: MetricsCollector | null): void; /** * Get auth token for client creation */ private getAuthToken; /** * Create interceptor chain for client */ private createInterceptorChain; /** * Validate client configuration */ validateClientConfig(config: HttpClientConfig): void; } //# sourceMappingURL=http-client-factory.d.ts.map