Monaco Protocol SDK v1.0.24
This release corrects three isolated-margin collateral behaviors. The changes are server-side and apply to every client — TypeScript, Rust REST, and Rust gRPC — so no SDK upgrade is required to receive them. One new validation error is worth handling if you reduce position margin. It rolls up the consumer-facing changes shipped since v1.0.21 (v1.0.22 and v1.0.23 were backend-only).Fixed
Isolated-margin partial-fill collateral returns to the parent account
Cancelling (or IOC-releasing) the unfilled remainder of a partially filled isolated-margin limit order now returns the excess auto-funded risk-bucket collateral to the parent margin account’s free collateral immediately. Previously the full order-sized allocation stayed locked in the bucket until the position closed, which inflated bucket equity and deferred liquidation beyond what the isolated margin implied.reducePositionMargin rejects below-maintenance reductions
reducePositionMargin (POST /api/v1/positions/{positionId}/margin/reduce; gRPC PositionsService.ReducePositionMargin) now returns 400 / INVALID_ARGUMENT when a reduction would take the position’s margin below its maintenance requirement. The error includes the maintenance floor, the resulting post-reduction margin, and the maximum amount you can remove. Previously margin could be reduced all the way to zero, after which the engine silently re-margined the position at the pair’s maximum leverage.
If you call reduce-margin, add handling for this rejection — it is the only client-visible action item in this release.
newIsolatedMargin reports post-transfer position margin
The newIsolatedMargin field in the add/reduce position-margin responses now reflects the position’s margin after the transfer, instead of the risk bucket’s allocated principal (which could include unrelated bucket equity).
Upgrade
These fixes are live server-side and apply regardless of SDK version. The packages are published at1.0.24 for version alignment; the TypeScript SDK code is unchanged from v1.0.21, so upgrading is optional:

