/** * Datadog Adapter * * Adapter for sending metrics, traces, and logs to Datadog. * * Automatically uses: * 1. **SDK** (dd-trace, hot-shots) when available * 2. **API Client** (from @plyaz/api) as fallback * 3. **Logger** for local debugging when neither is available * * @module base/observability */ import type { ObservabilityAdapterConfig, Metric, SpanOptions, Span, LogEntry, ObservabilityEvent, DatadogAdapterConfig, DatadogApiClient } from '@plyaz/types/observability'; import { BaseAdapter } from './BaseAdapter'; /** * Extended Datadog adapter configuration */ export interface DatadogAdapterConfigExtended extends DatadogAdapterConfig { /** * Datadog API client instance (from @plyaz/api). * Used as fallback when SDK packages are not available. */ apiClient?: DatadogApiClient; /** * DogStatsD host for metrics (when using SDK) * @default 'localhost' */ statsdHost?: string; /** * DogStatsD port for metrics (when using SDK) * @default 8125 */ statsdPort?: number; } /** * Datadog adapter for metrics, tracing, and logging. * * Automatically detects available integrations: * - Uses dd-trace/hot-shots SDK when installed * - Falls back to API client when SDK not available * - Uses logger for debugging when neither is available * * @example Basic usage * ```typescript * const datadog = new DatadogAdapter(); * await datadog.initialize({ * apiKey: process.env.DD_API_KEY, * site: 'datadoghq.com', * serviceName: 'my-service', * environment: 'production', * }); * ``` * * @example With API client fallback * ```typescript * import { createDatadogClient } from '@plyaz/api/datadog'; * * const datadog = new DatadogAdapter(); * await datadog.initialize({ * apiKey: process.env.DD_API_KEY, * apiClient: createDatadogClient({ ... }), * serviceName: 'my-service', * }); * ``` */ export declare class DatadogAdapter extends BaseAdapter { readonly provider: "datadog"; readonly name = "DatadogAdapter"; private datadogConfig; private apiClient?; private metricsClient; private tracer; protected doInitialize(config: ObservabilityAdapterConfig): Promise; private initializeSdk; protected doShutdown(): Promise; protected doHealthCheck(): Promise; protected doRecordMetric(metric: Metric): Promise; protected doStartSpan(options: SpanOptions): Span; private createStubSpan; protected doGetActiveSpan(): Span | null; protected doLog(entry: LogEntry): Promise; protected doSendEvent(event: ObservabilityEvent): Promise; protected doFlush(): Promise; } //# sourceMappingURL=DatadogAdapter.d.ts.map