import type { Agent, DAGNode, FrameworkParser, LinearStep, Model, Span, Tool } from "../types";
import { EdgeCaseHandlerRegistry } from "../utils/edgeCaseHandlers";
/**
 * LangChain Parser
 */
export declare class LangChainParser implements FrameworkParser {
    name: string;
    private deduplicator;
    edgeCaseRegistry: EdgeCaseHandlerRegistry;
    constructor();
    canParse(spans: Span[]): boolean;
    getTools(spans: Span[]): Tool[];
    /**
     * Add `argument` / `argument_defination` to tools produced by edge-case handlers (OpenLit-style parity with LangGraph).
     */
    private enrichToolsArgumentMetadata;
    /** Align {@link collectAgentToolDefinitions} output with {@link enrichToolsArgumentMetadata} (same span-level rules). */
    private enrichAgentToolDefinitions;
    getAgents(spans: Span[]): Agent[];
    getModels(spans: Span[]): Model[];
    generateDag(spans: Span[]): DAGNode[];
    generateLinearFlow(spans: Span[]): LinearStep[];
    private createContext;
    private isAgentSpan;
    /**
     * Identify LangChain infrastructure workflows that should NOT be classified as agents.
     *
     * Examples:
     * - OpenAIFunctionsAgentOutputParser / ToolsAgentOutputParser: output parsing helpers (not agents)
     * - RunnableAssign<agent_scratchpad>: scratchpad wiring (not agents)
     */
    private isInfrastructureWorkflow;
    /** Matches tool classification in getNodeType (explicit tool spans + execute_tool / gen_ai.tool.name). */
    private isToolEntitySpan;
    private isModelSpan;
    private extractAgent;
    private extractModel;
    private extractTokenUsage;
    /**
     * Extract Time to First Token (TTFT)
     */
    private extractTTFT;
    private getNodeType;
}
//# sourceMappingURL=langchain.d.ts.map