/** * Sampler abstraction for trace sampling decisions. * Follows OpenTelemetry Sampler specification patterns. * * @see https://opentelemetry.io/docs/specs/otel/trace/sdk/#sampler */ export type SamplingDecision = "RECORD_AND_SAMPLE" | "DROP"; export type ParentContext = { traceId: string; spanId: string; /** Whether parent came from a remote service (traceparent header) */ isRemote: boolean; /** Parent's sampling decision (from traceparent flags or local span) */ sampled: boolean; }; export type SamplingContext = { traceId: string; name: string; parentContext?: ParentContext; }; export type Sampler = { shouldSample(context: SamplingContext): SamplingDecision; readonly description: string; }; /** * Always samples - use for development or when you want 100% traces. */ export declare function alwaysOnSampler(): Sampler; /** * Never samples - use to disable tracing entirely. */ export declare function alwaysOffSampler(): Sampler; /** * Samples based on a probability ratio (0.0 to 1.0). * Uses Math.random() for simplicity - not deterministic across services. */ export declare function traceIdRatioSampler(ratio: number): Sampler; export type ParentBasedSamplerOptions = { /** Sampler for new traces (no parent) */ root: Sampler; /** Sampler when remote parent was sampled (default: AlwaysOn) */ remoteParentSampled?: Sampler; /** Sampler when remote parent was not sampled (default: AlwaysOff) */ remoteParentNotSampled?: Sampler; /** Sampler when local parent was sampled (default: AlwaysOn) */ localParentSampled?: Sampler; /** Sampler when local parent was not sampled (default: AlwaysOff) */ localParentNotSampled?: Sampler; }; /** * Makes sampling decisions based on parent span's decision. * This is the recommended default sampler for distributed tracing. * * - Remote parent sampled (traceparent with sampled=1): sample * - Remote parent not sampled: don't sample * - Local parent sampled: sample * - Local parent not sampled: don't sample * - No parent: delegate to root sampler */ export declare function parentBasedSampler(options: ParentBasedSamplerOptions): Sampler; //# sourceMappingURL=sampler.d.ts.map