import { SpanAttributes } from "./attributes.mjs";
import { SpanContext } from "./span_context.mjs";
//#region src/trace/link.d.ts
/**
 * A pointer from the current {@link Span} to another span in the same trace or
 * in a different trace.
 * Few examples of Link usage.
 * 1. Batch Processing: A batch of elements may contain elements associated
 *    with one or more traces/spans. Since there can only be one parent
 *    SpanContext, Link is used to keep reference to SpanContext of all
 *    elements in the batch.
 * 2. Public Endpoint: A SpanContext in incoming client request on a public
 *    endpoint is untrusted from service provider perspective. In such case it
 *    is advisable to start a new trace with appropriate sampling decision.
 *    However, it is desirable to associate incoming SpanContext to new trace
 *    initiated on service provider side so two traces (from Client and from
 *    Service Provider) can be correlated.
 *
 * @since 1.0.0
 */
interface Link {
  /** The {@link SpanContext} of a linked span. */
  context: SpanContext;
  /** A set of {@link SpanAttributes} on the link. */
  attributes?: SpanAttributes;
  /**
   * Count of attributes of the link that were dropped due to collection limits
   *
   * @since 1.4.1
   */
  droppedAttributesCount?: number;
}
//#endregion
export { Link };
//# sourceMappingURL=link.d.mts.map