import { Span } from '@opentelemetry/api';
export interface ITracingService {
    /**
     * Initializes the tracing service with the OTLP collector endpoint
     */
    initialize(): void;
    /**
     * Starts a new span for tracing an operation
     * @param name - Name of the operation
     * @param attributes - Optional attributes to attach to the span
     * @returns The created span
     */
    startSpan(name: string, attributes?: Record<string, any>): Span;
    /**
     * Ends a span
     * @param span - The span to end
     */
    endSpan(span: Span): void;
    /**
     * Sets an attribute on a span
     * @param span - The span to modify
     * @param key - Attribute key
     * @param value - Attribute value
     */
    setSpanAttribute(span: Span, key: string, value: any): void;
    /**
     * Records an exception in a span
     * @param span - The span to record the exception in
     * @param error - The error to record
     */
    recordException(span: Span, error: Error | any): void;
    /**
     * Wraps an async function with automatic span creation and error handling
     * @param name - Name of the operation
     * @param fn - The function to wrap
     * @param attributes - Optional attributes to attach to the span
     * @returns The result of the function
     */
    traceAsync<T>(name: string, fn: () => Promise<T>, attributes?: Record<string, any>): Promise<T>;
    /**
     * Flushes all pending spans to the collector
     * Call this when capture/process is complete
     */
    flush(): Promise<void>;
    /**
     * Cleans up resources
     */
    cleanup(): Promise<void>;
    /**
     * Get the current trace ID (useful for logging correlation)
     */
    getCurrentTraceId(): string | undefined;
    /**
     * Get the current span ID
     */
    getCurrentSpanId(): string | undefined;
    /**
     * Set the session trace ID from external source (license or component prop)
     * @param traceId - The trace ID to use for all spans (32 hex characters)
     */
    setSessionTraceId(traceId: string | null): void;
    /**
     * Get the current session trace ID
     */
    getSessionTraceId(): string | null;
}
