import { type Context, type SpanContext, type TextMapGetter, type TextMapPropagator, type TextMapSetter } from "@opentelemetry/api"; import type * as sampling from "@solarwinds-apm/sampling"; /** SolarWinds headers */ export interface Headers { /** Headers to be extracted from incoming requests */ request: sampling.RequestHeaders; /** Headers to be injected into outgoing responses */ response: sampling.ResponseHeaders; } export type RequestHeader = keyof Headers["request"]; export type ResponseHeader = keyof Headers["response"] | typeof X_TRACE | typeof ACCESS_CONTROL_EXPOSE_HEADERS; export type Header = RequestHeader | ResponseHeader; /** Storage for headers inside the OTel Context */ export declare const HEADERS_STORAGE: import("../storage.js").ContextStorage; export declare function traceParent(spanContext: SpanContext): string; declare const X_TRACE = "X-Trace"; declare const ACCESS_CONTROL_EXPOSE_HEADERS = "Access-Control-Expose-Headers"; /** * Propagator that extracts SolarWinds request headers */ export declare class RequestHeadersPropagator implements TextMapPropagator { extract(context: Context, carrier: unknown, getter: TextMapGetter): Context; inject(): void; fields(): RequestHeader[]; } /** * Propagator that injects SolarWinds response headers * * This propagator SHOULD NOT be registered with the tracer provider * since it is meant for response and not request. * Currently it is registered in the HTTP instrumentation response hook * until an official response propagation API is added. */ export declare class ResponseHeadersPropagator implements TextMapPropagator { inject(context: Context, carrier: unknown, setter: TextMapSetter): void; fields(): ResponseHeader[]; extract(context: Context): Context; } /** * Returns the first element if the value is an array * or the value as-is otherwise */ export declare function firstIfArray(value: T | T[] | undefined): T | undefined; /** * Returns the result of {@link Array.join} if the value is an array * or the value as-is otherwise * * @param separator - Separator used between elements */ export declare function joinIfArray(value: string | string[] | undefined, separator: string): string | undefined; export {}; //# sourceMappingURL=headers.d.ts.map