export declare function extractTokenUsage(body: Record): { promptTokens?: number; completionTokens?: number; }; /** * 估算 Anthropic 输入 token 数 * Anthropic 未开源 tokenizer,按官方经验值 1 token ≈ 4 字符估算 * 遍历 messages + system + tools 中的所有文本内容 */ export declare function estimateInputTokens(body: Record): number; /** * 带超时的 ReadableStream 读取 * * ReadableStreamDefaultReader.read() 无原生超时参数, * 上游在流中间停止发送数据(但未关闭连接)时,read() 会无限挂起。 * 用 Promise.race 给每次 read 加超时保护,超时后抛出 TimeoutError。 * * @param reader - ReadableStream 的 reader * @param timeoutMs - 单次 read 最长等待毫秒数 */ export declare function readWithTimeout(reader: ReadableStreamDefaultReader, timeoutMs: number): Promise>; /** * 带大小限制的响应体读取 * * 原生 response.text() 无大小限制,上游异常返回超大 body 会吃掉内存。 * 通过流式读取 + 字节计数,超过 maxSize 时中止并抛错。 */ export declare function readBodyWithLimit(response: Response, maxSize?: number): Promise; /** * 从请求中提取白名单 headers,用于转发到上游 * * 三个 handler(OpenAI/Anthropic/Ollama)都需要从客户端请求中 * 提取 Authorization 等关键 headers 转发给上游,此函数统一该逻辑。 */ export declare function extractUpstreamHeaders(reqHeaders: Record, allowedHeaders: readonly string[]): Record; /** * 格式化 token 数量为可读字符串 */ export declare function fmtTokens(n: number): string; //# sourceMappingURL=util.d.ts.map