import { ToolResult } from "../types/tools.types";
import { LLMRequest } from "../types/llm.types";
import { WorkflowAgent } from "../types/core.types";
import { LanguageModelV1ToolCallPart } from "@ai-sdk/provider";
type ChainEvent = {
    type: "update";
    target: AgentChain | ToolChain;
};
interface Callback {
    (chain: Chain, event: ChainEvent): void;
}
export declare class ToolChain {
    readonly toolName: string;
    readonly toolCallId: string;
    readonly request: LLMRequest;
    params?: Record<string, unknown>;
    toolResult?: ToolResult;
    onUpdate?: () => void;
    constructor(toolUse: LanguageModelV1ToolCallPart, request: LLMRequest);
    updateParams(params: Record<string, unknown>): void;
    updateToolResult(toolResult: ToolResult): void;
}
export declare class AgentChain {
    agent: WorkflowAgent;
    tools: ToolChain[];
    agentRequest?: LLMRequest;
    agentResult?: string;
    onUpdate?: (event: ChainEvent) => void;
    constructor(agent: WorkflowAgent);
    push(tool: ToolChain): void;
}
export default class Chain {
    taskPrompt: string;
    planRequest?: LLMRequest;
    planResult?: string;
    agents: AgentChain[];
    private listeners;
    constructor(taskPrompt: string);
    push(agent: AgentChain): void;
    private pub;
    addListener(callback: Callback): void;
    removeListener(callback: Callback): void;
}
export {};
//# sourceMappingURL=chain.d.ts.map