/**
 * FilteringExporter — Category-based span filtering for OpenTelemetry.
 *
 * Wraps a real SpanExporter and drops spans from disabled categories
 * before they reach the backend. This lets you instrument aggressively
 * and control export volume at runtime.
 *
 * Categories are set via the `otel.category` span attribute.
 * Spans without a category are always exported.
 *
 * Control which categories are active via OTEL_ENABLED_CATEGORIES env var:
 *   OTEL_ENABLED_CATEGORIES=http,business,inference
 *
 * If OTEL_ENABLED_CATEGORIES is not set, all categories are exported.
 */
import type { ExportResult } from "@opentelemetry/core";
import type { ReadableSpan, SpanExporter } from "@opentelemetry/sdk-trace-base";
export declare const ALL_CATEGORIES: readonly ["http", "db", "business", "inference", "state", "system"];
export type OtelCategory = (typeof ALL_CATEGORIES)[number];
export declare class FilteringExporter implements SpanExporter {
    private inner;
    private enabledCategories;
    constructor(inner: SpanExporter);
    export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
    shutdown(): Promise<void>;
    forceFlush(): Promise<void>;
    /** Re-read OTEL_ENABLED_CATEGORIES from env. Call after changing the env var at runtime. */
    refreshCategories(): void;
}
