/**
 * LLM Provider interface for evaluation tests
 * Using Vercel AI SDK unified types
 */
import type { CoreMessage, ToolCall, ToolResult } from 'ai';
import type { McpClient } from '../../../shared/core/mcp-client.js';
export interface LlmConversationConfig {
    model: string;
    maxSteps: number;
    timeout: number;
    allowedTools?: string[];
}
export interface LlmConversationResult {
    messages: CoreMessage[];
    toolCalls: ToolCall<string, Record<string, unknown>>[];
    toolResults: ToolResult<string, Record<string, unknown>, unknown>[];
    success: boolean;
    error?: string;
}
export interface LlmJudgeResult {
    score: number;
    rationale: string;
}
export declare abstract class LlmProvider {
    abstract executeConversation(_mcpClient: McpClient, _prompt: string, _config: LlmConversationConfig): Promise<LlmConversationResult>;
    abstract judgeResponse(_messages: CoreMessage[], _criteria: string, _threshold?: number): Promise<LlmJudgeResult>;
    /**
     * Extract tool calls from AI SDK messages
     */
    extractToolCalls(messages: CoreMessage[]): ToolCall<string, Record<string, unknown>>[];
    /**
     * Extract tool results from AI SDK messages
     */
    extractToolResults(messages: CoreMessage[]): ToolResult<string, Record<string, unknown>, unknown>[];
}
