/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { Resource } from '@opentelemetry/resources'; import { LogRecordProcessor } from '@opentelemetry/sdk-logs'; import { MetricReader } from '@opentelemetry/sdk-metrics'; import { SpanProcessor } from '@opentelemetry/sdk-trace-base'; export interface OtelExportersConfig { enableTracing?: boolean; enableMetrics?: boolean; enableLogging?: boolean; } /** * Configuration hooks for OpenTelemetry setup. * * This interface defines the structure for configuring OpenTelemetry * components including span processors, metric readers, and log record processors. */ export interface OTelHooks { spanProcessors?: SpanProcessor[]; metricReaders?: MetricReader[]; logRecordProcessors?: LogRecordProcessor[]; } /** * Sets up OTel providers if hooks for a given telemetry type were passed. * * Additionally adds generic OTLP exporters based on following env variables: * OTEL_EXPORTER_OTLP_ENDPOINT * OTEL_EXPORTER_OTLP_TRACES_ENDPOINT * OTEL_EXPORTER_OTLP_METRICS_ENDPOINT * OTEL_EXPORTER_OTLP_LOGS_ENDPOINT * See https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/ * for how they are used. * * If a provider for a specific telemetry type was already globally set - * this function will not override it or register more exporters. * * @experimental (Experimental, subject to change) * * @param otelHooksToSetup per-telemetry-type processors and readers to be added * to OTel providers. If no hooks for a specific telemetry type are passed - * provider will not be set. * @param otelResource OTel resource to use in providers. * If empty - default OTel resource detection will be used. */ export declare function maybeSetOtelProviders(otelHooksToSetup?: OTelHooks[], otelResource?: Resource): void;