A fill whose ALL-IN cost fits a budget — expiry_market::mint_exact_cost computed
client-side, with the same lot search over the same cost function, so the answer is the
quantity that entrypoint would size and the cost it would debit.
Without it a "spend exactly $X" flow has to guess: every fee is charged ON TOP of the
premium, so the caller subtracts an estimated fee load, pads it against an abort, and
systematically underspends. Here the whole search runs locally; submit the all-in budget
through tx.mintCost on deployments carrying mint_exact_cost.
Sizing also respects the fill's maximum payout and the 32-bit lot cap; either can leave
substantial budget unspent. When only the budget binds, one more lot would exceed it.
If the budget fill exceeds its maximum payout, the contract's step-down is best effort:
rounding can make it miss a larger admissible fill, including one meeting minQuantity.
The chain caps the budget at the account balance first (MintBudgetInputs.accountBalance).
A fill whose ALL-IN cost fits a budget —
expiry_market::mint_exact_costcomputed client-side, with the same lot search over the same cost function, so the answer is the quantity that entrypoint would size and the cost it would debit.Without it a "spend exactly $X" flow has to guess: every fee is charged ON TOP of the premium, so the caller subtracts an estimated fee load, pads it against an abort, and systematically underspends. Here the whole search runs locally; submit the all-in budget through
tx.mintCoston deployments carryingmint_exact_cost.Sizing also respects the fill's maximum payout and the 32-bit lot cap; either can leave substantial budget unspent. When only the budget binds, one more lot would exceed it. If the budget fill exceeds its maximum payout, the contract's step-down is best effort: rounding can make it miss a larger admissible fill, including one meeting
minQuantity. The chain caps the budget at the account balance first (MintBudgetInputs.accountBalance).