import { TokenCountResult, SupportedModel, ModelConfig } from './types';
import { OpenRouterClient } from './openrouter-client';
/**
 * Token counting utility for various AI models
 */
export declare class TokenCounter {
    private static readonly MODEL_CONFIGS;
    private static client;
    private static tokenizationService;
    /**
     * Set the OpenRouter client for real tokenization
     */
    static setClient(client: OpenRouterClient): void;
    /**
     * Create client from API key
     */
    static setApiKey(apiKey: string): void;
    /**
     * Get accurate token count using OpenRouter's tokenization service
     */
    static getTokenCount(text: string, model?: SupportedModel): Promise<TokenCountResult>;
    /**
     * Get detailed token count with native tokenizer information
     */
    static getDetailedTokenCount(text: string, model?: SupportedModel): Promise<TokenCountResult & {
        generationId?: string;
        nativeTokens?: number;
    }>;
    /**
     * Compare estimation accuracy against real API tokenization
     */
    static compareTokenCounts(text: string, model?: SupportedModel): Promise<{
        estimated: TokenCountResult;
        actual: TokenCountResult;
        difference: number;
        accuracy: number;
    }>;
    /**
     * Estimate token count for a given text (fallback method)
     * This is a rough estimation based on character count and word patterns
     */
    static estimateTokens(text: string, model?: SupportedModel): TokenCountResult;
    /**
     * Check if text fits within model's token limit
     */
    static fitsInModel(text: string, model: SupportedModel): boolean;
    /**
     * Get model configuration
     */
    static getModelConfig(model: SupportedModel): ModelConfig;
    /**
     * Get all supported models
     */
    static getSupportedModels(): SupportedModel[];
    /**
     * Find the best model for a given text length
     */
    static recommendModel(text: string): {
        model: SupportedModel;
        reason: string;
    };
    /**
     * Calculate cost for processing text with a specific model
     */
    static calculateCost(text: string, model: SupportedModel): number;
}
//# sourceMappingURL=token-counter.d.ts.map