export interface ComplexityAnalysisResult {
    /** Complexity score from 0 to 1 */
    complexityScore: number;
    /** Whether the request is considered complex (score > threshold) */
    isComplex: boolean;
    /** List of detected tasks */
    detectedTasks: string[];
    /** Sequential indicators found (then, after, next, etc.) */
    sequentialIndicators: string[];
    /** Number of questions detected */
    questionCount: number;
    /** Whether to suggest using todos */
    shouldSuggestTodos: boolean;
    /** The suggestion reminder text if applicable */
    suggestionReminder?: string;
}
export interface ComplexityAnalyzerOptions {
    /** Threshold for considering a task complex (default: 0.5) */
    complexityThreshold?: number;
    /** Minimum number of tasks to suggest todos (default: 3) */
    minTasksForSuggestion?: number;
}
export interface AnalysisStats {
    /** Total number of analyses performed */
    totalAnalyses: number;
    /** Number of complex requests detected */
    complexRequestCount: number;
    /** Number of todo suggestions generated */
    suggestionsGenerated: number;
    /** Average complexity score across all analyses */
    averageComplexityScore: number;
}
/**
 * Service that analyzes user messages to detect multi-step tasks
 * and determine when todo lists should be suggested.
 * @requirement REQ-005.1
 */
export declare class ComplexityAnalyzer {
    private readonly complexityThreshold;
    private readonly minTasksForSuggestion;
    private analysisHistory;
    private readonly sequentialKeywords;
    private readonly taskSeparatorPattern;
    constructor(options?: ComplexityAnalyzerOptions);
    /**
     * Analyzes a user message to determine its complexity and whether
     * it would benefit from using a todo list.
     * @requirement REQ-005.2
     */
    analyzeComplexity(message: string): ComplexityAnalysisResult;
    /**
     * Extracts individual tasks from the message using various patterns.
     * @requirement REQ-005.2
     */
    private extractTasks;
    /**
     * Extracts file references from the message.
     * NOTE: No longer used for complexity counting to reduce false positives,
     * but kept in case needed for future functionality.
     */
    /**
     * Finds sequential indicator keywords in the message.
     * @requirement REQ-005.2
     */
    private findSequentialIndicators;
    /**
     * Counts the number of questions in the message.
     */
    private countQuestions;
    /**
     * Determines if a message is narrative-heavy enough to count as complex.
     */
    private isNarrativeComplex;
    private extractListTaskFromLine;
    private isAllDigits;
    private normalizeTaskText;
    private isWhitespaceChar;
    /**
     * Calculates a complexity score based on various factors.
     */
    private calculateComplexityScore;
    /**
     * Generates a suggestion reminder for using todos.
     * @requirement REQ-005.3
     */
    private generateSuggestionReminder;
    /**
     * Creates an empty result for edge cases.
     */
    private createEmptyResult;
    /**
     * Gets the current complexity threshold.
     */
    getComplexityThreshold(): number;
    /**
     * Gets analysis statistics.
     * @requirement REQ-005.4
     */
    getAnalysisStats(): AnalysisStats;
    /**
     * Resets the analysis history.
     */
    reset(): void;
}
