/**
 * otlpTelemetrySink — OTLP/HTTP exporter for agent runs.
 *
 * Maps {@link TelemetryRunStart} / Step / Finish to OpenTelemetry spans using
 * GenAI semantic conventions. Sends as protobuf-over-HTTP to any compliant
 * OTLP receiver (Tempo, Jaeger, Langfuse self-host, Honeycomb…).
 *
 * Lightweight implementation : JSON over HTTP `application/json` rather than
 * protobuf to avoid pulling in `@opentelemetry/exporter-trace-otlp-proto`.
 * The OTel spec allows JSON-encoded OTLP as a first-class transport (since
 * v1.0). This keeps the SDK zero-dep — no `@opentelemetry/*` runtime needed.
 *
 * Ref: command-center:sprint-693:sink-otlp
 */
import type { TelemetrySink } from "../port.js";
export interface OtlpTelemetrySinkOptions {
    /**
     * OTLP/HTTP endpoint base URL (no trailing slash).
     * Example : `https://langfuse.vauban.tech/api/public/otel`
     * Path `/v1/traces` is appended automatically.
     */
    url: string;
    /** Static headers (Authorization, x-tenant-id, …). */
    headers?: Record<string, string>;
    /**
     * Service name attached to every span. Defaults to `"vauban-agent-sdk"`.
     * Override per-deployment to disambiguate in your tracing backend.
     */
    serviceName?: string;
    /**
     * fetch implementation override (for tests). Defaults to global `fetch`.
     */
    fetchImpl?: typeof fetch;
    /**
     * Request timeout in ms. Defaults to 5000.
     */
    timeoutMs?: number;
}
/**
 * Create an OTLP/HTTP sink. The sink batches at the bus level (FIFO), so
 * one HTTP request is sent per event in this minimal implementation.
 * High-volume deployments should wrap with an upstream batcher.
 */
export declare function otlpTelemetrySink(opts: OtlpTelemetrySinkOptions): TelemetrySink;
//# sourceMappingURL=otlp.d.ts.map