import { Document } from './document.types'; import { Message } from './message.types'; export declare enum NodeType { llm = "llm", chat = "chat", chain = "chain", tool = "tool", agent = "agent", retriever = "retriever", workflow = "workflow" } export declare const StepType: typeof NodeType; interface BaseStepType { createdAtNs: number; durationNs: number; groundTruth?: string; metadata: { [key: string]: string; }; name?: string; statusCode?: number; } export type StepIOType = string | Document | Message | { [key: string]: string; } | (Document | Message | { [key: string]: unknown; })[]; interface StepWithChildrenType extends BaseStepType { input: StepIOType; output: StepIOType; parent: AWorkflow | null; statusCode?: number | undefined; steps: AWorkflowStep[]; } export declare class StepWithChildren implements StepWithChildrenType { createdAtNs: number; durationNs: number; groundTruth?: string; input: StepIOType; metadata: { [key: string]: string; }; name?: string; output: StepIOType; parent: AWorkflow | null; statusCode?: number | undefined; steps: AWorkflowStep[]; type?: NodeType.agent | NodeType.workflow; constructor(step: StepWithChildrenType); addStep(step: AWorkflowStep): AWorkflowStep; conclude(output?: StepIOType, durationNs?: number, statusCode?: number): AWorkflow | null; } export type AgentStepType = StepWithChildrenType; export declare class AgentStep extends StepWithChildren { type: NodeType.agent; constructor(step: AgentStepType); } export type WorkflowStepType = StepWithChildrenType; export declare class WorkflowStep extends StepWithChildren { type: NodeType.workflow; constructor(step: WorkflowStepType); } type RetrieverStepOutputType = (string | Document | { [key: string]: string; })[]; interface StepWithoutChildrenType extends BaseStepType { input: StepIOType | LlmStepIOType | string; output: StepIOType | LlmStepIOType | RetrieverStepOutputType; } export declare class StepWithoutChildren implements StepWithoutChildrenType { createdAtNs: number; durationNs: number; groundTruth?: string; input: StepIOType | LlmStepIOType | string; metadata: { [key: string]: string; }; name?: string; output: StepIOType | LlmStepIOType | RetrieverStepOutputType; statusCode?: number | undefined; type?: NodeType.llm | NodeType.retriever | NodeType.tool; constructor(step: StepWithoutChildrenType); } type LlmStepIOType = string | Message | { [key: string]: string; } | (string | Message | { [key: string]: string; })[]; export interface LlmStepType extends StepWithoutChildrenType { input: LlmStepIOType; inputTokens?: number; model?: string; output: LlmStepIOType; outputTokens?: number; temperature?: number; totalTokens?: number; tools?: Record[]; } export declare class LlmStep extends StepWithoutChildren { inputTokens?: number; model?: string; tools?: Record[]; outputTokens?: number; temperature?: number; totalTokens?: number; type: NodeType.llm; constructor(step: LlmStepType); } export interface RetrieverStepType extends StepWithoutChildrenType { input: string; output: RetrieverStepOutputType; } export declare class RetrieverStep extends StepWithoutChildren { type: NodeType.retriever; constructor(step: RetrieverStepType); } export type ToolStepType = StepWithoutChildrenType; export declare class ToolStep extends StepWithoutChildren { type: NodeType.tool; constructor(step: ToolStepType); } export type AWorkflow = AgentStep | LlmStep | WorkflowStep; export type AWorkflowStep = AWorkflow | RetrieverStep | ToolStep; export {};