/** * OpenTelemetry Instrumentation Module * * Handles SDK initialization, provider setup, exporter configuration, * and graceful shutdown for Wave's OpenTelemetry integration. */ import type { TelemetryConfig } from "../types/telemetry.js"; import type { SpanExporter, ReadableSpan } from "@opentelemetry/sdk-trace-node"; import type { LogRecordExporter, ReadableLogRecord } from "@opentelemetry/sdk-logs"; /** * Resolve the full TelemetryConfig from env vars + settings.json. * Env vars take precedence over settings.json. */ export declare function resolveTelemetryConfig(settingsConfig?: Partial): TelemetryConfig; /** * JSONL Span Exporter — writes span data as JSON lines to a file. */ declare class JsonlSpanExporter implements SpanExporter { private filePath; constructor(filePath?: string); export(spans: ReadableSpan[], resultCallback: (result: { code: number; }) => void): void; shutdown(): Promise; forceFlush(): Promise; } /** * JSONL Log Exporter — writes log records as JSON lines to a file. */ declare class JsonlLogExporter implements LogRecordExporter { private filePath; constructor(filePath?: string); export(logs: ReadableLogRecord[], resultCallback: (result: { code: number; }) => void): void; shutdown(): Promise; forceFlush(): Promise; } /** * Initialize OpenTelemetry SDK with providers and exporters. * Idempotent — safe to call multiple times. * * @param config - Optional TelemetryConfig. If not provided, resolved from env vars. */ export declare function initializeTelemetry(config?: Partial): Promise; /** * Shut down OpenTelemetry, flushing all pending data. * Respects shutdownTimeoutMs config. */ export declare function shutdownTelemetry(): Promise; /** * Get the OTEL API module (for creating tracers, meters, etc.). * Returns undefined if telemetry is not initialized. */ export declare function getOTELApi(): typeof import("@opentelemetry/api") | undefined; /** * Get the current resolved config. */ export declare function getCurrentConfig(): TelemetryConfig | undefined; /** * Check if telemetry is initialized. */ export declare function isInitialized(): boolean; export { JsonlSpanExporter, JsonlLogExporter }; /** * Get telemetry attributes for the current session. * * Priority: * 1. SSO authenticated → server-provided user.id + user.email * 2. Not authenticated → persistent anonymous ID from ~/.wave/config.json */ export declare function getTelemetryAttributes(): Record;