import type { Agent, DAGNode, LinearStep, Model, Span, Tool } from '../../../types';
import type { LlamaIndexInstrumentationHandler } from './types';
/**
 * LlamaIndex OpenTelemetry tracer (e.g. llamaindex.opentelemetry.tracer).
 * - Span names have UUID suffix: AgentWorkflow.run-19a481aa-cb99-429a-b1e9-32e74eef067e.
 * - Attributes are typically empty; type and scope inferred from name prefix only.
 */
export declare class OtelTracerHandler implements LlamaIndexInstrumentationHandler {
    readonly kind: "otel_tracer";
    private deduplicator;
    private normalizedName;
    getWorkflowScopedSpans(spans: Span[]): Span[];
    getTools(spans: Span[]): Tool[];
    getAgents(spans: Span[]): Agent[];
    getModels(spans: Span[]): Model[];
    getModelsFromUnscoped(spans: Span[]): Model[];
    generateDag(spans: Span[]): DAGNode[];
    generateLinearFlow(spans: Span[]): LinearStep[];
    private isToolSpan;
    /** LangChain/LangGraph-style routing and plumbing (LlamaIndex can use these when built on LangChain). */
    private isInfrastructureWorkflow;
    private isAgentSpan;
    private isModelSpan;
    private buildChildMap;
    private getDescendantIds;
    /** Same as openInference: safe to hide; standard traces have another LLM span for the same call. */
    private isAsyncOnlyModelSpan;
    private isAsyncOnlyAgent;
    private extractTool;
    private extractAgent;
    private extractModel;
    private getNodeType;
}
//# sourceMappingURL=otelTracerHandler.d.ts.map