/**
 * Plan Mode Service
 *
 * Provides structured planning capabilities for complex tasks.
 * Implements a phased workflow: analysis → strategy → presentation → approval
 *
 * Based on hurry-mode's plan mode feature for Claude Code parity.
 */
import { ExecutionPlan, PlanStep, PlanPhase } from "./plan-types.js";
export * from "./plan-types.js";
/**
 * Plan generation options
 */
export interface PlanGeneratorOptions {
    maxSteps?: number;
    minComplexity?: number;
    maxComplexity?: number;
    includeTests?: boolean;
    includeDocumentation?: boolean;
    dryRun?: boolean;
    verbose?: boolean;
}
/**
 * Plan Generator Service
 */
export declare class PlanGenerator {
    private options;
    private currentPlan;
    constructor(options?: Partial<PlanGeneratorOptions>);
    /**
     * Create a new execution plan
     */
    createPlan(title: string, goal: string, description: string): ExecutionPlan;
    /**
     * Add a step to the current plan
     */
    addStep(step: Omit<PlanStep, "id" | "status">): PlanStep;
    /**
     * Add multiple steps at once
     */
    addSteps(steps: Omit<PlanStep, "id" | "status">[]): PlanStep[];
    /**
     * Remove a step from the plan
     */
    removeStep(stepId: string): boolean;
    /**
     * Reorder steps in the plan
     */
    reorderSteps(stepIds: string[]): boolean;
    /**
     * Transition the plan to a new phase
     */
    transitionPhase(newPhase: PlanPhase): boolean;
    /**
     * Update step status
     */
    updateStepStatus(stepId: string, status: PlanStep["status"], notes?: string): boolean;
    /**
     * Get the next executable step
     */
    getNextStep(): PlanStep | null;
    /**
     * Get all steps that can be executed in parallel
     */
    getParallelSteps(): PlanStep[];
    /**
     * Validate the plan for issues
     */
    validate(): {
        valid: boolean;
        issues: string[];
    };
    /**
     * Get the current plan
     */
    getPlan(): ExecutionPlan | null;
    /**
     * Load a plan from JSON
     */
    loadPlan(json: string): ExecutionPlan;
    /**
     * Export the plan to JSON
     */
    exportPlan(): string;
    /**
     * Save the plan to a file
     */
    savePlan(filePath: string): Promise<void>;
    /**
     * Load a plan from a file
     */
    loadPlanFromFile(filePath: string): Promise<ExecutionPlan>;
    /**
     * Generate a summary of the plan
     */
    generateSummary(): string;
    /**
     * Generate a Markdown representation of the plan
     */
    generateMarkdown(): string;
    /**
     * Update the analysis after plan changes
     */
    private updateAnalysis;
    /**
     * Get status icon for a step
     */
    private getStatusIcon;
    /**
     * Generate a unique ID
     */
    private generateId;
}
/**
 * Create a plan generator instance
 */
export declare function createPlanGenerator(options?: Partial<PlanGeneratorOptions>): PlanGenerator;
export declare function getPlanGenerator(): PlanGenerator;
export declare function resetPlanGenerator(): void;
