/**
 * 工具/轮数预算的「进度门控续跑」策略（A）。
 *
 * 默认工具预算(DEFAULT_TOOL_BUDGET)和轮数预算(DEFAULT_MAX_ROUNDS)对「建一个完整 app/游戏」这类
 * 任务偏低,撞上就被迫收尾、任务半成品。本策略把预算从「写死的硬停」改成「软检查点 + 可续跑」:
 * 预算耗尽时,若本轮窗口**确有进度**(产出了新的成功工具结果)且**没卡在循环里**(AP5 同款:同一文件
 * 反复读),就再续一个窗口;否则停。续跑次数和绝对硬顶(MAX_*_CAP)双重封顶,杜绝失控。
 *
 * 与既有 token 预算续跑(budget-continuation-policy.ts)同构,只是进度信号换成「成功工具调用增量」、
 * 失控信号换成「读循环」。纯函数,便于单测。
 */
/** 一轮 turn 内最多续跑次数 —— 与 token 续跑的 MAX_BUDGET_CONTINUATIONS 对齐。 */
export declare const MAX_TOOL_BUDGET_CONTINUATIONS = 5;
export interface ToolBudgetContinuationInput {
    /** 当前工具调用预算(可能已被前几次续跑抬高过)。 */
    currentToolBudget: number;
    /** 当前轮数预算。 */
    currentRoundBudget: number;
    /** 工具调用绝对硬顶(失控兜底)。 */
    toolHardCap: number;
    /** 轮数绝对硬顶。 */
    roundHardCap: number;
    /** 已续跑次数。 */
    continuationCount: number;
    /** 上个检查点以来新增的「成功且非空」工具结果数 —— 进度信号。 */
    successfulSinceLastCheck: number;
    /** 文件读取计数(AP5 读循环检测,失控信号)。 */
    fileReadCounts: ReadonlyMap<string, number>;
    /** 每次续跑给工具预算加的窗口(= DEFAULT_TOOL_BUDGET)。 */
    windowTools: number;
    /** 每次续跑给轮数预算加的窗口(= DEFAULT_MAX_ROUNDS)。 */
    windowRounds: number;
}
export interface ToolBudgetContinuationDecision {
    nextToolBudget: number;
    nextRoundBudget: number;
    continuationCount: number;
}
/**
 * 决定是否续跑。返回 null = 不续(应停下并诚实收尾);返回 decision = 续跑(把预算抬到 next*)。
 *
 * 停的条件(任一):①续跑次数用满;②两个预算都已到硬顶;③本窗口零进度(没新增成功结果);
 * ④卡在读循环。其余情况续跑,但每个预算都不超过各自硬顶。
 */
export declare function resolveToolBudgetContinuation(input: ToolBudgetContinuationInput): ToolBudgetContinuationDecision | null;
