/**
 * Thinking Keywords System
 *
 * Inspired by Claude Code's extended thinking triggers:
 * - "think" -> Standard thinking (4K tokens)
 * - "think harder" / "megathink" -> Deep thinking (10K tokens)
 * - "think even harder" / "ultrathink" -> Exhaustive thinking (32K tokens)
 *
 * Detects keywords in user input and adjusts reasoning depth accordingly.
 */
import { EventEmitter } from 'events';
export type ThinkingLevel = 'none' | 'standard' | 'deep' | 'exhaustive';
export interface ThinkingKeywordConfig {
    level: ThinkingLevel;
    tokenBudget: number;
    systemPromptAddition: string;
    keywords: string[];
    description: string;
}
export interface ThinkingKeywordResult {
    detected: boolean;
    level: ThinkingLevel;
    keyword: string | null;
    cleanedInput: string;
    tokenBudget: number;
    systemPromptAddition: string;
}
export declare class ThinkingKeywordsManager extends EventEmitter {
    private defaultLevel;
    private enabled;
    constructor(options?: {
        defaultLevel?: ThinkingLevel;
        enabled?: boolean;
    });
    /**
     * Detect thinking keywords in user input
     */
    detectThinkingLevel(input: string): ThinkingKeywordResult;
    /**
     * Create result object
     */
    private createResult;
    /**
     * Clean thinking keyword from input
     */
    private cleanInput;
    /**
     * Get configuration for a thinking level
     */
    getConfig(level: ThinkingLevel): ThinkingKeywordConfig;
    /**
     * Get all available levels
     */
    getAvailableLevels(): ThinkingKeywordConfig[];
    /**
     * Check if a level requires extended thinking
     */
    requiresExtendedThinking(level: ThinkingLevel): boolean;
    /**
     * Get token budget for a level
     */
    getTokenBudget(level: ThinkingLevel): number;
    /**
     * Format thinking level for display
     */
    formatLevel(level: ThinkingLevel): string;
    /**
     * Get help text for thinking keywords
     */
    getHelpText(): string;
    /**
     * Enable/disable thinking keyword detection
     */
    setEnabled(enabled: boolean): void;
    /**
     * Set default thinking level
     */
    setDefaultLevel(level: ThinkingLevel): void;
    /**
     * Check if enabled
     */
    isEnabled(): boolean;
    /**
     * Get default level
     */
    getDefaultLevel(): ThinkingLevel;
    /**
     * Dispose and cleanup
     */
    dispose(): void;
}
export declare function getThinkingKeywordsManager(options?: {
    defaultLevel?: ThinkingLevel;
    enabled?: boolean;
}): ThinkingKeywordsManager;
export declare function resetThinkingKeywordsManager(): void;
/**
 * Quick check if input contains any thinking keyword
 */
export declare function hasThinkingKeyword(input: string): boolean;
/**
 * Extract thinking level from input
 */
export declare function extractThinkingLevel(input: string): ThinkingLevel;
