/**
 * 安全的Max Tokens处理器 - 避免无限重试风险
 * Project Owner: Jason Zhang
 *
 * 改进方案：
 * 1. 预处理检查：发送前估算token，超限时主动截断
 * 2. 渐进式截断：多级截断策略，确保成功
 * 3. 用户控制：返回选项让用户决定是否重试
 * 4. 透明化：清晰告知用户发生了什么
 */
import { BaseRequest } from '@/types';
import { TruncationResult } from './max-tokens-error-handling-module';
export interface SafeHandlingResult {
    action: 'proceed' | 'truncate' | 'user_choice' | 'abort';
    truncatedRequest?: BaseRequest;
    warning?: {
        type: 'token_limit_approaching' | 'truncation_required' | 'context_loss_risk';
        message: string;
        estimatedTokens: number;
        maxTokens: number;
        truncationDetails?: TruncationResult;
    };
    userChoices?: {
        autoTruncate: boolean;
        manualEdit: boolean;
        useSimplified: boolean;
    };
}
export interface SafeHandlingOptions {
    enablePreemptiveCheck: boolean;
    maxRetryAttempts: number;
    tokenSafetyMargin: number;
    userChoiceTimeout: number;
    enableProgressiveReduction: boolean;
}
export declare class SafeMaxTokensHandler {
    private handlingModule;
    private options;
    private retryCounters;
    constructor(options?: Partial<SafeHandlingOptions>);
    /**
     * 预发送检查 - 在发送请求前检查token使用
     */
    preflightCheck(request: BaseRequest, maxTokens: number, requestId: string): Promise<SafeHandlingResult>;
    /**
     * 响应时错误处理 - 收到max_tokens错误后的处理
     */
    handleMaxTokensError(originalRequest: BaseRequest, errorResponse: any, requestId: string): Promise<SafeHandlingResult>;
    /**
     * 渐进式截断 - 多级截断策略
     */
    private performProgressiveTruncation;
    /**
     * 估算token数量
     */
    private estimateTokens;
    /**
     * 从错误响应估算最大token数
     */
    private estimateMaxTokensFromError;
    /**
     * 清理请求的重试计数器
     */
    clearRetryCounter(requestId: string): void;
    /**
     * 获取统计信息
     */
    getStats(): {
        activeRetries: number;
        totalRequestsHandled: number;
        averageRetryRate: number;
    };
}
export default SafeMaxTokensHandler;
//# sourceMappingURL=safe-max-tokens-handler.d.ts.map