///|
/// Stable public metric model API.
pub using @metric {
  type Counter,
  type Descriptor,
  type DescriptorIdentity,
  type Gauge,
  type Histogram,
  type HistogramSnapshot,
  type Label,
  type MetricError,
  type MetricKind,
  type ScalarMetricSnapshot,
  validate_help,
  validate_histogram_boundaries,
  validate_label_name,
  validate_metric_name,
  validate_unit,
}

///|
/// Label-vector API.  Child storage remains an implementation detail.
pub using @vector {
  type CounterVec,
  type GaugeVec,
  type HistogramVec,
  type LabelSchema,
  type VectorError,
}

///|
/// Registry collection API. Explicit instances remain the preferred default.
pub using @registry {
  type CollectorAdapter,
  type CollectorError,
  type FamilySnapshot,
  type FamilyType,
  type GatherError,
  type GatherSnapshot,
  type HistogramSampleSnapshot,
  type Registration,
  type Registry,
  type RegistryError,
  type ScalarSampleSnapshot,
  default_registry,
  histogram_sample,
  scalar_sample,
}

///|
/// Ready-to-register collectors for common application metadata.
pub using @collectors {type BuildInfoCollector}

///|
/// Prometheus/OpenMetrics exposition API.
pub using @openmetrics {
  type EncodedExposition,
  type EncodingError,
  type ExpositionFormat,
  content_type,
  encode,
  encode_registry,
  encode_snapshot,
}

///|
/// Framework-neutral HTTP response and content negotiation API.
pub using @http {
  type Header,
  type HttpMetricsError,
  type MetricsResponse,
  bad_request_response,
  internal_error_response,
  metrics_response,
  metrics_response_from_exposition,
  negotiate,
  negotiated_metrics_response,
  not_acceptable_response,
}