import { ChatMessage } from '../services/openai';
export interface Message {
    type: 'user' | 'ai' | 'system' | 'tool';
    content: any;
    displayContent?: string;
    timestamp: Date;
    tool_calls?: any[];
    tool_call_id?: string;
    name?: string;
}
export interface TokenCalculationResult {
    totalTokens: number;
    maxAllowedTokens: number;
    allowedMessages: Message[];
    droppedCount: number;
    summary?: string;
}
export declare class TokenCalculator {
    private static encoding;
    /**
     * 初始化编码器，优先使用模型特定的编码器，回退到通用编码器
     */
    private static getEncoding;
    /**
     * 计算文本的Token数量
     */
    static calculateTokens(text: string): number;
    /**
     * 计算ChatMessage的Token数量（包括角色信息的开销）
     */
    static calculateChatMessageTokens(message: ChatMessage): number;
    /**
     * 计算多个ChatMessage的总Token数量
     */
    static calculateChatMessagesTokens(messages: ChatMessage[]): number;
    /**
     * 智能选择历史记录，确保不超过上下文Token限制
     * 现在是一个异步函数，以支持智能压缩
     */
    static selectHistoryMessages(messages: Message[], systemMessage: string, targetUsageRatio?: number): Promise<TokenCalculationResult>;
    /**
     * 获取当前配置的上下文使用统计信息
     */
    static getContextUsageStats(messages: Message[], systemMessage: string, targetUsageRatio?: number): Promise<{
        maxContext: number;
        maxAllowed: number;
        used: number;
        percentage: number;
        remaining: number;
        isNearLimit: boolean;
    }>;
    /**
     * 释放编码器资源
     */
    static cleanup(): void;
}
//# sourceMappingURL=token-calculator.d.ts.map