/** * * 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 { Attributes, Context, Link, SpanKind } from '@opentelemetry/api'; import { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-web'; export interface SessionBasedSamplerConfig { /** * Sampler called when session isn't being sampled * default: AlwaysOffSampler */ notSampled?: Sampler; /** * Ratio of sessions that get sampled (0.0 - 1.0, where 1 is all sessions) */ ratio?: number; /** * Sampler called when session is being sampled * default: AlwaysOnSampler */ sampled?: Sampler; } export declare class SessionBasedSampler implements Sampler { protected currentSessionId: string | undefined; protected currentSessionSampled: boolean | undefined; protected notSampled: Sampler; protected ratio: number; protected sampled: Sampler; protected upperBound: number; constructor({ notSampled, ratio, sampled, }?: SessionBasedSamplerConfig); isSessionSampled(sessionId: string): boolean; shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult; toString(): string; private _accumulate; private _normalize; }