Breaking changes
exchange.noop(): now requires a{ nonce }parameter (fa7cecc)exchange.createVault(): no longer takesnonce— the SDK sets it (73a6954)signMultiSigActionremoved from@nktkas/hyperliquid/signing; usesignMultiSigL1/signMultiSigUserSigned(f5c8d91)- Subscriptions no longer expose
failureSignal; subscription methods now take anoptionsobject ({ signal?, onError? }) instead (33afa6b, #137, #148) WebSocketTransport.socketis now@nktkas/rewsv4: itsreadyStatenever reportsCLOSING, andterminationSignalis the single termination API (#137)- Explorer methods (
blockDetails,txDetails,userDetails,explorerBlock,explorerTxs) moved offInfoClient/SubscriptionClientinto a newExplorerClient(@nktkas/hyperliquid/api/explorer) (9dfa674) - Explorer API errors now throw
ApiRequestErrorinstead ofHttpRequestError(76fcf78) - npm package requires Node.js >=22.12.0 and is ESM-only (no CommonJS build) (3e505e4)
@nktkas/hyperliquid/utils: price/size formatting now throwsFormatErrorinstead ofTypeError/RangeError(#144)
SDK features
SymbolConverter: HIP-4 outcome market resolution (#132) andgetSymbolBySpotPairId()(#126)WebSocketTransport: configurablekeepAlive(#137)@nktkas/hyperliquid/signing:canonicalize()/CanonicalizeError(71049ef)
Fixes
exchange.approveAgent(): an emptyagentNameis now valid (dcbca4e)SymbolConverter.reload(): concurrent calls are de-duplicated (0f79d9e)HttpTransport: the path and query of a customapiUrl/rpcUrlare 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: Infinitydisables the timeout (was: instant abort) andtimeout: 0is honored (was: silently disabled) (#137)formatPrice()/formatSize(): rebuilt ondecimal.jsinstead of hand-rolled arithmetic (#144)Decimal/UnsignedDecimalschemas: remove a ReDoS in decimal-string normalization (#144)
API changes
ExchangeClient: new methodsagentSendAsset,hip3LiquidatorTransfer(a3b26c2);finalizeEvmContract,gossipPriorityBid,stakingLinkDisableTradingUser,userOutcome(9de963d);authorizeAqav2Role(65ae7c2)InfoClient: new methodsgossipPriorityAuctionStatus(9de963d);settledOutcome(fcd1cd3)SubscriptionClient: new methodsoutcomeMetaUpdates(a3b26c2);fastAssetCtxs(#147)exchange.order(): add priority grouping via{ p }(9de963d)exchange.modify()/exchange.batchModify(): add optional always-place flaga(#145)exchange.cancel()/exchange.cancelByCloid(): add optional fast-cancel flagf(#146)exchange.spotDeploy(): addrequestEvmContract(9de963d) anddisableQuoteToken, removeenableAlignedQuoteToken(#149)exchange.perpDeploy(): add"normal"margin mode (9de963d) anddisableDex(#150)subscription.l2Book(): add optionalfastrequest field andfast?event marker (#142)info.legalCheck(): addrestrictions(79ea974), removeipAllowed(439366b)info.validatorL1Votes(): addOaction variant (048456c, #152),Eaction variant andquorumReached(998acdc)info.outcomeMeta(): addquoteToken(#135)info.spotClearinghouseState(): support outcome-market balances (e78c706) and add portfolio-margin / borrow-lend fields (#153)info.spotMeta(): spot pairtokensis now a[baseToken, quoteToken]tuple (#151)info.maxMarketOrderNtls(): output tuple type corrected to[maxLeverage, maxMarketOrderNtl](9b84c41)info.userFees(): allow negativeuserAddRate/userSpotAddRate(#154)info.extraAgents():validUntilis nownumber | null(#154)info.recentTrades():userstuple labeled[buyer, seller](#154)info.alignedQuoteTokenInfo(): removed (#154)subscription.userEvents(): add funding-eventtime(#151)info/subscription: stricter output types forliquidatable,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