/**
 * Coder Agent
 *
 * Specialized agent for code generation and modification.
 * Responsible for:
 * - Writing new code based on specifications
 * - Modifying existing code
 * - Implementing features
 * - Fixing bugs (in collaboration with Debugger)
 * - Refactoring code
 */
import { BaseAgent } from "../base-agent.js";
import { AgentTask, SharedContext, AgentExecutionResult, ToolExecutor } from "../types.js";
import { CodeBuddyTool } from "../../../codebuddy/client.js";
export declare class CoderAgent extends BaseAgent {
    private codeStyle;
    constructor(apiKey: string, baseURL?: string);
    getSpecializedPrompt(): string;
    /**
     * Generate code for a specific task
     */
    generateCode(task: AgentTask, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Implement a feature based on specification
     */
    implementFeature(specification: string, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Fix a bug based on the debugger's analysis
     */
    fixBug(bugAnalysis: string, suggestedFix: string, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Refactor code based on reviewer feedback
     */
    refactorCode(feedback: string, targetFiles: string[], context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Add tests for existing code
     */
    writeTests(targetCode: string, testFramework: string, context: SharedContext, tools: CodeBuddyTool[], executeTool: ToolExecutor): Promise<AgentExecutionResult>;
    /**
     * Learn the coding style from existing code
     */
    learnCodeStyle(filePath: string, _tools: CodeBuddyTool[], _executeTool: ToolExecutor): Promise<void>;
    /**
     * Get the learned code style
     */
    getCodeStyle(): Map<string, string>;
}
export declare function createCoderAgent(apiKey: string, baseURL?: string): CoderAgent;
