> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# V1.0.88

# Monaco Protocol SDK v1.0.88

Withdrawals finish sooner: the SDK checks for a withdrawal's merkle proof every 500 ms instead of every 5 seconds. A resting `GTC` order past its expiration can no longer fill before the engine retires it. A change to the copy trading skip limit now applies to existing follows. `@0xmonaco/contracts` adds the `SweeperFactory` CCTP fast-lane fee cap. **Action items:** none. Pass `pollIntervalMs` if you need the old 5-second interval.

## Changed

### Faster withdrawal proof polling

`sdk.vault.withdraw` and `sdk.vault.retryWithdrawal` now poll `GET /api/v1/withdrawals/{index}` every 500 ms by default while the withdrawal's merkle proof is not ready, down from 5000 ms. The proof usually lands a few seconds after the withdrawal starts, so the old interval added up to 5 seconds to every withdrawal. Pass `WithdrawalRetryOptions.pollIntervalMs` to keep a different interval. `timeoutMs` (default 300000) is unchanged. See [Vault](/sdk/typescript/vault).

## Added

### CCTP fast-lane fee cap on `SweeperFactory`

`@0xmonaco/contracts`: `SWEEPER_FACTORY_ABI` gains the `cctpFastFeeCapBps()` view, the owner-only `setCctpFastFeeCapBps(capBps)` setter and the `CctpFastFeeCapUpdated(previousCapBps, newCapBps)` event. A positive cap opts a remote chain's CCTP sweeps into Circle's fast lane, and Circle's fee comes off the minted amount on the hub. Each burn's fee bound is the cap's share of the burned amount, raised to the messenger's on-chain minimum fee where the messenger enforces one, so the cap is not an absolute ceiling. A burn whose fee would exceed its bound falls back to the standard lane rather than failing. The default `0` keeps the standard lane, which carries no fee unless the messenger enforces a minimum. A cap of 100% or more reverts with `InvalidFeeCap`. The `SWEEPER_ABI` is unchanged.

## Fixed

### Expired `GTC` orders never fill

A resting `GTC` order whose expiration had passed, the `expirationDate` you set or 90 days after placement, stayed fillable until the engine's periodic expiry sweep, up to about an hour late. Now a taker walks past it to deeper liquidity, and the order is retired as `EXPIRED` with the same `OrderExpired` event and reasons as before. See [Time in Force](/developers/trade#time-in-force).

### Copy trading skip limit applies to existing follows

When the platform's copy trading skip limit changes, every follow is checked against the new limit. A follow whose `consecutiveSkips` streak is already at or over a lowered limit turns `CLOSE_ONLY`. A follow that was `CLOSE_ONLY` only because of the skip limit returns to `ACTIVE` when a raised limit is above its streak. The streak itself is not reset. Previously existing follows kept their old status. See [Copy Trading](/developers/copy-trading).

## Upgrade

```bash theme={null}
npm install @0xmonaco/core@1.0.88 @0xmonaco/types@1.0.88 @0xmonaco/react@1.0.88 @0xmonaco/contracts@1.0.88
# or bun
bun add @0xmonaco/core@1.0.88 @0xmonaco/types@1.0.88 @0xmonaco/react@1.0.88 @0xmonaco/contracts@1.0.88
```

No code change is required.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.