/**
 * Utility class for span creation and serialization
 * Handles conversion between NeuroLink's span format and platform-specific formats
 */
import { type LangfuseSpan, type LangSmithRun, type OtelSpan, type SpanAttributes, type SpanData, SpanStatus, SpanType } from "../../types/index.js";
/**
 * Utility class for span creation and serialization
 */
export declare class SpanSerializer {
    /**
     * Create a new span with generated IDs.
     *
     * When `traceId` / `parentSpanId` are omitted, the method automatically
     * attempts to inherit them from the active OTel context so that Pipeline B
     * spans land inside the same Langfuse trace as Pipeline A spans (fix A5).
     */
    static createSpan(type: SpanType, name: string, attributes?: Partial<SpanAttributes>, parentSpanId?: string, traceId?: string): SpanData;
    /**
     * End a span with status
     */
    static endSpan(span: SpanData, status?: SpanStatus, statusMessage?: string): SpanData;
    /**
     * Add event to span
     */
    static addEvent(span: SpanData, name: string, attributes?: Record<string, unknown>): SpanData;
    /**
     * Update span attributes
     */
    static updateAttributes(span: SpanData, attributes: Partial<SpanAttributes>): SpanData;
    /**
     * Serialize span to JSON for export
     */
    static toJSON(span: SpanData): string;
    /**
     * Instance method to serialize a span object to JSON string
     * @param span - The span data to serialize (can be partial span data)
     * @returns JSON string representation of the span
     */
    serialize(span: Partial<SpanData> | Record<string, unknown>): string;
    /**
     * Instance method to deserialize a JSON string to span data
     * @param json - The JSON string to parse
     * @returns Parsed span data
     */
    deserialize(json: string): SpanData;
    /**
     * Parse span from JSON
     */
    static fromJSON(json: string): SpanData;
    /**
     * Serialize span for Langfuse format
     */
    static toLangfuseFormat(span: SpanData): LangfuseSpan;
    /**
     * Serialize span for LangSmith format
     */
    static toLangSmithFormat(span: SpanData): LangSmithRun;
    /**
     * Serialize span for OpenTelemetry format
     */
    static toOtelFormat(span: SpanData): OtelSpan;
    /**
     * Convert value to OTel attribute value format
     */
    private static toOtelAttributeValue;
    /**
     * Map NeuroLink span type to LangSmith run type
     */
    private static mapSpanTypeToLangSmithRunType;
    /**
     * Extract tags from span attributes for LangSmith
     */
    private static extractTags;
    /**
     * Create a generation span with AI-specific attributes
     */
    static createGenerationSpan(params: {
        provider: string;
        model: string;
        name?: string;
        parentSpanId?: string;
        traceId?: string;
        temperature?: number;
        maxTokens?: number;
        input?: unknown;
        userId?: string;
        sessionId?: string;
    }): SpanData;
    /**
     * Create a tool call span
     */
    static createToolCallSpan(params: {
        toolName: string;
        server?: string;
        input?: unknown;
        parentSpanId?: string;
        traceId?: string;
    }): SpanData;
    /**
     * Enrich span with token usage
     */
    static enrichWithTokenUsage(span: SpanData, usage: {
        promptTokens?: number;
        completionTokens?: number;
        totalTokens?: number;
        cacheCreationTokens?: number;
        cacheReadTokens?: number;
        reasoningTokens?: number;
    }): SpanData;
    /**
     * Enrich span with cost information
     */
    static enrichWithCost(span: SpanData, cost: {
        inputCost?: number;
        outputCost?: number;
        totalCost: number;
        currency?: string;
    }): SpanData;
}
