import { ChatCompletion, ChatCompletionMessage, ChatCompletionMessageParam, ChatCompletionTool, ChatCompletionToolChoiceOption, CompletionUsage } from "openai/resources/index.mjs";
import { BaseAgent } from "../agents";
export interface Context<UserType = any> {
    [key: string]: any;
    _user?: UserType;
    _token?: string;
}
export interface ChatCompletionOptions {
    model?: string;
    max_tokens?: number;
    temperature?: number;
    tool_choice?: ChatCompletionToolChoiceOption;
}
export interface GetChatCompletionArgs extends ChatCompletionOptions {
    messages: ChatInputMessage[];
    tools?: ChatCompletionTool[];
}
export interface AgentRunResult {
    producerAgent: string;
    isFinalResponse: boolean;
    chatCompletions?: ChatCompletion[];
    handoffToAgent?: {
        previous?: boolean;
        name?: string;
    };
    context?: Context;
}
export type ChatInputMessage = ChatCompletionMessageParam;
export type ReferenceFunction = (paramsAndContext?: any & Context) => Promise<ToolResult<any>>;
export interface ToolObject {
    functionReference: ReferenceFunction;
    tool: ChatCompletionTool;
}
export interface SimpleChatMessage {
    role: string;
    content: string;
    name?: string;
    function_call?: {
        name: string;
        arguments: string;
    };
}
export interface ToolResult<T> {
    successMessage?: string;
    data?: T;
    errorMessage?: string;
    error?: any;
}
export type ToolResultPromise<T> = Promise<ToolResult<T>>;
export interface OperatorServiceMeta {
    name: string;
    description: string;
    systemMessage: string;
    toolObjects: () => ToolObject[];
    options?: Partial<ChatCompletionOptions>;
}
export interface AgentRouterResponse {
    chatCompletions: ChatCompletion[];
    conversationHistory: AnyChatMessage[];
    agentHistory: string[];
    context: Context;
    currentAgent: string;
    logEntries: Object[];
    usage?: CompletionUsage;
}
export interface RouterConfig {
    agents: Map<string, BaseAgent>;
    defaultAgent: string;
}
export type AnyChatMessage = SimpleChatMessage | ChatInputMessage | ChatCompletionMessage;
//# sourceMappingURL=index.d.ts.map