/**
 * In-process stripping of personally identifiable information from telemetry.
 *
 * Field-level filtering, not entity-level redaction: a matching attribute is dropped whole,
 * never scanned and masked. "Redaction" in this codebase means the project setting (LiveKit
 * Cloud dashboard, or `record: { redaction: true }`); this module is what the client does
 * about it.
 *
 * LiveKit marks attributes carrying conversational content, tool payloads, or other user data
 * with a dot-delimited `pii` segment (`lk.pii.<name>`), and the GenAI content attributes carry
 * the same kind of payload under names the semantic convention fixes, where the marker cannot
 * be applied. Both are filtered before any exporter that is not LiveKit Cloud's — and before
 * every exporter, Cloud included, once the project has enabled redaction, so the client never
 * depends on a collector to strip a new key. {@link restorePii} puts the payload back on
 * LiveKit Cloud's export path when the project still allows it.
 */
import type { Context } from '@opentelemetry/api';
import type { ReadableSpan, Span as SdkSpan, SpanProcessor } from '@opentelemetry/sdk-trace-node';
/**
 * Drops PII attributes so they never reach an exporter that is not LiveKit Cloud's.
 *
 * Runs in `onEnding`, which the SDK dispatches to every registered processor *before* any
 * processor's `onEnd` and while the span is still mutable. Registration order therefore does
 * not matter: an exporter the integrator attached before LiveKit's own still sees the
 * redacted span.
 *
 * `allowPii` lifts the stripping for a provider whose exporters the integrator has explicitly
 * granted PII (`setTracerProvider(provider, { allowPii: true })`). The project's redaction
 * setting overrides that grant and strips for every destination, Cloud included.
 */
export declare class PIIFilteringSpanProcessor implements SpanProcessor {
    private readonly allowPii;
    constructor(allowPii?: boolean);
    onStart(_span: SdkSpan, _parentContext: Context): void;
    onEnding(span: SdkSpan): void;
    onEnd(_span: ReadableSpan): void;
    shutdown(): Promise<void>;
    forceFlush(): Promise<void>;
}
//# sourceMappingURL=pii.d.ts.map