import { PageManager } from "../../../api-page/manager/types.js";
import { URLDocument } from "../../../common/types.js";
import { PerformanceManager } from "../../../utils/PerformanceManager/types.js";
import "../../../utils/index.js";
import { DiagLogger } from "@opentelemetry/api";
import { LogRecord } from "@opentelemetry/api-logs";
import { InstrumentationConfig } from "@opentelemetry/instrumentation";
import { Metric, MetricWithAttribution, ReportOpts } from "web-vitals/attribution";
//#region src/instrumentations/web-vitals/WebVitalsInstrumentation/types.d.ts
/** @deprecated All vitals metrics are tracked */
type TrackingLevel = 'core' | 'all';
type WebVitalOnReport = (metric: MetricWithAttribution) => void;
type WebVitalListeners = Record<Metric['name'], ((onReport: WebVitalOnReport, opts?: ReportOpts) => void) | undefined>;
interface WebVitalsInstrumentationConfig extends InstrumentationConfig {
  /**
   * @experimental
   * When true, sets the log record body to the JSON-stringified
   * `web-vitals` attribution object for the metric.
   *
   * Note: `applyCustomLogRecordData` runs after the body is set.
   * If the hook assigns a new `body`, it will overwrite the attribution data.
   */
  includeRawAttribution?: boolean;
  applyCustomLogRecordData?: (logRecord: LogRecord) => void;
  /**
   * When true, reports web vitals for each soft navigation in single-page apps
   * (SPAs), in addition to the initial hard navigation. Does not have any effect
   * in browsers that do not support the Soft Navigations API.
   *
   * Defaults to `true`.
   */
  reportSoftNavs?: boolean;
  listeners?: WebVitalListeners;
  urlDocument?: URLDocument;
  urlAttribution?: boolean;
  pageManager?: PageManager;
  diag?: DiagLogger;
  perf?: PerformanceManager;
  /** @deprecated All vitals metrics are tracked */
  trackingLevel?: TrackingLevel;
}
//#endregion
export { TrackingLevel, WebVitalListeners, WebVitalOnReport, WebVitalsInstrumentationConfig };
//# sourceMappingURL=types.d.ts.map