/**
 * src/compute/difficulty-estimator.ts
 *
 * Deterministic task-difficulty classifier + strategy recommender.
 *
 * NOT an LLM call — pure feature extraction + rule-based classification.
 * Routes input difficulty → recommended compute strategy.
 *
 * @experimental Public-experimental API per `contract-stability.md` (sprint-582).
 */
export type DifficultyClass = "simple" | "standard" | "complex" | "reasoning";
export interface TaskFeatures {
    /** Character count of input. */
    inputLength: number;
    /** Input contains "step", "then", or "first…then" pattern. */
    hasMultipleSteps: boolean;
    /** Input contains "why", "explain", "reason", "prove", "deduce". */
    requiresReasoning: boolean;
    /** Input contains "create", "generate", "design", "imagine". */
    requiresCreativity: boolean;
    /** Input contains digits or math operators. */
    hasNumerics: boolean;
    /** Input references multiple entities ("A and B", "compare"). */
    hasCrossReference: boolean;
    /** Length of optional context/system prompt. */
    contextLength: number;
}
/**
 * Extract task features from input + optional context.
 * Deterministic, side-effect free.
 */
export declare function extractFeatures(input: string, context?: string): TaskFeatures;
/**
 * Classify difficulty from task features.
 *
 * Decision tree (most specific first):
 *   - requiresReasoning → "reasoning"
 *   - inputLength > 500 OR hasMultipleSteps OR requiresCreativity → "complex"
 *   - inputLength in [100, 500] OR hasNumerics → "standard"
 *   - else → "simple"
 */
export declare function estimateDifficulty(features: TaskFeatures): DifficultyClass;
/**
 * Recommend a compute strategy for a given difficulty class.
 *
 * Map (per Sprint A bench results + Sprint-582 spec):
 *   simple     → single-shot
 *   standard   → bon-mav
 *   complex    → tree-of-thoughts
 *   reasoning  → mixture-of-agents
 */
export declare function recommendStrategy(difficulty: DifficultyClass): string;
//# sourceMappingURL=difficulty-estimator.d.ts.map