import { BaseMessage, SystemMessage } from "@langchain/core/messages";
import { Runnable, RunnableToolLike } from "@langchain/core/runnables";
import { StructuredToolInterface } from "@langchain/core/tools";
import { BaseCheckpointSaver, CompiledStateGraph, START, StateGraphArgs } from "@langchain/langgraph/web";
import { ToolNode } from "@langchain/langgraph/prebuilt";
import { BaseChatModel } from "@langchain/core/language_models/chat_models";
import { AgentState } from "./types";
import { MessagesAnnotation } from "@langchain/langgraph";
import { All } from "@langchain/langgraph-checkpoint";
export type N = typeof START | "agent" | "tools";
export type CreateReactAgentParams = {
    llm: BaseChatModel;
    tools: ToolNode<typeof MessagesAnnotation.State> | (StructuredToolInterface | RunnableToolLike)[];
    messageModifier?: SystemMessage | string | ((state: AgentState) => BaseMessage[]) | ((state: AgentState) => Promise<BaseMessage[]>) | Runnable;
    checkpointSaver?: BaseCheckpointSaver;
    interruptBefore?: N[] | All;
    interruptAfter?: N[] | All;
    state?: StateGraphArgs<AgentState>["channels"];
    agentRouter?: (state: AgentState) => string;
    toolsRouter?: (state: AgentState) => string;
};
/**
 * Creates a StateGraph agent that relies on a chat llm utilizing tool calling.
 * @param llm The chat llm that can utilize OpenAI-style function calling.
 * @param tools A list of tools or a ToolNode.
 * @param messageModifier An optional message modifier to apply to messages before being passed to the LLM.
 * Can be a SystemMessage, string, function that takes and returns a list of messages, or a Runnable.
 * @param checkpointSaver An optional checkpoint saver to persist the agent's state.
 * @param interruptBefore An optional list of node names to interrupt before running.
 * @param interruptAfter An optional list of node names to interrupt after running.
 * @returns A compiled agent as a LangChain Runnable.
 */
export declare function createReactAgent(props: CreateReactAgentParams): CompiledStateGraph<AgentState, Partial<AgentState>, typeof START | "agent" | "tools">;
