/**
 * Task Planner
 *
 * Tier 1 of the Multi-Model Architecture.
 * Responsible for:
 * - Task decomposition into subtasks
 * - Dependency analysis
 * - Model assignment for each subtask
 * - Quality assurance routing
 */
import { ExecutionPlan, Subtask, MultiModelConfig } from './types.js';
import { ModelRouter } from './router.js';
/**
 * Map a Subtask to the canonical expert droids that should engage with it.
 * Read by the executor when fanning out parallel reviews. Pure function so
 * it can be tested independently.
 */
export declare function suggestedDroidsForSubtask(sub: Subtask, taskDescription: string): string[];
/**
 * Planner configuration options
 */
export interface PlannerOptions {
    maxSubtasks?: number;
    maxDepth?: number;
    enableParallelization?: boolean;
    estimateTokenBudget?: boolean;
    enableAutoValidation?: boolean;
    maxPlanningTokens?: number;
}
/**
 * Task Planner - decomposes tasks and creates execution plans
 */
export declare class TaskPlanner {
    private router;
    readonly config: MultiModelConfig;
    private options;
    private validator;
    constructor(router: ModelRouter, config: MultiModelConfig, options?: PlannerOptions);
    /**
     * Create an execution plan for a task with automatic validation
     */
    createPlan(taskDescription: string): Promise<ExecutionPlan>;
    /**
     * Decompose a complex task into subtasks
     */
    private decomposeTask;
    /**
     * Create a single subtask for simple tasks
     */
    private createSingleSubtask;
    /**
     * Analyze dependencies between subtasks
     */
    private analyzeDependencies;
    /**
     * Assign models to subtasks based on routing
     */
    private assignModels;
    /**
     * Estimate total cost for the plan
     */
    private estimateTotalCost;
    /**
     * Estimate duration considering parallelization
     */
    private estimateDuration;
    /**
     * Get execution order respecting dependencies
     */
    getExecutionOrder(plan: ExecutionPlan): string[][];
    /**
     * Visualize the plan as text
     */
    visualizePlan(plan: ExecutionPlan): string;
}
/**
 * Create a planner instance
 */
export declare function createPlanner(router: ModelRouter, config: MultiModelConfig, options?: PlannerOptions): TaskPlanner;
//# sourceMappingURL=planner.d.ts.map