/**
 * Token Limit Constants for NeuroLink
 *
 * Centralized token configuration to replace magic numbers throughout the codebase.
 * Includes model-specific token limits, use-case optimized limits, and provider constraints.
 *
 * @fileoverview Token constants for AI model interactions
 * @author NeuroLink Team
 * @version 1.0.0
 */
/**
 * Standard token limit categories
 * General-purpose token limits for different use cases
 */
export declare const TOKEN_LIMITS: {
    /** Conservative limits (reliable across all models) */
    readonly CONSERVATIVE: 4096;
    /** Standard limits (most modern models) */
    readonly STANDARD: 8192;
    /** High-capacity limits (premium models) */
    readonly HIGH_CAPACITY: 16384;
    /** Large context windows (specialized models) */
    readonly LARGE_CONTEXT: 100000;
    /** Ultra-large context windows (latest models) */
    readonly ULTRA_LARGE_CONTEXT: 200000;
    /** Maximum context for any model */
    readonly MAXIMUM_CONTEXT: 2097152;
};
/**
 * Use-case specific token limits
 * Optimized token limits for different application scenarios
 */
export declare const USE_CASE_TOKENS: {
    /** Quick evaluation tasks */
    readonly EVALUATION: 500;
    /** Analysis operations */
    readonly ANALYSIS: 800;
    /** Summary generation */
    readonly SUMMARY: 1000;
    /** Documentation generation */
    readonly DOCUMENTATION: 12000;
    /** Code generation */
    readonly CODE_GENERATION: 4000;
    /** Creative writing */
    readonly CREATIVE_WRITING: 6000;
    /** Translation tasks */
    readonly TRANSLATION: 2000;
    /** Conversation responses */
    readonly CONVERSATION: 2048;
    /** Technical explanations */
    readonly TECHNICAL_EXPLANATION: 3000;
    /** Research tasks */
    readonly RESEARCH: 8000;
};
/**
 * Provider-specific token limits
 * Safe token limits for each AI provider based on testing
 */
export declare const PROVIDER_TOKEN_LIMITS: {
    /** Anthropic model limits */
    readonly ANTHROPIC: {
        readonly "claude-sonnet-4-5-20250929": 8192;
        readonly "claude-opus-4-5-20251101": 8192;
        readonly "claude-haiku-4-5-20251001": 8192;
        readonly "claude-3-5-sonnet-20241022": 4096;
        readonly "claude-3-5-haiku-20241022": 4096;
        readonly "claude-3-haiku-20240307": 4096;
        readonly "claude-3-opus-20240229": 4096;
        readonly "claude-3-sonnet-20240229": 4096;
        readonly default: 4096;
    };
    /** OpenAI model limits */
    readonly OPENAI: {
        readonly "gpt-5.4": 128000;
        readonly "gpt-5.4-mini": 128000;
        readonly "gpt-5.4-nano": 128000;
        readonly "gpt-5.4-pro": 128000;
        readonly "gpt-4o": 16384;
        readonly "gpt-4o-mini": 16384;
        readonly "gpt-3.5-turbo": 4096;
        readonly "gpt-4": 8192;
        readonly "gpt-4-turbo": 4096;
        readonly "o1-preview": 8192;
        readonly "o1-mini": 8192;
        readonly default: 8192;
    };
    /** Google AI model limits */
    readonly GOOGLE_AI: {
        readonly "gemini-3.1-pro-preview": 8192;
        readonly "gemini-3.1-flash-lite-preview": 65536;
        readonly "gemini-3.1-flash-image-preview": 8192;
        readonly "gemini-3.1-pro-preview-customtools": 8192;
        readonly "gemini-3-flash-preview": 65536;
        readonly "gemini-3-pro-image-preview": 8192;
        /** @deprecated SHUT DOWN March 9, 2026. Migrate to gemini-3.1-pro-preview. */
        readonly "gemini-3-pro-preview": 8192;
        readonly "gemini-2.5-pro": 8192;
        readonly "gemini-2.5-flash": 8192;
        readonly "gemini-2.5-flash-lite": 8192;
        readonly "gemini-2.0-flash-001": 8192;
        readonly "gemini-2.0-flash-lite": 8192;
        readonly "gemini-1.5-pro": 8192;
        readonly "gemini-1.5-flash": 8192;
        readonly "gemini-1.5-flash-lite": 8192;
        readonly default: 4096;
    };
    /** Google Vertex AI model limits */
    readonly VERTEX: {
        readonly "gemini-3.1-pro-preview": 8192;
        readonly "gemini-3.1-flash-lite-preview": 65536;
        readonly "gemini-3.1-flash-image-preview": 8192;
        readonly "gemini-3.1-pro-preview-customtools": 8192;
        readonly "gemini-3-flash-preview": 65536;
        readonly "gemini-3-pro-image-preview": 8192;
        /** @deprecated SHUT DOWN March 9, 2026. Migrate to gemini-3.1-pro-preview. */
        readonly "gemini-3-pro-preview": 8192;
        readonly "gemini-2.5-pro": 8192;
        readonly "gemini-2.5-flash": 8192;
        readonly "gemini-2.5-flash-lite": 8192;
        readonly "gemini-2.0-flash-001": 8192;
        readonly "gemini-2.0-flash-lite": 8192;
        readonly "gemini-1.5-pro": 8192;
        readonly "gemini-1.5-flash": 8192;
        readonly "claude-sonnet-4-5@20250929": 8192;
        readonly "claude-opus-4-5@20251124": 8192;
        readonly "claude-haiku-4-5@20251001": 8192;
        readonly "claude-sonnet-4@20250514": 4096;
        readonly "claude-opus-4@20250514": 4096;
        readonly "claude-3-5-sonnet-20241022": 4096;
        readonly "claude-3-5-haiku-20241022": 4096;
        readonly "claude-3-sonnet-20240229": 4096;
        readonly "claude-3-haiku-20240307": 4096;
        readonly "claude-3-opus-20240229": 4096;
        readonly default: 4096;
    };
    /** AWS Bedrock model limits */
    readonly BEDROCK: {
        readonly "anthropic.claude-sonnet-4-5-20250929-v1:0": 8192;
        readonly "anthropic.claude-opus-4-5-20251101-v1:0": 8192;
        readonly "anthropic.claude-haiku-4-5-20251001-v1:0": 8192;
        readonly "us.anthropic.claude-3-7-sonnet-20250219-v1:0": 4096;
        readonly "anthropic.claude-3-5-sonnet-20241022-v1:0": 4096;
        readonly "anthropic.claude-3-5-haiku-20241022-v1:0": 4096;
        readonly "anthropic.claude-3-sonnet-20240229-v1:0": 4096;
        readonly "anthropic.claude-3-haiku-20240307-v1:0": 4096;
        readonly "anthropic.claude-3-opus-20240229-v1:0": 4096;
        readonly default: 4096;
    };
    /** Azure OpenAI model limits */
    readonly AZURE: {
        readonly "gpt-4o": 16384;
        readonly "gpt-4o-mini": 16384;
        readonly "gpt-4": 8192;
        readonly "gpt-35-turbo": 4096;
        readonly default: 8192;
    };
    /** Ollama model limits (local) */
    readonly OLLAMA: {
        readonly "llama3.2:latest": 8192;
        readonly llama2: 4096;
        readonly codellama: 8192;
        readonly mistral: 4096;
        readonly default: 8192;
    };
    /** Hugging Face model limits */
    readonly HUGGINGFACE: {
        readonly default: 2048;
    };
    /** Mistral model limits */
    readonly MISTRAL: {
        readonly "mistral-small-latest": 4096;
        readonly "mistral-medium-latest": 4096;
        readonly "mistral-large-latest": 8192;
        readonly default: 4096;
    };
    /** LiteLLM proxy limits */
    readonly LITELLM: {
        readonly default: 4096;
    };
    /** Safe default across all providers */
    readonly DEFAULT: 4096;
};
/**
 * Context window sizes for different models
 * Maximum input token limits (separate from output limits)
 */
export declare const CONTEXT_WINDOWS: {
    /** Small context models */
    readonly SMALL: 4096;
    /** Medium context models */
    readonly MEDIUM: 32768;
    /** Large context models */
    readonly LARGE: 128000;
    /** Ultra-large context models */
    readonly ULTRA_LARGE: 1048576;
    /** Maximum theoretical context */
    readonly MAXIMUM: 2097152;
};
/**
 * Model-specific token limits with input/output breakdown
 * For models that require explicit input and output token limits
 */
export declare const MODEL_TOKEN_LIMITS: {
    /** Gemini 3.1 Series */
    readonly "gemini-3.1-pro-preview": {
        readonly input: 1048576;
        readonly output: 65536;
    };
    readonly "gemini-3.1-flash-lite-preview": {
        readonly input: 1048576;
        readonly output: 65536;
    };
    readonly "gemini-3.1-flash-image-preview": {
        readonly input: 1048576;
        readonly output: 8192;
    };
    readonly "gemini-3.1-pro-preview-customtools": {
        readonly input: 1048576;
        readonly output: 65536;
    };
    /** Gemini 3 Flash Series */
    readonly "gemini-3-flash-preview": {
        readonly input: 1000000;
        readonly output: 65536;
    };
};
/**
 * Token estimation utilities
 * Rough estimates for token counting without full tokenization
 */
export declare const TOKEN_ESTIMATION: {
    /** Average characters per token (English) */
    readonly CHARS_PER_TOKEN: 4;
    /** Average words per token */
    readonly WORDS_PER_TOKEN: 0.75;
    /** Code characters per token (more compact) */
    readonly CODE_CHARS_PER_TOKEN: 3;
    /** Safety margin for token estimates */
    readonly SAFETY_MARGIN: 0.8;
};
/**
 * Token utility functions
 */
export declare const TokenUtils: {
    /**
     * Get safe token limit for a specific provider and model
     * @param provider - Provider name
     * @param model - Model name (optional)
     * @returns Safe token limit for the provider/model
     */
    readonly getProviderTokenLimit: (provider: string, model?: string) => number;
    /**
     * Get token limit for specific use case
     * @param useCase - Use case type
     * @returns Appropriate token limit
     */
    readonly getUseCaseTokenLimit: (useCase: keyof typeof USE_CASE_TOKENS) => number;
    /**
     * Estimate token count from text
     * @param text - Input text
     * @param isCode - Whether the text is code (more compact tokenization)
     * @returns Estimated token count
     */
    readonly estimateTokenCount: (text: string, isCode?: boolean) => number;
    /**
     * Check if text exceeds token limit
     * @param text - Input text
     * @param limit - Token limit to check against
     * @param isCode - Whether the text is code
     * @returns True if text exceeds limit
     */
    readonly exceedsTokenLimit: (text: string, limit: number, isCode?: boolean) => boolean;
    /**
     * Get appropriate token limit category
     * @param estimatedTokens - Estimated token count
     * @returns Token limit category
     */
    readonly getTokenLimitCategory: (estimatedTokens: number) => keyof typeof TOKEN_LIMITS;
    /**
     * Truncate text to fit within token limit
     * @param text - Input text
     * @param tokenLimit - Maximum tokens allowed
     * @param isCode - Whether the text is code
     * @returns Truncated text
     */
    readonly truncateToTokenLimit: (text: string, tokenLimit: number, isCode?: boolean) => string;
};
export declare const DEFAULT_MAX_TOKENS: 8192;
export declare const DEFAULT_EVALUATION_MAX_TOKENS: 500;
export declare const DEFAULT_ANALYSIS_MAX_TOKENS: 800;
export declare const DEFAULT_DOCUMENTATION_MAX_TOKENS: 12000;
export declare const ANTHROPIC_SAFE: 4096;
export declare const OPENAI_STANDARD: 8192;
export declare const GOOGLE_STANDARD: 4096;
