import { IClient } from './clients'; import { IMetricsCollector } from './collectors'; import { IConsoleInterceptor, INetworkInterceptor } from './interceptors'; import { ITransport } from './transport'; import { LogStreamConfig } from './types'; import { IngestHttpRequestLog, LogContext, LogEntry, MetricSnapshot } from '@ologstream/types'; export declare abstract class BaseClient { protected logClient: IClient; protected metricClient: IClient; protected httpClient: IClient; protected flushTimer?: ReturnType; protected metricsTimer?: ReturnType; protected config: Required & { maxBufferSize: number; maxRetries: number; collectMetrics: boolean; metricsInterval: number; collectNetwork: boolean; }; protected context: LogContext; protected failureCount: number; protected isHealthy: boolean; protected metricsCollector: IMetricsCollector; protected networkInterceptor?: INetworkInterceptor; protected consoleInterceptor?: IConsoleInterceptor; protected transport: ITransport; constructor(platform: LogEntry['source'], config: LogStreamConfig, metricsCollector: IMetricsCollector, transport: ITransport, networkInterceptor?: INetworkInterceptor, consoleInterceptor?: IConsoleInterceptor, logClient?: IClient, metricClient?: IClient, httpClient?: IClient); protected abstract collectContext(): LogContext; protected startMetricsCollection(): void; capture(level: string, message: string, source: LogEntry['source'], metadata?: Record): void; protected startFlushTimer(): void; protected abstract setupGracefulShutdown(): void; flush(): void; captureHttpRequest(request: IngestHttpRequestLog): void; updateHttpRequestWithResponse(data: IngestHttpRequestLog): void; destroy(): void; getStats(): { logs: { bufferSize: number; isHealthy: boolean; failureCount: number; }; metrics: { bufferSize: number; isHealthy: boolean; failureCount: number; }; httpRequests: { bufferSize: number; isHealthy: boolean; failureCount: number; }; }; }