/** Subconjunto mínimo del span de dd-trace que usamos. */ export interface SpanLike { context(): unknown; setTag(key: string, value: unknown): void; finish(): void; } /** Subconjunto mínimo del tracer de dd-trace que usamos. */ export interface TracerLike { startSpan(name: string, options?: Record): SpanLike; inject(spanContext: unknown, format: string, carrier: Record): void; scope(): { active(): SpanLike | null; }; } /** * Devuelve el tracer de dd-trace si está instalado e inicializado; null si no. * El resultado se cachea: el require solo se intenta una vez si el módulo no * existe, y el tracer se resuelve una sola vez cuando ya está inicializado. */ export declare function getTracer(): TracerLike | null; /** * dd-trace >= 5 instrumenta undici (incluido Pool) de forma nativa vía * diagnostics_channel y suscribe 'undici:request:create'. En ese caso NO * debemos crear spans ni inyectar headers nosotros: la request saldría con * spans y headers de propagación duplicados. dd-trace 4 (el que usan hoy los * consumidores vía @regcheq/logger-backend) solo instrumenta undici.fetch, * por lo que este canal no tiene suscriptores y la instrumentación manual * de esta librería es la que aplica. */ export declare function isUndiciNativelyInstrumented(): boolean; /** * Devuelve el span cliente para una request saliente si corresponde * instrumentarla (hay tracer disponible y undici no está ya instrumentado * nativamente por dd-trace); null en caso contrario. Cuando crea el span, * también inyecta los headers de propagación en `headers`. */ export declare function maybeStartClientSpan(method: string, origin: string, path: string, headers: Record): SpanLike | null; /** * Crea el span cliente para una request saliente e inyecta los headers de * propagación de traza en el carrier ANTES de enviar la request. * El resource usa el path SIN query string. */ export declare function startClientSpan(tracer: TracerLike, method: string, origin: string, path: string, headers: Record): SpanLike; /** * Marca el span según el error lanzado por la request: * - HttpClientError de red (statusCode 0) o excepción cruda → error con el Error. * - HttpClientError con status >= 500 → error=true (el status ya fue taggeado). * - HttpClientError 4xx → NO se marca error (comportamiento esperado del cliente). */ export declare function markSpanError(span: SpanLike, err: unknown): void; //# sourceMappingURL=tracing.d.ts.map