import { ChatCompletionMessageParam } from "openai/resources/chat";
import { ResponseInputItem } from "openai/resources/responses/responses";
import { MCPServerSSE, MCPServerStdio } from "../MCP/MCP.js";
import { ClientOptions } from "openai";
import { TraceSession } from "../TraceSession/TraceSession.js";
export interface ToolCall {
    name: string;
    parameters: Record<string, any>;
    callback: (...args: any[]) => any;
    description: string;
}
export interface WebSearchConfig {
    enabled: boolean;
    config?: {
        search_context_size?: "high" | "medium" | "low";
        user_location?: {
            type: "approximate";
            country?: string;
            city?: string;
            region?: string;
        };
    };
}
export interface AgentConfig {
    name: string;
    purpose: string;
    sub_agents?: Agent[];
    tools?: ToolCall[];
    mcp_servers?: (MCPServerSSE | MCPServerStdio)[];
    model?: string;
    web_search?: WebSearchConfig;
    timeout_ms?: number;
    client_config?: ClientOptions;
    api?: "completions" | "responses";
}
export interface AgentRequest<T> {
    context: T[];
}
export interface AgentResponse<T> {
    status: string;
    final_message: string;
    context: T[];
}
export declare class Agent {
    uuid: string;
    private config;
    private defaultModel;
    private defaultTimeout;
    private _client;
    private _api;
    constructor(config: AgentConfig);
    private get client();
    private prepareTools;
    private ToolsToCompletionTools;
    private run_completions;
    private run_responses;
    run(input: string | AgentRequest<ResponseInputItem | ChatCompletionMessageParam>, trace?: TraceSession): Promise<AgentResponse<ResponseInputItem | ChatCompletionMessageParam>>;
    asTool(parameters?: object): ToolCall;
}
