import { PrivacyConfig } from "../core/privacy.js";
import { AmplitudeClientLike } from "../types.js";

//#region src/otel/mapper.d.ts

interface OtelSpanEvent {
  name?: string;
  attributes?: Record<string, unknown>;
}
interface OtelSpan {
  name?: string;
  attributes?: Record<string, unknown>;
  startTime?: [number, number];
  endTime?: [number, number];
  start_time?: number;
  end_time?: number;
  startTimeUnixNano?: bigint | number;
  endTimeUnixNano?: bigint | number;
  status?: {
    code?: number;
    message?: string;
  };
  context?: {
    trace_id?: number;
    span_id?: number;
    traceId?: string;
    spanId?: string;
  };
  spanContext?: () => {
    traceId?: string;
    spanId?: string;
  };
  parent?: {
    span_id?: number;
    spanId?: string;
  };
  parentSpanId?: string;
  events?: OtelSpanEvent[];
}
interface SpanEventMapperOptions {
  amplitude: AmplitudeClientLike;
  defaultUserId?: string | null;
  defaultDeviceId?: string | null;
  privacyConfig?: PrivacyConfig | null;
}
declare class SpanEventMapper {
  private readonly _amplitude;
  private readonly _defaultUserId;
  private readonly _defaultDeviceId;
  private readonly _privacyConfig;
  constructor(options: SpanEventMapperOptions);
  mapAndTrack(span: OtelSpan): void;
  private _mapAndTrackInner;
  private _routeExplicitType;
  private _routeGenaiOperation;
  private _routeSpanKind;
  private _buildExtraProperties;
  private _extractUserContent;
  private _extractAiContent;
  private _extractSystemPrompt;
  private _extractIoState;
  private _resolveUserId;
  private _extractOtelTraceId;
  private _extractOtelSpanId;
  private _extractParentSpanId;
  private _computeLatencyMs;
  private _parseContextAttr;
}
//#endregion
export { OtelSpan, OtelSpanEvent, SpanEventMapper, SpanEventMapperOptions };
//# sourceMappingURL=mapper.d.ts.map