import { CodeBuddyTool } from "../codebuddy/client.js";
import { EventEmitter } from "events";
export interface StepResult {
    step: ArchitectStep;
    response: unknown;
    success: boolean;
}
export interface ArchitectProposal {
    summary: string;
    steps: ArchitectStep[];
    files: string[];
    risks: string[];
    estimatedChanges: number;
}
export interface ArchitectStep {
    order: number;
    description: string;
    type: "create" | "edit" | "delete" | "command" | "test";
    target?: string;
    details?: string;
}
export interface ArchitectConfig {
    architectModel?: string;
    editorModel?: string;
    autoApprove?: boolean;
    maxSteps?: number;
}
export declare class ArchitectMode extends EventEmitter {
    private architectClient;
    private editorClient;
    private config;
    private currentProposal;
    private isActive;
    constructor(apiKey: string, baseURL?: string, config?: ArchitectConfig);
    analyze(request: string, context?: string): Promise<ArchitectProposal>;
    implement(proposal?: ArchitectProposal, tools?: CodeBuddyTool[], onStepComplete?: (step: ArchitectStep, result: StepResult) => void): Promise<{
        success: boolean;
        results: StepResult[];
    }>;
    private buildStepPrompt;
    analyzeAndImplement(request: string, context?: string, tools?: CodeBuddyTool[], onApproval?: (proposal: ArchitectProposal) => Promise<boolean>): Promise<{
        proposal: ArchitectProposal;
        results: StepResult[];
    }>;
    cancel(): void;
    getCurrentProposal(): ArchitectProposal | null;
    formatProposal(proposal: ArchitectProposal): string;
    private getStepIcon;
}
export declare function createArchitectMode(apiKey: string, baseURL?: string, config?: ArchitectConfig): ArchitectMode;
