import { ProxyTraceManager } from "../../manager/ProxyTraceManager/ProxyTraceManager.cjs";
import { Span, SpanOptions, TimeInput } from "@opentelemetry/api";
import { ReadableSpan } from "@opentelemetry/sdk-trace-web";

//#region src/api-traces/api/TraceAPI/types.d.ts
interface TraceAPIArgs {
  proxyTraceManager: ProxyTraceManager;
}
type ExtendedSpanFailureCode = 'failure' | 'user_abandon';
type ExtendedSpanFailedOptions = {
  code?: ExtendedSpanFailureCode;
  endTime?: TimeInput;
};
/**
 * Exposes the span's current attributes (readonly) without defining all properties of the ReadableSpan interface.
 * Ideally, we create a new interface that merges OpenTelemetry's Span, ReadableSpan and the not-yet-implemented
 * Writable Span described here:
 * https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#additional-span-interfaces
 */
interface ExtendedSpan extends Span, Pick<ReadableSpan, 'attributes'> {
  removeAttribute: (key: string) => this;
  fail: (options?: ExtendedSpanFailedOptions) => void;
}
type ExtendedSpanOptions = SpanOptions & {
  parentSpan?: Span;
};
//#endregion
export { ExtendedSpan, ExtendedSpanFailedOptions, ExtendedSpanFailureCode, ExtendedSpanOptions, TraceAPIArgs };
//# sourceMappingURL=types.d.cts.map