import { ToolResult } from "../types/index.js";
export interface TestGeneratorConfig {
    framework?: "jest" | "vitest" | "mocha" | "pytest" | "auto";
    style?: "unit" | "integration" | "e2e";
    coverage?: boolean;
    outputDir?: string;
    mockStrategy?: "auto" | "manual" | "none";
}
export interface TestTemplate {
    name: string;
    language: string;
    framework: string;
    template: string;
}
/**
 * Test Generator Tool - Generate and run tests
 */
export declare class TestGeneratorTool {
    private projectRoot;
    constructor(projectRoot?: string);
    /**
     * Detect test framework from project
     */
    detectFramework(): Promise<string>;
    /**
     * Get test command for framework
     */
    getTestCommand(framework: string, coverage?: boolean): string;
    /**
     * Generate test file path
     */
    getTestFilePath(sourceFile: string, framework: string): Promise<string>;
    /**
     * Analyze source file for testable exports
     */
    analyzeSourceFile(filePath: string): Promise<{
        exports: string[];
        functions: string[];
        classes: string[];
    }>;
    /**
     * Generate test scaffold
     */
    generateTestScaffold(sourceFile: string, config?: TestGeneratorConfig): Promise<{
        testFile: string;
        content: string;
    }>;
    /**
     * Run tests
     */
    runTests(config?: TestGeneratorConfig): Promise<ToolResult>;
    /**
     * Run tests for specific file
     */
    runTestsForFile(testFile: string, config?: TestGeneratorConfig): Promise<ToolResult>;
    /**
     * Get coverage report
     */
    getCoverageReport(): Promise<ToolResult>;
    /**
     * Format as tool result
     */
    formatToolResult(result: {
        testFile: string;
        content: string;
    }): ToolResult;
}
export declare const testGeneratorToolDefinition: {
    name: string;
    description: string;
    parameters: {
        type: string;
        properties: {
            action: {
                type: string;
                enum: string[];
                description: string;
            };
            target: {
                type: string;
                description: string;
            };
            framework: {
                type: string;
                enum: string[];
                description: string;
            };
            coverage: {
                type: string;
                description: string;
            };
        };
        required: string[];
    };
};
