/** * Base Observability Adapter * * Abstract base class for all observability adapters. * Provides common functionality and enforces the adapter interface. * * @module base/observability */ import { PackageLogger } from '@plyaz/logger'; import type { ObservabilityAdapter, ObservabilityAdapterConfig, ObservabilityProvider, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent } from '@plyaz/types/observability'; /** * Abstract base class for observability adapters. * * Provides common functionality: * - Initialization lifecycle * - Default tag management * - Error handling * - Logging * * Subclasses must implement provider-specific methods. */ export declare abstract class BaseAdapter implements ObservabilityAdapter { abstract readonly provider: ObservabilityProvider; abstract readonly name: string; protected _isInitialized: boolean; protected _config: ObservabilityAdapterConfig | null; protected readonly logger: PackageLogger; constructor(); get isInitialized(): boolean; get config(): ObservabilityAdapterConfig | null; initialize(config: ObservabilityAdapterConfig): Promise; shutdown(): Promise; isHealthy(): Promise; protected abstract doInitialize(config: ObservabilityAdapterConfig): Promise; protected abstract doShutdown(): Promise; protected abstract doHealthCheck(): Promise; recordMetric(metric: Metric): Promise; incrementCounter(name: string, value?: number, tags?: Record): Promise; setGauge(name: string, value: number, tags?: Record): Promise; recordHistogram(name: string, value: number, tags?: Record): Promise; protected abstract doRecordMetric(metric: Metric): Promise; startSpan(options: SpanOptions): Span; getActiveSpan(): Span | null; withSpan(options: SpanOptions, fn: (span: Span) => Promise): Promise; protected abstract doStartSpan(options: SpanOptions): Span; protected abstract doGetActiveSpan(): Span | null; log(entry: LogEntry): Promise; protected abstract doLog(entry: LogEntry): Promise; sendEvent(event: ObservabilityEvent): Promise; protected abstract doSendEvent(event: ObservabilityEvent): Promise; flush(): Promise; protected abstract doFlush(): Promise; /** * Apply default tags to a metric */ protected applyDefaultTags(metric: Metric): Metric; /** * Create a no-op span (for disabled/sampled-out traces) */ protected createNoopSpan(_options: SpanOptions): Span; } /** * No-op adapter that does nothing. * Use when observability is disabled. */ export declare class NoopAdapter extends BaseAdapter { readonly provider: "noop"; readonly name = "NoopAdapter"; protected doInitialize(): Promise; protected doShutdown(): Promise; protected doHealthCheck(): Promise; protected doRecordMetric(): Promise; protected doStartSpan(options: SpanOptions): Span; protected doGetActiveSpan(): Span | null; protected doLog(): Promise; protected doSendEvent(): Promise; protected doFlush(): Promise; } //# sourceMappingURL=BaseAdapter.d.ts.map