/**
 * Model Selection Utilities
 *
 * Intelligent model selection for SpecWeave tasks based on complexity,
 * instruction detail, and task characteristics.
 *
 * Strategy (Opus 4.6 Default):
 * - Haiku: Simple/cheap operations, translations, mechanical work
 * - Opus: Default for all complex work, architecture, creative problem-solving
 */
export type ModelTier = 'haiku' | 'sonnet' | 'opus';
export interface Task {
    id: string;
    content: string;
    description?: string;
    acceptanceCriteria?: string[];
    specReference?: string;
    planReference?: string;
    priority?: 'P1' | 'P2' | 'P3';
    estimatedHours?: number;
}
export interface DetectionResult {
    model: ModelTier;
    confidence: number;
    reasoning: string;
}
/**
 * Detects the optimal model for a given task
 *
 * @param task - The task to analyze
 * @param options - Additional context (spec detail level, etc.)
 * @returns Detection result with model recommendation and reasoning
 */
export declare function detectModelForTask(task: Task, options?: {
    specDetailLevel?: number;
    hasDetailedPlan?: boolean;
    isArchitectural?: boolean;
}): DetectionResult;
/**
 * Batch detect models for multiple tasks
 * Useful when generating tasks.md from plan.md
 */
export declare function detectModelsForTasks(tasks: Task[], options?: {
    specDetailLevel?: number;
    hasDetailedPlan?: boolean;
}): Map<string, DetectionResult>;
/**
 * Format model hint for tasks.md
 *
 * @param model - The model tier
 * @returns Formatted string for inclusion in tasks.md
 */
export declare function formatModelHint(model: ModelTier): string;
/**
 * Parse model hint from tasks.md line
 *
 * @param line - A line from tasks.md
 * @returns Detected model or null
 */
export declare function parseModelHint(line: string): ModelTier | null;
/**
 * Cost estimation utilities
 */
export declare function estimateTaskCost(model: ModelTier, estimatedTokens?: number): number;
/**
 * Calculate total cost savings when using smart model selection
 */
export declare function calculateCostSavings(tasksWithModels: Map<string, ModelTier>, averageTokensPerTask?: number): {
    optimizedCost: number;
    allSonnetCost: number;
    savings: number;
    savingsPercent: number;
};
//# sourceMappingURL=model-selection.d.ts.map