Skip to main content

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 at 1.0.24 for version alignment; the TypeScript SDK code is unchanged from v1.0.21, so upgrading is optional:
No new endpoints, fields, or methods were added, and no request or response shapes changed.