import { Interceptor } from '@connectrpc/connect'; import { b as OtelClientInterceptorOptions } from './types-Db5ZtQHb.js'; /** * ConnectRPC OpenTelemetry client interceptor * * Creates a ConnectRPC interceptor that instruments outgoing RPC calls with * OpenTelemetry tracing and metrics following semantic conventions. * * Key differences from the server interceptor: * - Uses `propagation.inject()` to propagate trace context to outgoing requests * - Uses `SpanKind.CLIENT` instead of `SpanKind.SERVER` * - Uses `rpc.client.*` metrics instead of `rpc.server.*` * - `serverAddress` is REQUIRED (target server, not local hostname) * - No `trustRemote` option (client always creates spans in active context) * * @see https://opentelemetry.io/docs/specs/semconv/rpc/connect-rpc/ * @see https://opentelemetry.io/docs/specs/semconv/rpc/rpc-metrics/ * @module client-interceptor */ /** * Creates a ConnectRPC interceptor that instruments outgoing RPC calls with * OpenTelemetry tracing and/or metrics. * * The interceptor follows OpenTelemetry semantic conventions for RPC: * - Creates client spans with standard RPC attributes * - Injects trace context into outgoing request headers for propagation * - Records call duration, request size, and response size metrics * - Handles both unary and streaming calls * * @param options - Configuration options for the client interceptor * @returns A ConnectRPC Interceptor function * * @example * ```typescript * import { createOtelClientInterceptor } from '@connectum/otel'; * import { createConnectTransport } from '@connectrpc/connect-node'; * * const transport = createConnectTransport({ * baseUrl: 'http://localhost:5000', * interceptors: [createOtelClientInterceptor({ * serverAddress: 'localhost', * serverPort: 5000, * filter: ({ service }) => !service.includes("Health"), * })], * }); * ``` */ declare function createOtelClientInterceptor(options: OtelClientInterceptorOptions): Interceptor; export { createOtelClientInterceptor };