/**
 * OpenTelemetry JSON export — maps TraceSchema v1 to OTLP/JSON so
 * traces render natively in Jaeger / Honeycomb / Langfuse / Grafana.
 *
 * Wire format only. We do NOT depend on the @opentelemetry SDK — that
 * would drag in polyfills incompatible with Workers/Edge. Consumers
 * push the JSON to their collector of choice via HTTP.
 *
 * Reference: OTLP 1.3.2 (ResourceSpans / ScopeSpans / Span).
 */
import type { TraceStore } from './store';
export declare const OTEL_AGENT_EVAL_SCOPE: {
    name: string;
    version: string;
};
export interface OtlpSpan {
    traceId: string;
    spanId: string;
    parentSpanId?: string;
    name: string;
    kind: number;
    startTimeUnixNano: string;
    endTimeUnixNano: string;
    attributes: Array<{
        key: string;
        value: {
            stringValue?: string;
            intValue?: string;
            doubleValue?: number;
            boolValue?: boolean;
        };
    }>;
    events?: Array<{
        timeUnixNano: string;
        name: string;
        attributes?: OtlpSpan['attributes'];
    }>;
    status?: {
        code: number;
        message?: string;
    };
}
export interface OtlpResourceSpans {
    resource: {
        attributes: OtlpSpan['attributes'];
    };
    scopeSpans: Array<{
        scope: typeof OTEL_AGENT_EVAL_SCOPE;
        spans: OtlpSpan[];
    }>;
}
export interface OtlpExport {
    resourceSpans: OtlpResourceSpans[];
}
/** Export a single run's spans + events in OTLP/JSON. */
export declare function exportRunAsOtlp(store: TraceStore, runId: string, resourceAttrs?: Record<string, string | number | boolean>): Promise<OtlpExport>;
//# sourceMappingURL=otel.d.ts.map