/** * Node.js Telemetry Bootstrap * * This is the ONLY approved way to initialize telemetry in Node.js services. * Direct NodeSDK usage outside this package is prohibited. */ import { Tracer, Meter } from "@opentelemetry/api"; import { Logger } from "@opentelemetry/api-logs"; import { NodeSDK } from "@opentelemetry/sdk-node"; import { TelemetryPolicyEvaluator } from "../common/policy-evaluator.js"; import type { NodeTelemetryConfig } from "../types/index.js"; import { TelemetryPolicy } from "../types/policy.js"; import { MetricsClient } from "./metrics-client.js"; /** * Telemetry instance returned by initNodeTelemetry. */ export interface NodeTelemetryInstance { /** The underlying NodeSDK instance (undefined in CI/no-op mode) */ sdk?: NodeSDK; /** Policy evaluator for runtime decisions */ policyEvaluator: TelemetryPolicyEvaluator; /** Get a tracer for the service */ getTracer: (name?: string) => Tracer; /** Get a meter for the service */ getMeter: (name?: string) => Meter; /** Get a logger for the service */ getLogger: (name?: string) => Logger; /** Metrics client for recording counters, gauges, and histograms */ metricsClient: MetricsClient; /** Graceful shutdown */ shutdown: () => Promise; } /** * Initialize Node.js telemetry with policy enforcement. * * This is the ONLY approved way to initialize telemetry in Node.js services. * Direct NodeSDK usage outside this package is prohibited. * * @param config - Service configuration * @param policy - Telemetry policy (REQUIRED) * @returns Telemetry instance with SDK and utilities * * @example * ```typescript * import { initNodeTelemetry } from '@superblocksteam/telemetry/node'; * import { getDefaultPolicy, DeploymentType } from '@superblocksteam/shared'; * * const policy = getDefaultPolicy(DeploymentType.CLOUD_PREM); * const telemetry = initNodeTelemetry({ * serviceName: 'my-service', * serviceVersion: '1.0.0', * environment: 'production', * otlpUrl: 'http://localhost:4318', * }, policy); * * const tracer = telemetry.getTracer(); * ``` */ export declare function initNodeTelemetry(config: NodeTelemetryConfig, policy: TelemetryPolicy): NodeTelemetryInstance; /** * Get the current telemetry instance. * * @throws Error if not initialized */ export declare function getTelemetryInstance(): NodeTelemetryInstance; /** * Check if telemetry is initialized. */ export declare function isTelemetryInitialized(): boolean; /** * Reset telemetry (for testing only). * @internal */ export declare function resetTelemetry(): void; //# sourceMappingURL=init.d.ts.map