import { ExpertAgent, ExpertAgentConfig, ExpertResult, AnalysisContext, AgentState, AgentThought, ToolResult, Finding, Diagnostic, Intent } from '../types';
export interface LLMClient {
    complete(prompt: string): Promise<string>;
    completeJSON<T>(prompt: string): Promise<T>;
}
export declare abstract class BaseExpertAgent implements ExpertAgent {
    config: ExpertAgentConfig;
    protected llm: LLMClient;
    protected traceProcessor: any;
    protected traceProcessorService: any;
    protected currentTraceId: string | null;
    constructor(config: ExpertAgentConfig, llm: LLMClient);
    abstract canHandle(intent: Intent): boolean;
    protected abstract getSystemPrompt(): string;
    protected abstract getAnalysisGoals(context: AnalysisContext): string[];
    /**
     * Override this method to provide initial SQL queries to execute
     * before the main think-act loop. Results will be added to state.toolResults.
     */
    protected getInitialQueries?(): string[];
    analyze(context: AnalysisContext): Promise<ExpertResult>;
    protected think(state: AgentState): Promise<AgentThought>;
    protected selectTools(thought: AgentThought, state: AgentState): Promise<{
        toolName: string;
        params: Record<string, any>;
    }[]>;
    protected executeTool(toolName: string, params: Record<string, any>, context: AnalysisContext): Promise<ToolResult>;
    protected extractFindings(result: ToolResult, toolName: string, state: AgentState): Promise<Finding[]>;
    protected generateConclusion(state: AgentState, findings: Finding[]): Promise<{
        suggestions: string[];
        diagnostics: Diagnostic[];
    }>;
    protected calculateConfidence(state: AgentState): number;
    setTraceProcessor(tp: any): void;
    setTraceProcessorService(service: any, traceId: string): void;
}
//# sourceMappingURL=baseExpertAgent.d.ts.map