/** * * Copyright 2020-2026 Splunk Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ import { InstrumentationBase, InstrumentationConfig } from '@opentelemetry/instrumentation'; import { ReportOpts } from 'web-vitals'; import { SessionManager } from '../managers'; import { SplunkOtelWebConfig } from '../types'; export interface SplunkWebVitalsInstrumentationConfig extends InstrumentationConfig { /** * If true, the webvitals spans will have their start time aligned with the document load span, * and will inherit the URL attributes from the document load span if available. * @default true */ alignWebVitalsSpansWithDocumentLoad?: boolean; cls?: boolean | ReportOpts; inp?: boolean | ReportOpts; lcp?: boolean | ReportOpts; } export declare class SplunkWebVitalsInstrumentation extends InstrumentationBase { protected otelConfig: SplunkOtelWebConfig; sessionManager?: SessionManager | undefined; private areCallbackAttached; private docLoadSpanPromise; private docLoadSpanResolve; private isRecording; private reported; constructor(config: SplunkWebVitalsInstrumentationConfig | undefined, otelConfig: SplunkOtelWebConfig, sessionManager?: SessionManager | undefined); disable(): void; enable(): void; init(): void; private reportMetric; private shouldAlignWithDocumentLoad; }