import type { Span, Tracer, Meter, Context } from "@opentelemetry/api"; import type { AgentTool } from "@mariozechner/pi-agent-core"; export interface TelemetryOptions { /** Service name reported as `service.name` resource attribute. Falls back to `OTEL_SERVICE_NAME` env var if omitted. */ serviceName?: string; /** Optional service version reported as `service.version`. */ serviceVersion?: string; /** OTLP/HTTP endpoint (e.g. `http://localhost:4318`). Reads `OTEL_EXPORTER_OTLP_ENDPOINT` if omitted. */ exporterEndpoint?: string; /** OTLP headers, e.g. `{ Authorization: "Bearer …" }`. */ headers?: Record; /** Extra resource attributes to merge into the default resource. */ resourceAttributes?: Record; /** Set to `false` to skip metric exporter setup. */ enableMetrics?: boolean; /** * Test escape hatch — register the given TracerProvider directly and * skip all dynamic SDK imports. Used by unit tests. */ _testProvider?: unknown; } export declare function initTelemetry(opts: TelemetryOptions): Promise; export declare function shutdownTelemetry(): Promise; export declare function isTelemetryEnabled(): boolean; export declare function getTracer(): Tracer; export declare function getMeter(): Meter; export interface SessionHandle { span: Span; ctx: Context; end(extraAttrs?: Record): void; } export declare function startSessionSpan(name?: string, attrs?: Record): SessionHandle; export declare function wrapToolWithOtel>(tool: T): T; export interface RecordGenAiOptions { durationMs?: number; } export declare function recordGenAiCall(msg: any, opts?: RecordGenAiOptions): void;