import type { InstrumentationBase } from '@opentelemetry/instrumentation'; import type { SpanProcessor } from '@opentelemetry/sdk-trace-web'; import type { Context, SpanStatusCode, Span } from '@opentelemetry/api'; import type { AllMessages, EventType, EventPayload, CloudEvent } from '../types'; import type { TraceStep } from './trace-step'; export type { Context, SpanStatusCode, Span }; export type { AllMessages, EventType, EventPayload, TraceStep, CloudEvent }; export type OtelClientSpan = { end: () => void; setAttribute: [0]>(key: K, value: EventPayload[0][K]) => void; parentCtx: Context | undefined; setStatus: (code: SpanStatusCode, message?: string) => void; }; export type OtelClientStepSpan = { end: () => void; setAttribute: [0]>(key: K, value: EventPayload[0][K]) => void; context: Context; setStatus: (code: SpanStatusCode, message?: string) => void; recordException: (error: Error) => void; }; export type OtelClientConfig = { serviceVersion: string; version: string; isProd: boolean; collectorUrl?: string; serviceName: string; tracerName: string; instrumentations?: InstrumentationBase[]; spanProcessors?: SpanProcessor[]; collectorTraceUrl?: string; disabled?: boolean; delayMillis?: number; };