npm @nktkas/hyperliquid 0.33.0
v0.33.0

5 hours ago

Breaking changes

  • exchange.noop(): now requires a { nonce } parameter (fa7cecc)
  • exchange.createVault(): no longer takes nonce — the SDK sets it (73a6954)
  • signMultiSigAction removed from @nktkas/hyperliquid/signing; use signMultiSigL1 / signMultiSigUserSigned (f5c8d91)
  • Subscriptions no longer expose failureSignal; subscription methods now take an options object ({ signal?, onError? }) instead (33afa6b, #137, #148)
  • WebSocketTransport.socket is now @nktkas/rews v4: its readyState never reports CLOSING, and terminationSignal is the single termination API (#137)
  • Explorer methods (blockDetails, txDetails, userDetails, explorerBlock, explorerTxs) moved off InfoClient / SubscriptionClient into a new ExplorerClient (@nktkas/hyperliquid/api/explorer) (9dfa674)
  • Explorer API errors now throw ApiRequestError instead of HttpRequestError (76fcf78)
  • npm package requires Node.js >=22.12.0 and is ESM-only (no CommonJS build) (3e505e4)
  • @nktkas/hyperliquid/utils: price/size formatting now throws FormatError instead of TypeError / RangeError (#144)

SDK features

  • SymbolConverter: HIP-4 outcome market resolution (#132) and getSymbolBySpotPairId() (#126)
  • WebSocketTransport: configurable keepAlive (#137)
  • @nktkas/hyperliquid/signing: canonicalize() / CanonicalizeError (71049ef)

Fixes

  • exchange.approveAgent(): an empty agentName is now valid (dcbca4e)
  • SymbolConverter.reload(): concurrent calls are de-duplicated (0f79d9e)
  • HttpTransport: the path and query of a custom apiUrl / rpcUrl are now preserved (76fcf78)
  • WebSocketTransport: a request rejected during a disconnect is no longer sent after the reconnect — an order the caller saw fail can no longer still execute (#137)
  • WebSocketTransport: concurrent subscriptions differing only in optional fields now match the right server echo (#137)
  • WebSocketTransport: a rejected confirmation rolls back fully, and re-subscription is retried after a network flap (#137)
  • WebSocketTransport: the unique-user subscription guard matches the server limit of 15 and rejects only genuinely new users (was: rejected at 10, even already-tracked users) (#137)
  • WebSocketTransport: timeout: Infinity disables the timeout (was: instant abort) and timeout: 0 is honored (was: silently disabled) (#137)
  • formatPrice() / formatSize(): rebuilt on decimal.js instead of hand-rolled arithmetic (#144)
  • Decimal / UnsignedDecimal schemas: remove a ReDoS in decimal-string normalization (#144)

API changes

  • ExchangeClient: new methods agentSendAsset, hip3LiquidatorTransfer (a3b26c2); finalizeEvmContract, gossipPriorityBid, stakingLinkDisableTradingUser, userOutcome (9de963d); authorizeAqav2Role (65ae7c2)
  • InfoClient: new methods gossipPriorityAuctionStatus (9de963d); settledOutcome (fcd1cd3)
  • SubscriptionClient: new methods outcomeMetaUpdates (a3b26c2); fastAssetCtxs (#147)
  • exchange.order(): add priority grouping via { p } (9de963d)
  • exchange.modify() / exchange.batchModify(): add optional always-place flag a (#145)
  • exchange.cancel() / exchange.cancelByCloid(): add optional fast-cancel flag f (#146)
  • exchange.spotDeploy(): add requestEvmContract (9de963d) and disableQuoteToken, remove enableAlignedQuoteToken (#149)
  • exchange.perpDeploy(): add "normal" margin mode (9de963d) and disableDex (#150)
  • subscription.l2Book(): add optional fast request field and fast? event marker (#142)
  • info.legalCheck(): add restrictions (79ea974), remove ipAllowed (439366b)
  • info.validatorL1Votes(): add O action variant (048456c, #152), E action variant and quorumReached (998acdc)
  • info.outcomeMeta(): add quoteToken (#135)
  • info.spotClearinghouseState(): support outcome-market balances (e78c706) and add portfolio-margin / borrow-lend fields (#153)
  • info.spotMeta(): spot pair tokens is now a [baseToken, quoteToken] tuple (#151)
  • info.maxMarketOrderNtls(): output tuple type corrected to [maxLeverage, maxMarketOrderNtl] (9b84c41)
  • info.userFees(): allow negative userAddRate / userSpotAddRate (#154)
  • info.extraAgents(): validUntil is now number | null (#154)
  • info.recentTrades(): users tuple labeled [buyer, seller] (#154)
  • info.alignedQuoteTokenInfo(): removed (#154)
  • subscription.userEvents(): add funding-event time (#151)
  • info / subscription: stricter output types for liquidatable, exchangeStatus, PerpAssetCtx.impactPxs, FrontendOpenOrder.children, BboEvent.bbo (9b84c41)

Other changes

  • Documentation reorganized — nktkas.gitbook.io/hyperliquid (#128)
  • Large internal refactoring across the signing, transport, and API layers, with no public-API impact beyond the items above

Full Changelog: v0.32.2...v0.33.0

Don't miss a new hyperliquid release

NewReleases is sending notifications on new releases.