/**
 * Tester Agent
 *
 * Specialized agent for running tests and verifying code functionality.
 * Responsible for:
 * - Running test suites
 * - Analyzing test results
 * - Identifying test coverage gaps
 * - Suggesting new tests
 * - Verifying bug fixes
 */
import { BaseAgent } from "../base-agent.js";
import { SharedContext, AgentExecutionResult, ToolExecutor } from "../types.js";
import { CodeBuddyTool } from "../../../codebuddy/client.js";
export interface TestResult {
    success: boolean;
    total: number;
    passed: number;
    failed: number;
    skipped: number;
    coverage?: number;
    failures: TestFailure[];
    coverageGaps: string[];
    recommendations: string[];
    duration: number;
    output: string;
}
export interface TestFailure {
    testName: string;
    file: string;
    line?: number;
    error: string;
    suggestion: string;
}
export declare class TesterAgent extends BaseAgent {
    private testFramework;
    private testCommand;
    constructor(apiKey: string, baseURL?: string);
    getSpecializedPrompt(): string;
    /**
     * Run all tests in the project
     */
    runTests(context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<TestResult>;
    /**
     * Run specific test file(s)
     */
    runSpecificTests(testFiles: string[], context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<TestResult>;
    /**
     * Verify a bug fix by running related tests
     */
    verifyBugFix(bugDescription: string, fixedFiles: string[], context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<TestResult>;
    /**
     * Analyze test coverage
     */
    analyzeCoverage(context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Parse test results from agent output
     */
    private parseTestResult;
    /**
     * Format test result for display
     */
    formatTestResult(result: TestResult): string;
    /**
     * Detect test framework from project
     */
    detectTestFramework(_tools: CodeBuddyTool[], _executeTool: ToolExecutor): Promise<string | null>;
    /**
     * Set the test command to use
     */
    setTestCommand(command: string): void;
    /**
     * Get the test command
     */
    getTestCommand(): string | null;
}
export declare function createTesterAgent(apiKey: string, baseURL?: string): TesterAgent;
