/**
 * Max Tokens中间件 - 集成到请求处理流程
 * Project Owner: Jason Zhang
 *
 * 职责：
 * 1. 预处理检查：发送前验证token使用
 * 2. 错误拦截：捕获max_tokens错误并智能处理
 * 3. 用户反馈：提供清晰的处理状态和选择
 * 4. 安全控制：防止无限重试和上下文丢失
 */
import { BaseRequest } from '@/types';
export interface MaxTokensMiddlewareOptions {
    enablePreflightCheck: boolean;
    enableAutoRetry: boolean;
    maxRetryAttempts: number;
    userInteractionMode: 'auto' | 'prompt' | 'disabled';
    tokenSafetyMargin: number;
}
export interface MiddlewareResult {
    action: 'proceed' | 'modified' | 'error' | 'user_required';
    request?: BaseRequest;
    error?: any;
    userPrompt?: {
        message: string;
        options: string[];
        defaultAction: string;
    };
    metadata?: {
        tokensEstimated: number;
        tokensReduced?: number;
        truncationApplied: boolean;
        retryAttempt: number;
    };
}
export declare class MaxTokensMiddleware {
    private safeHandler;
    private options;
    private processingRequests;
    constructor(options?: Partial<MaxTokensMiddlewareOptions>);
    /**
     * 预处理请求 - 在发送到Provider前检查
     */
    preprocessRequest(request: BaseRequest, maxTokens: number, requestId: string): Promise<MiddlewareResult>;
    /**
     * 后处理响应 - 处理max_tokens错误
     */
    postprocessResponse(originalRequest: BaseRequest, response: any, error: any, requestId: string): Promise<MiddlewareResult>;
    /**
     * 处理SafeHandler的结果
     */
    private processHandlingResult;
    /**
     * 检查是否是max_tokens错误
     */
    private isMaxTokensError;
    /**
     * 创建用户友好的错误
     */
    private createUserFriendlyError;
    /**
     * 估算token数量
     */
    private estimateTokens;
    /**
     * 清理处理状态
     */
    cleanup(): void;
    /**
     * 获取统计信息
     */
    getStats(): {
        activeRequests: number;
        safeHandlerStats: {
            activeRetries: number;
            totalRequestsHandled: number;
            averageRetryRate: number;
        };
    };
}
export default MaxTokensMiddleware;
//# sourceMappingURL=max-tokens-middleware.d.ts.map