/** Context for open telemetry span. */ export type OpenTelemetrySpanContext = { traceId: string; spanId: string; }; /** Public API contract for open telemetry span. */ export type OpenTelemetrySpan = { setAttribute(key: string, value: ServiceTracerAttributePrimitive | readonly ServiceTracerAttributePrimitive[]): unknown; setAttributes(attributes: Record): unknown; setStatus(status: { code: number; }): unknown; recordException(error: unknown): unknown; end(): unknown; spanContext(): OpenTelemetrySpanContext; }; /** Public API contract for open telemetry tracer. */ export type OpenTelemetryTracer = { startSpan(name: string, options: TSpanOptions | undefined, context: TContext): TSpan; startActiveSpan(name: string, fn: (span: TSpan) => T): T; }; /** Public API contract for open telemetry trace API. */ export type OpenTelemetryTraceApi = { getTracer(serviceName: string): OpenTelemetryTracer; getSpan(context: TContext): TSpan | undefined; setSpan(context: TContext, span: TSpan): TContext; }; /** Public API contract for open telemetry context API. */ export type OpenTelemetryContextApi = { active(): TContext; with(context: TContext, fn: () => T): T; }; /** Input payload for service tracer attribute. */ export type ServiceTracerAttributeInput = string | number | boolean | null | undefined | object; export type ServiceTracerAttributePrimitive = string | number | boolean; /** Public API contract for service tracer attribute value. */ export type ServiceTracerAttributeValue = ServiceTracerAttributePrimitive | readonly ServiceTracerAttributePrimitive[] | null | undefined; /** Public API contract for service tracer attributes. */ export type ServiceTracerAttributes = Record; /** Context for service tracer span. */ export type ServiceTracerSpanContext = { toTraceId(): string; toSpanId(): string; }; /** Public API contract for service tracer span. */ export type ServiceTracerSpan = { setTag(key: string, value: ServiceTracerAttributeInput): TSpan; setAttributes(attributes: Record): TSpan; finish(): void; withContext(fn: () => T): T; context(): ServiceTracerSpanContext | undefined; readonly otelSpan: TSpan; readonly otelContext: TContext; }; /** Options accepted by service tracer start span. */ export type ServiceTracerStartSpanOptions = TSpanOptions & { childOf?: ServiceTracerSpan; }; /** Public API contract for service tracer. */ export type ServiceTracer = { init(): void; startSpan(name: string, options?: ServiceTracerStartSpanOptions): ServiceTracerSpan; scope(): { active(): ServiceTracerSpan | null; }; wrap(name: string, fn: (...args: TArgs) => TResult): (...args: TArgs) => TResult; trace(name: string, fn: () => Promise): Promise; trace(name: string, fn: () => T): T; }; /** Options accepted by create open telemetry service tracer. */ export type CreateOpenTelemetryServiceTracerOptions = { serviceName: string; context: OpenTelemetryContextApi; trace: OpenTelemetryTraceApi; errorStatusCode: number; }; /** Public API contract for open telemetry service tracer. */ export type OpenTelemetryServiceTracer = { tracer: ServiceTracer; setActiveSpanAttributes(attributes: ServiceTracerAttributes): void; getTraceContext(): { traceId?: string; spanId?: string; }; }; /** Create open telemetry service tracer. */ export declare function createOpenTelemetryServiceTracer(options: CreateOpenTelemetryServiceTracerOptions): OpenTelemetryServiceTracer; //# sourceMappingURL=service-tracer.d.ts.map