/**
 * iterationBudget — how many actions a turn has left, computed in ONE place.
 *
 * Pattern: One pure function. No imports, no state, no clock.
 * Role:    Leaf. Three layers ask this question and used to answer it three
 *          times: the cache decision (`CachePolicyContext.iterationsRemaining`),
 *          the request assembly (`CacheStrategy.prepareRequest`), and — since
 *          9.57.0 — the injection engine, which puts the number in front of
 *          the MODEL.
 * Emits:   N/A.
 *
 * Three copies of `Math.max(0, max - iteration)` were three chances to be off
 * by one, and the one that matters most is the new one: a model told "5 remain"
 * that actually has 4 will plan a step it cannot take. So there is one
 * implementation and every caller uses it.
 *
 * `Math.max(0, …)` rather than a raw subtraction because `iteration` legally
 * exceeds `maxIterations` by one: the out-of-budget wrap-up call (9.56.0) runs
 * at `max + 1`. "0 remain" is the truth there. A negative count would be
 * arithmetic leaking into a sentence a person reads.
 */
/**
 * Actions left in this turn — never negative.
 *
 * @param maxIterations the turn's action cap
 * @param iteration     the action about to be taken (1-based)
 */
export declare function iterationsRemainingOf(maxIterations: number, iteration: number): number;
