@nktkas/hyperliquid 0.25.7 → 0.25.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/CONTRIBUTING.md +26 -19
  2. package/README.md +57 -5
  3. package/esm/bin/cli.js +2 -1
  4. package/esm/bin/cli.js.map +1 -1
  5. package/esm/src/api/_common_schemas.d.ts +19 -0
  6. package/esm/src/api/_common_schemas.d.ts.map +1 -1
  7. package/esm/src/api/_common_schemas.js +15 -0
  8. package/esm/src/api/_common_schemas.js.map +1 -1
  9. package/esm/src/api/exchange/_base/_execute.d.ts +6 -7
  10. package/esm/src/api/exchange/_base/_execute.d.ts.map +1 -1
  11. package/esm/src/api/exchange/_base/_execute.js +67 -43
  12. package/esm/src/api/exchange/_base/_execute.js.map +1 -1
  13. package/esm/src/api/exchange/_base/_types.d.ts +0 -7
  14. package/esm/src/api/exchange/_base/_types.d.ts.map +1 -1
  15. package/esm/src/api/exchange/_base/mod.d.ts +0 -2
  16. package/esm/src/api/exchange/_base/mod.d.ts.map +1 -1
  17. package/esm/src/api/exchange/_base/mod.js +0 -2
  18. package/esm/src/api/exchange/_base/mod.js.map +1 -1
  19. package/esm/src/api/exchange/agentEnableDexAbstraction.d.ts.map +1 -1
  20. package/esm/src/api/exchange/agentEnableDexAbstraction.js +14 -7
  21. package/esm/src/api/exchange/agentEnableDexAbstraction.js.map +1 -1
  22. package/esm/src/api/exchange/approveAgent.d.ts.map +1 -1
  23. package/esm/src/api/exchange/approveAgent.js +16 -8
  24. package/esm/src/api/exchange/approveAgent.js.map +1 -1
  25. package/esm/src/api/exchange/approveBuilderFee.d.ts.map +1 -1
  26. package/esm/src/api/exchange/approveBuilderFee.js +16 -8
  27. package/esm/src/api/exchange/approveBuilderFee.js.map +1 -1
  28. package/esm/src/api/exchange/batchModify.d.ts.map +1 -1
  29. package/esm/src/api/exchange/batchModify.js +16 -10
  30. package/esm/src/api/exchange/batchModify.js.map +1 -1
  31. package/esm/src/api/exchange/cDeposit.d.ts.map +1 -1
  32. package/esm/src/api/exchange/cDeposit.js +16 -8
  33. package/esm/src/api/exchange/cDeposit.js.map +1 -1
  34. package/esm/src/api/exchange/cSignerAction.d.ts.map +1 -1
  35. package/esm/src/api/exchange/cSignerAction.js +15 -8
  36. package/esm/src/api/exchange/cSignerAction.js.map +1 -1
  37. package/esm/src/api/exchange/cValidatorAction.d.ts.map +1 -1
  38. package/esm/src/api/exchange/cValidatorAction.js +15 -8
  39. package/esm/src/api/exchange/cValidatorAction.js.map +1 -1
  40. package/esm/src/api/exchange/cWithdraw.d.ts.map +1 -1
  41. package/esm/src/api/exchange/cWithdraw.js +16 -8
  42. package/esm/src/api/exchange/cWithdraw.js.map +1 -1
  43. package/esm/src/api/exchange/cancel.d.ts.map +1 -1
  44. package/esm/src/api/exchange/cancel.js +16 -10
  45. package/esm/src/api/exchange/cancel.js.map +1 -1
  46. package/esm/src/api/exchange/cancelByCloid.d.ts.map +1 -1
  47. package/esm/src/api/exchange/cancelByCloid.js +16 -10
  48. package/esm/src/api/exchange/cancelByCloid.js.map +1 -1
  49. package/esm/src/api/exchange/claimRewards.d.ts.map +1 -1
  50. package/esm/src/api/exchange/claimRewards.js +14 -7
  51. package/esm/src/api/exchange/claimRewards.js.map +1 -1
  52. package/esm/src/api/exchange/convertToMultiSigUser.d.ts.map +1 -1
  53. package/esm/src/api/exchange/convertToMultiSigUser.js +16 -8
  54. package/esm/src/api/exchange/convertToMultiSigUser.js.map +1 -1
  55. package/esm/src/api/exchange/createSubAccount.d.ts.map +1 -1
  56. package/esm/src/api/exchange/createSubAccount.js +15 -8
  57. package/esm/src/api/exchange/createSubAccount.js.map +1 -1
  58. package/esm/src/api/exchange/createVault.d.ts.map +1 -1
  59. package/esm/src/api/exchange/createVault.js +15 -8
  60. package/esm/src/api/exchange/createVault.js.map +1 -1
  61. package/esm/src/api/exchange/evmUserModify.d.ts +1 -1
  62. package/esm/src/api/exchange/evmUserModify.d.ts.map +1 -1
  63. package/esm/src/api/exchange/evmUserModify.js +16 -9
  64. package/esm/src/api/exchange/evmUserModify.js.map +1 -1
  65. package/esm/src/api/exchange/linkStakingUser.d.ts +112 -0
  66. package/esm/src/api/exchange/linkStakingUser.d.ts.map +1 -0
  67. package/esm/src/api/exchange/linkStakingUser.js +99 -0
  68. package/esm/src/api/exchange/linkStakingUser.js.map +1 -0
  69. package/esm/src/api/exchange/modify.d.ts.map +1 -1
  70. package/esm/src/api/exchange/modify.js +16 -10
  71. package/esm/src/api/exchange/modify.js.map +1 -1
  72. package/esm/src/api/exchange/multiSig.d.ts +81 -0
  73. package/esm/src/api/exchange/multiSig.d.ts.map +1 -1
  74. package/esm/src/api/exchange/multiSig.js +17 -16
  75. package/esm/src/api/exchange/multiSig.js.map +1 -1
  76. package/esm/src/api/exchange/noop.d.ts.map +1 -1
  77. package/esm/src/api/exchange/noop.js +14 -7
  78. package/esm/src/api/exchange/noop.js.map +1 -1
  79. package/esm/src/api/exchange/order.d.ts.map +1 -1
  80. package/esm/src/api/exchange/order.js +16 -10
  81. package/esm/src/api/exchange/order.js.map +1 -1
  82. package/esm/src/api/exchange/perpDeploy.d.ts +58 -0
  83. package/esm/src/api/exchange/perpDeploy.d.ts.map +1 -1
  84. package/esm/src/api/exchange/perpDeploy.js +33 -8
  85. package/esm/src/api/exchange/perpDeploy.js.map +1 -1
  86. package/esm/src/api/exchange/registerReferrer.d.ts.map +1 -1
  87. package/esm/src/api/exchange/registerReferrer.js +15 -8
  88. package/esm/src/api/exchange/registerReferrer.js.map +1 -1
  89. package/esm/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
  90. package/esm/src/api/exchange/reserveRequestWeight.js +15 -8
  91. package/esm/src/api/exchange/reserveRequestWeight.js.map +1 -1
  92. package/esm/src/api/exchange/scheduleCancel.js +16 -10
  93. package/esm/src/api/exchange/scheduleCancel.js.map +1 -1
  94. package/esm/src/api/exchange/sendAsset.d.ts.map +1 -1
  95. package/esm/src/api/exchange/sendAsset.js +16 -8
  96. package/esm/src/api/exchange/sendAsset.js.map +1 -1
  97. package/esm/src/api/exchange/setDisplayName.d.ts.map +1 -1
  98. package/esm/src/api/exchange/setDisplayName.js +15 -8
  99. package/esm/src/api/exchange/setDisplayName.js.map +1 -1
  100. package/esm/src/api/exchange/setReferrer.d.ts.map +1 -1
  101. package/esm/src/api/exchange/setReferrer.js +15 -8
  102. package/esm/src/api/exchange/setReferrer.js.map +1 -1
  103. package/esm/src/api/exchange/spotDeploy.d.ts.map +1 -1
  104. package/esm/src/api/exchange/spotDeploy.js +15 -8
  105. package/esm/src/api/exchange/spotDeploy.js.map +1 -1
  106. package/esm/src/api/exchange/spotSend.d.ts.map +1 -1
  107. package/esm/src/api/exchange/spotSend.js +16 -8
  108. package/esm/src/api/exchange/spotSend.js.map +1 -1
  109. package/esm/src/api/exchange/spotUser.d.ts.map +1 -1
  110. package/esm/src/api/exchange/spotUser.js +15 -8
  111. package/esm/src/api/exchange/spotUser.js.map +1 -1
  112. package/esm/src/api/exchange/subAccountModify.d.ts.map +1 -1
  113. package/esm/src/api/exchange/subAccountModify.js +15 -8
  114. package/esm/src/api/exchange/subAccountModify.js.map +1 -1
  115. package/esm/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
  116. package/esm/src/api/exchange/subAccountSpotTransfer.js +15 -8
  117. package/esm/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
  118. package/esm/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
  119. package/esm/src/api/exchange/subAccountTransfer.js +15 -8
  120. package/esm/src/api/exchange/subAccountTransfer.js.map +1 -1
  121. package/esm/src/api/exchange/tokenDelegate.d.ts.map +1 -1
  122. package/esm/src/api/exchange/tokenDelegate.js +16 -8
  123. package/esm/src/api/exchange/tokenDelegate.js.map +1 -1
  124. package/esm/src/api/exchange/twapCancel.d.ts.map +1 -1
  125. package/esm/src/api/exchange/twapCancel.js +16 -10
  126. package/esm/src/api/exchange/twapCancel.js.map +1 -1
  127. package/esm/src/api/exchange/twapOrder.d.ts.map +1 -1
  128. package/esm/src/api/exchange/twapOrder.js +16 -10
  129. package/esm/src/api/exchange/twapOrder.js.map +1 -1
  130. package/esm/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
  131. package/esm/src/api/exchange/updateIsolatedMargin.js +16 -10
  132. package/esm/src/api/exchange/updateIsolatedMargin.js.map +1 -1
  133. package/esm/src/api/exchange/updateLeverage.d.ts.map +1 -1
  134. package/esm/src/api/exchange/updateLeverage.js +16 -10
  135. package/esm/src/api/exchange/updateLeverage.js.map +1 -1
  136. package/esm/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
  137. package/esm/src/api/exchange/usdClassTransfer.js +16 -8
  138. package/esm/src/api/exchange/usdClassTransfer.js.map +1 -1
  139. package/esm/src/api/exchange/usdSend.d.ts.map +1 -1
  140. package/esm/src/api/exchange/usdSend.js +16 -8
  141. package/esm/src/api/exchange/usdSend.js.map +1 -1
  142. package/esm/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
  143. package/esm/src/api/exchange/userDexAbstraction.js +16 -8
  144. package/esm/src/api/exchange/userDexAbstraction.js.map +1 -1
  145. package/esm/src/api/exchange/vaultDistribute.d.ts.map +1 -1
  146. package/esm/src/api/exchange/vaultDistribute.js +15 -8
  147. package/esm/src/api/exchange/vaultDistribute.js.map +1 -1
  148. package/esm/src/api/exchange/vaultModify.d.ts.map +1 -1
  149. package/esm/src/api/exchange/vaultModify.js +15 -8
  150. package/esm/src/api/exchange/vaultModify.js.map +1 -1
  151. package/esm/src/api/exchange/vaultTransfer.d.ts.map +1 -1
  152. package/esm/src/api/exchange/vaultTransfer.js +15 -8
  153. package/esm/src/api/exchange/vaultTransfer.js.map +1 -1
  154. package/esm/src/api/exchange/withdraw3.d.ts.map +1 -1
  155. package/esm/src/api/exchange/withdraw3.js +16 -8
  156. package/esm/src/api/exchange/withdraw3.js.map +1 -1
  157. package/esm/src/api/exchange/~client.d.ts +31 -3
  158. package/esm/src/api/exchange/~client.d.ts.map +1 -1
  159. package/esm/src/api/exchange/~client.js +27 -4
  160. package/esm/src/api/exchange/~client.js.map +1 -1
  161. package/esm/src/api/exchange/~mod.d.ts +1 -0
  162. package/esm/src/api/exchange/~mod.d.ts.map +1 -1
  163. package/esm/src/api/exchange/~mod.js +1 -0
  164. package/esm/src/api/exchange/~mod.js.map +1 -1
  165. package/esm/src/api/info/allPerpMetas.d.ts +5 -0
  166. package/esm/src/api/info/allPerpMetas.d.ts.map +1 -1
  167. package/esm/src/api/info/meta.d.ts +5 -0
  168. package/esm/src/api/info/meta.d.ts.map +1 -1
  169. package/esm/src/api/info/meta.js +2 -0
  170. package/esm/src/api/info/meta.js.map +1 -1
  171. package/esm/src/api/info/metaAndAssetCtxs.d.ts +5 -0
  172. package/esm/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
  173. package/esm/src/api/info/perpDexs.d.ts +4 -0
  174. package/esm/src/api/info/perpDexs.d.ts.map +1 -1
  175. package/esm/src/api/info/perpDexs.js +5 -0
  176. package/esm/src/api/info/perpDexs.js.map +1 -1
  177. package/esm/src/api/info/spotClearinghouseState.d.ts +0 -5
  178. package/esm/src/api/info/spotClearinghouseState.d.ts.map +1 -1
  179. package/esm/src/api/info/spotClearinghouseState.js +2 -14
  180. package/esm/src/api/info/spotClearinghouseState.js.map +1 -1
  181. package/esm/src/api/info/userFees.d.ts +27 -2
  182. package/esm/src/api/info/userFees.d.ts.map +1 -1
  183. package/esm/src/api/info/userFees.js +29 -1
  184. package/esm/src/api/info/userFees.js.map +1 -1
  185. package/esm/src/api/info/webData2.d.ts +6 -0
  186. package/esm/src/api/info/webData2.d.ts.map +1 -1
  187. package/esm/src/api/info/~client.d.ts +9 -1
  188. package/esm/src/api/info/~client.d.ts.map +1 -1
  189. package/esm/src/api/subscription/spotState.d.ts +91 -0
  190. package/esm/src/api/subscription/spotState.d.ts.map +1 -0
  191. package/esm/src/api/subscription/spotState.js +58 -0
  192. package/esm/src/api/subscription/spotState.js.map +1 -0
  193. package/esm/src/api/subscription/userEvents.d.ts +166 -141
  194. package/esm/src/api/subscription/userEvents.d.ts.map +1 -1
  195. package/esm/src/api/subscription/userEvents.js +6 -1
  196. package/esm/src/api/subscription/userEvents.js.map +1 -1
  197. package/esm/src/api/subscription/webData2.d.ts +5 -0
  198. package/esm/src/api/subscription/webData2.d.ts.map +1 -1
  199. package/esm/src/api/subscription/~client.d.ts +22 -0
  200. package/esm/src/api/subscription/~client.d.ts.map +1 -1
  201. package/esm/src/api/subscription/~client.js +23 -0
  202. package/esm/src/api/subscription/~client.js.map +1 -1
  203. package/esm/src/api/subscription/~mod.d.ts +1 -0
  204. package/esm/src/api/subscription/~mod.d.ts.map +1 -1
  205. package/esm/src/api/subscription/~mod.js +1 -0
  206. package/esm/src/api/subscription/~mod.js.map +1 -1
  207. package/esm/src/signing/_signTypedData.d.ts +1 -1
  208. package/esm/src/signing/_signTypedData.d.ts.map +1 -1
  209. package/esm/src/signing/_signTypedData.js +1 -1
  210. package/esm/src/signing/_signTypedData.js.map +1 -1
  211. package/esm/src/transport/websocket/_hyperliquid_event_target.d.ts +7 -0
  212. package/esm/src/transport/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  213. package/esm/src/transport/websocket/_hyperliquid_event_target.js.map +1 -1
  214. package/esm/src/transport/websocket/_websocket_async_request.d.ts.map +1 -1
  215. package/esm/src/transport/websocket/_websocket_async_request.js +6 -0
  216. package/esm/src/transport/websocket/_websocket_async_request.js.map +1 -1
  217. package/esm/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
  218. package/esm/src/utils/_eip712.d.ts.map +1 -0
  219. package/esm/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -11
  220. package/esm/src/utils/_eip712.js.map +1 -0
  221. package/esm/src/utils/_format.d.ts +3 -4
  222. package/esm/src/utils/_format.d.ts.map +1 -1
  223. package/esm/src/utils/_format.js +98 -88
  224. package/esm/src/utils/_format.js.map +1 -1
  225. package/esm/src/utils/_recover.d.ts +89 -0
  226. package/esm/src/utils/_recover.d.ts.map +1 -0
  227. package/esm/src/utils/_recover.js +119 -0
  228. package/esm/src/utils/_recover.js.map +1 -0
  229. package/esm/src/utils/mod.d.ts +1 -0
  230. package/esm/src/utils/mod.d.ts.map +1 -1
  231. package/esm/src/utils/mod.js +1 -0
  232. package/esm/src/utils/mod.js.map +1 -1
  233. package/package.json +3 -2
  234. package/script/bin/cli.js +2 -1
  235. package/script/bin/cli.js.map +1 -1
  236. package/script/src/api/_common_schemas.d.ts +19 -0
  237. package/script/src/api/_common_schemas.d.ts.map +1 -1
  238. package/script/src/api/_common_schemas.js +16 -1
  239. package/script/src/api/_common_schemas.js.map +1 -1
  240. package/script/src/api/exchange/_base/_execute.d.ts +6 -7
  241. package/script/src/api/exchange/_base/_execute.d.ts.map +1 -1
  242. package/script/src/api/exchange/_base/_execute.js +67 -43
  243. package/script/src/api/exchange/_base/_execute.js.map +1 -1
  244. package/script/src/api/exchange/_base/_types.d.ts +0 -7
  245. package/script/src/api/exchange/_base/_types.d.ts.map +1 -1
  246. package/script/src/api/exchange/_base/mod.d.ts +0 -2
  247. package/script/src/api/exchange/_base/mod.d.ts.map +1 -1
  248. package/script/src/api/exchange/_base/mod.js +0 -2
  249. package/script/src/api/exchange/_base/mod.js.map +1 -1
  250. package/script/src/api/exchange/agentEnableDexAbstraction.d.ts.map +1 -1
  251. package/script/src/api/exchange/agentEnableDexAbstraction.js +14 -7
  252. package/script/src/api/exchange/agentEnableDexAbstraction.js.map +1 -1
  253. package/script/src/api/exchange/approveAgent.d.ts.map +1 -1
  254. package/script/src/api/exchange/approveAgent.js +15 -7
  255. package/script/src/api/exchange/approveAgent.js.map +1 -1
  256. package/script/src/api/exchange/approveBuilderFee.d.ts.map +1 -1
  257. package/script/src/api/exchange/approveBuilderFee.js +15 -7
  258. package/script/src/api/exchange/approveBuilderFee.js.map +1 -1
  259. package/script/src/api/exchange/batchModify.d.ts.map +1 -1
  260. package/script/src/api/exchange/batchModify.js +16 -10
  261. package/script/src/api/exchange/batchModify.js.map +1 -1
  262. package/script/src/api/exchange/cDeposit.d.ts.map +1 -1
  263. package/script/src/api/exchange/cDeposit.js +15 -7
  264. package/script/src/api/exchange/cDeposit.js.map +1 -1
  265. package/script/src/api/exchange/cSignerAction.d.ts.map +1 -1
  266. package/script/src/api/exchange/cSignerAction.js +15 -8
  267. package/script/src/api/exchange/cSignerAction.js.map +1 -1
  268. package/script/src/api/exchange/cValidatorAction.d.ts.map +1 -1
  269. package/script/src/api/exchange/cValidatorAction.js +15 -8
  270. package/script/src/api/exchange/cValidatorAction.js.map +1 -1
  271. package/script/src/api/exchange/cWithdraw.d.ts.map +1 -1
  272. package/script/src/api/exchange/cWithdraw.js +15 -7
  273. package/script/src/api/exchange/cWithdraw.js.map +1 -1
  274. package/script/src/api/exchange/cancel.d.ts.map +1 -1
  275. package/script/src/api/exchange/cancel.js +16 -10
  276. package/script/src/api/exchange/cancel.js.map +1 -1
  277. package/script/src/api/exchange/cancelByCloid.d.ts.map +1 -1
  278. package/script/src/api/exchange/cancelByCloid.js +16 -10
  279. package/script/src/api/exchange/cancelByCloid.js.map +1 -1
  280. package/script/src/api/exchange/claimRewards.d.ts.map +1 -1
  281. package/script/src/api/exchange/claimRewards.js +14 -7
  282. package/script/src/api/exchange/claimRewards.js.map +1 -1
  283. package/script/src/api/exchange/convertToMultiSigUser.d.ts.map +1 -1
  284. package/script/src/api/exchange/convertToMultiSigUser.js +15 -7
  285. package/script/src/api/exchange/convertToMultiSigUser.js.map +1 -1
  286. package/script/src/api/exchange/createSubAccount.d.ts.map +1 -1
  287. package/script/src/api/exchange/createSubAccount.js +15 -8
  288. package/script/src/api/exchange/createSubAccount.js.map +1 -1
  289. package/script/src/api/exchange/createVault.d.ts.map +1 -1
  290. package/script/src/api/exchange/createVault.js +15 -8
  291. package/script/src/api/exchange/createVault.js.map +1 -1
  292. package/script/src/api/exchange/evmUserModify.d.ts +1 -1
  293. package/script/src/api/exchange/evmUserModify.d.ts.map +1 -1
  294. package/script/src/api/exchange/evmUserModify.js +16 -9
  295. package/script/src/api/exchange/evmUserModify.js.map +1 -1
  296. package/script/src/api/exchange/linkStakingUser.d.ts +112 -0
  297. package/script/src/api/exchange/linkStakingUser.d.ts.map +1 -0
  298. package/script/src/api/exchange/linkStakingUser.js +136 -0
  299. package/script/src/api/exchange/linkStakingUser.js.map +1 -0
  300. package/script/src/api/exchange/modify.d.ts.map +1 -1
  301. package/script/src/api/exchange/modify.js +16 -10
  302. package/script/src/api/exchange/modify.js.map +1 -1
  303. package/script/src/api/exchange/multiSig.d.ts +81 -0
  304. package/script/src/api/exchange/multiSig.d.ts.map +1 -1
  305. package/script/src/api/exchange/multiSig.js +17 -16
  306. package/script/src/api/exchange/multiSig.js.map +1 -1
  307. package/script/src/api/exchange/noop.d.ts.map +1 -1
  308. package/script/src/api/exchange/noop.js +14 -7
  309. package/script/src/api/exchange/noop.js.map +1 -1
  310. package/script/src/api/exchange/order.d.ts.map +1 -1
  311. package/script/src/api/exchange/order.js +16 -10
  312. package/script/src/api/exchange/order.js.map +1 -1
  313. package/script/src/api/exchange/perpDeploy.d.ts +58 -0
  314. package/script/src/api/exchange/perpDeploy.d.ts.map +1 -1
  315. package/script/src/api/exchange/perpDeploy.js +33 -8
  316. package/script/src/api/exchange/perpDeploy.js.map +1 -1
  317. package/script/src/api/exchange/registerReferrer.d.ts.map +1 -1
  318. package/script/src/api/exchange/registerReferrer.js +15 -8
  319. package/script/src/api/exchange/registerReferrer.js.map +1 -1
  320. package/script/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
  321. package/script/src/api/exchange/reserveRequestWeight.js +15 -8
  322. package/script/src/api/exchange/reserveRequestWeight.js.map +1 -1
  323. package/script/src/api/exchange/scheduleCancel.js +16 -10
  324. package/script/src/api/exchange/scheduleCancel.js.map +1 -1
  325. package/script/src/api/exchange/sendAsset.d.ts.map +1 -1
  326. package/script/src/api/exchange/sendAsset.js +15 -7
  327. package/script/src/api/exchange/sendAsset.js.map +1 -1
  328. package/script/src/api/exchange/setDisplayName.d.ts.map +1 -1
  329. package/script/src/api/exchange/setDisplayName.js +15 -8
  330. package/script/src/api/exchange/setDisplayName.js.map +1 -1
  331. package/script/src/api/exchange/setReferrer.d.ts.map +1 -1
  332. package/script/src/api/exchange/setReferrer.js +15 -8
  333. package/script/src/api/exchange/setReferrer.js.map +1 -1
  334. package/script/src/api/exchange/spotDeploy.d.ts.map +1 -1
  335. package/script/src/api/exchange/spotDeploy.js +15 -8
  336. package/script/src/api/exchange/spotDeploy.js.map +1 -1
  337. package/script/src/api/exchange/spotSend.d.ts.map +1 -1
  338. package/script/src/api/exchange/spotSend.js +15 -7
  339. package/script/src/api/exchange/spotSend.js.map +1 -1
  340. package/script/src/api/exchange/spotUser.d.ts.map +1 -1
  341. package/script/src/api/exchange/spotUser.js +15 -8
  342. package/script/src/api/exchange/spotUser.js.map +1 -1
  343. package/script/src/api/exchange/subAccountModify.d.ts.map +1 -1
  344. package/script/src/api/exchange/subAccountModify.js +15 -8
  345. package/script/src/api/exchange/subAccountModify.js.map +1 -1
  346. package/script/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
  347. package/script/src/api/exchange/subAccountSpotTransfer.js +15 -8
  348. package/script/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
  349. package/script/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
  350. package/script/src/api/exchange/subAccountTransfer.js +15 -8
  351. package/script/src/api/exchange/subAccountTransfer.js.map +1 -1
  352. package/script/src/api/exchange/tokenDelegate.d.ts.map +1 -1
  353. package/script/src/api/exchange/tokenDelegate.js +15 -7
  354. package/script/src/api/exchange/tokenDelegate.js.map +1 -1
  355. package/script/src/api/exchange/twapCancel.d.ts.map +1 -1
  356. package/script/src/api/exchange/twapCancel.js +16 -10
  357. package/script/src/api/exchange/twapCancel.js.map +1 -1
  358. package/script/src/api/exchange/twapOrder.d.ts.map +1 -1
  359. package/script/src/api/exchange/twapOrder.js +16 -10
  360. package/script/src/api/exchange/twapOrder.js.map +1 -1
  361. package/script/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
  362. package/script/src/api/exchange/updateIsolatedMargin.js +16 -10
  363. package/script/src/api/exchange/updateIsolatedMargin.js.map +1 -1
  364. package/script/src/api/exchange/updateLeverage.d.ts.map +1 -1
  365. package/script/src/api/exchange/updateLeverage.js +16 -10
  366. package/script/src/api/exchange/updateLeverage.js.map +1 -1
  367. package/script/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
  368. package/script/src/api/exchange/usdClassTransfer.js +15 -7
  369. package/script/src/api/exchange/usdClassTransfer.js.map +1 -1
  370. package/script/src/api/exchange/usdSend.d.ts.map +1 -1
  371. package/script/src/api/exchange/usdSend.js +15 -7
  372. package/script/src/api/exchange/usdSend.js.map +1 -1
  373. package/script/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
  374. package/script/src/api/exchange/userDexAbstraction.js +15 -7
  375. package/script/src/api/exchange/userDexAbstraction.js.map +1 -1
  376. package/script/src/api/exchange/vaultDistribute.d.ts.map +1 -1
  377. package/script/src/api/exchange/vaultDistribute.js +15 -8
  378. package/script/src/api/exchange/vaultDistribute.js.map +1 -1
  379. package/script/src/api/exchange/vaultModify.d.ts.map +1 -1
  380. package/script/src/api/exchange/vaultModify.js +15 -8
  381. package/script/src/api/exchange/vaultModify.js.map +1 -1
  382. package/script/src/api/exchange/vaultTransfer.d.ts.map +1 -1
  383. package/script/src/api/exchange/vaultTransfer.js +15 -8
  384. package/script/src/api/exchange/vaultTransfer.js.map +1 -1
  385. package/script/src/api/exchange/withdraw3.d.ts.map +1 -1
  386. package/script/src/api/exchange/withdraw3.js +15 -7
  387. package/script/src/api/exchange/withdraw3.js.map +1 -1
  388. package/script/src/api/exchange/~client.d.ts +31 -3
  389. package/script/src/api/exchange/~client.d.ts.map +1 -1
  390. package/script/src/api/exchange/~client.js +29 -6
  391. package/script/src/api/exchange/~client.js.map +1 -1
  392. package/script/src/api/exchange/~mod.d.ts +1 -0
  393. package/script/src/api/exchange/~mod.d.ts.map +1 -1
  394. package/script/src/api/exchange/~mod.js +1 -0
  395. package/script/src/api/exchange/~mod.js.map +1 -1
  396. package/script/src/api/info/allPerpMetas.d.ts +5 -0
  397. package/script/src/api/info/allPerpMetas.d.ts.map +1 -1
  398. package/script/src/api/info/meta.d.ts +5 -0
  399. package/script/src/api/info/meta.d.ts.map +1 -1
  400. package/script/src/api/info/meta.js +2 -0
  401. package/script/src/api/info/meta.js.map +1 -1
  402. package/script/src/api/info/metaAndAssetCtxs.d.ts +5 -0
  403. package/script/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
  404. package/script/src/api/info/perpDexs.d.ts +4 -0
  405. package/script/src/api/info/perpDexs.d.ts.map +1 -1
  406. package/script/src/api/info/perpDexs.js +5 -0
  407. package/script/src/api/info/perpDexs.js.map +1 -1
  408. package/script/src/api/info/spotClearinghouseState.d.ts +0 -5
  409. package/script/src/api/info/spotClearinghouseState.d.ts.map +1 -1
  410. package/script/src/api/info/spotClearinghouseState.js +2 -14
  411. package/script/src/api/info/spotClearinghouseState.js.map +1 -1
  412. package/script/src/api/info/userFees.d.ts +27 -2
  413. package/script/src/api/info/userFees.d.ts.map +1 -1
  414. package/script/src/api/info/userFees.js +29 -1
  415. package/script/src/api/info/userFees.js.map +1 -1
  416. package/script/src/api/info/webData2.d.ts +6 -0
  417. package/script/src/api/info/webData2.d.ts.map +1 -1
  418. package/script/src/api/info/~client.d.ts +9 -1
  419. package/script/src/api/info/~client.d.ts.map +1 -1
  420. package/script/src/api/subscription/spotState.d.ts +91 -0
  421. package/script/src/api/subscription/spotState.d.ts.map +1 -0
  422. package/script/src/api/subscription/spotState.js +95 -0
  423. package/script/src/api/subscription/spotState.js.map +1 -0
  424. package/script/src/api/subscription/userEvents.d.ts +166 -141
  425. package/script/src/api/subscription/userEvents.d.ts.map +1 -1
  426. package/script/src/api/subscription/userEvents.js +6 -1
  427. package/script/src/api/subscription/userEvents.js.map +1 -1
  428. package/script/src/api/subscription/webData2.d.ts +5 -0
  429. package/script/src/api/subscription/webData2.d.ts.map +1 -1
  430. package/script/src/api/subscription/~client.d.ts +22 -0
  431. package/script/src/api/subscription/~client.d.ts.map +1 -1
  432. package/script/src/api/subscription/~client.js +23 -0
  433. package/script/src/api/subscription/~client.js.map +1 -1
  434. package/script/src/api/subscription/~mod.d.ts +1 -0
  435. package/script/src/api/subscription/~mod.d.ts.map +1 -1
  436. package/script/src/api/subscription/~mod.js +1 -0
  437. package/script/src/api/subscription/~mod.js.map +1 -1
  438. package/script/src/signing/_signTypedData.d.ts +1 -1
  439. package/script/src/signing/_signTypedData.d.ts.map +1 -1
  440. package/script/src/signing/_signTypedData.js +1 -1
  441. package/script/src/signing/_signTypedData.js.map +1 -1
  442. package/script/src/transport/websocket/_hyperliquid_event_target.d.ts +7 -0
  443. package/script/src/transport/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  444. package/script/src/transport/websocket/_hyperliquid_event_target.js.map +1 -1
  445. package/script/src/transport/websocket/_websocket_async_request.d.ts.map +1 -1
  446. package/script/src/transport/websocket/_websocket_async_request.js +6 -0
  447. package/script/src/transport/websocket/_websocket_async_request.js.map +1 -1
  448. package/script/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
  449. package/script/src/utils/_eip712.d.ts.map +1 -0
  450. package/script/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -9
  451. package/script/src/utils/_eip712.js.map +1 -0
  452. package/script/src/utils/_format.d.ts +3 -4
  453. package/script/src/utils/_format.d.ts.map +1 -1
  454. package/script/src/utils/_format.js +98 -88
  455. package/script/src/utils/_format.js.map +1 -1
  456. package/script/src/utils/_recover.d.ts +89 -0
  457. package/script/src/utils/_recover.d.ts.map +1 -0
  458. package/script/src/utils/_recover.js +156 -0
  459. package/script/src/utils/_recover.js.map +1 -0
  460. package/script/src/utils/mod.d.ts +1 -0
  461. package/script/src/utils/mod.d.ts.map +1 -1
  462. package/script/src/utils/mod.js +1 -0
  463. package/script/src/utils/mod.js.map +1 -1
  464. package/src/bin/cli.ts +2 -1
  465. package/src/src/api/_common_schemas.ts +34 -0
  466. package/src/src/api/exchange/_base/_execute.ts +73 -49
  467. package/src/src/api/exchange/_base/_types.ts +0 -7
  468. package/src/src/api/exchange/_base/mod.ts +0 -2
  469. package/src/src/api/exchange/agentEnableDexAbstraction.ts +14 -9
  470. package/src/src/api/exchange/approveAgent.ts +15 -12
  471. package/src/src/api/exchange/approveBuilderFee.ts +15 -12
  472. package/src/src/api/exchange/batchModify.ts +16 -13
  473. package/src/src/api/exchange/cDeposit.ts +15 -12
  474. package/src/src/api/exchange/cSignerAction.ts +15 -10
  475. package/src/src/api/exchange/cValidatorAction.ts +15 -10
  476. package/src/src/api/exchange/cWithdraw.ts +15 -12
  477. package/src/src/api/exchange/cancel.ts +16 -13
  478. package/src/src/api/exchange/cancelByCloid.ts +16 -13
  479. package/src/src/api/exchange/claimRewards.ts +14 -9
  480. package/src/src/api/exchange/convertToMultiSigUser.ts +15 -12
  481. package/src/src/api/exchange/createSubAccount.ts +15 -10
  482. package/src/src/api/exchange/createVault.ts +15 -10
  483. package/src/src/api/exchange/evmUserModify.ts +16 -11
  484. package/src/src/api/exchange/linkStakingUser.ts +157 -0
  485. package/src/src/api/exchange/modify.ts +16 -13
  486. package/src/src/api/exchange/multiSig.ts +17 -23
  487. package/src/src/api/exchange/noop.ts +14 -9
  488. package/src/src/api/exchange/order.ts +16 -13
  489. package/src/src/api/exchange/perpDeploy.ts +61 -10
  490. package/src/src/api/exchange/registerReferrer.ts +15 -10
  491. package/src/src/api/exchange/reserveRequestWeight.ts +15 -10
  492. package/src/src/api/exchange/scheduleCancel.ts +16 -13
  493. package/src/src/api/exchange/sendAsset.ts +15 -12
  494. package/src/src/api/exchange/setDisplayName.ts +15 -10
  495. package/src/src/api/exchange/setReferrer.ts +15 -10
  496. package/src/src/api/exchange/spotDeploy.ts +15 -10
  497. package/src/src/api/exchange/spotSend.ts +15 -12
  498. package/src/src/api/exchange/spotUser.ts +15 -10
  499. package/src/src/api/exchange/subAccountModify.ts +15 -10
  500. package/src/src/api/exchange/subAccountSpotTransfer.ts +15 -10
  501. package/src/src/api/exchange/subAccountTransfer.ts +15 -10
  502. package/src/src/api/exchange/tokenDelegate.ts +15 -12
  503. package/src/src/api/exchange/twapCancel.ts +16 -13
  504. package/src/src/api/exchange/twapOrder.ts +16 -13
  505. package/src/src/api/exchange/updateIsolatedMargin.ts +16 -13
  506. package/src/src/api/exchange/updateLeverage.ts +16 -13
  507. package/src/src/api/exchange/usdClassTransfer.ts +15 -12
  508. package/src/src/api/exchange/usdSend.ts +15 -12
  509. package/src/src/api/exchange/userDexAbstraction.ts +15 -12
  510. package/src/src/api/exchange/vaultDistribute.ts +15 -10
  511. package/src/src/api/exchange/vaultModify.ts +15 -10
  512. package/src/src/api/exchange/vaultTransfer.ts +15 -10
  513. package/src/src/api/exchange/withdraw3.ts +15 -12
  514. package/src/src/api/exchange/~client.ts +30 -5
  515. package/src/src/api/exchange/~mod.ts +1 -0
  516. package/src/src/api/info/meta.ts +7 -0
  517. package/src/src/api/info/perpDexs.ts +10 -0
  518. package/src/src/api/info/spotClearinghouseState.ts +3 -33
  519. package/src/src/api/info/userFees.ts +46 -1
  520. package/src/src/api/subscription/spotState.ts +96 -0
  521. package/src/src/api/subscription/userEvents.ts +11 -1
  522. package/src/src/api/subscription/~client.ts +25 -0
  523. package/src/src/api/subscription/~mod.ts +1 -0
  524. package/src/src/signing/_signTypedData.ts +1 -1
  525. package/src/src/transport/websocket/_hyperliquid_event_target.ts +7 -0
  526. package/src/src/transport/websocket/_websocket_async_request.ts +6 -0
  527. package/src/src/utils/{_minimalEIP712Signer.ts → _eip712.ts} +22 -29
  528. package/src/src/utils/_format.ts +99 -98
  529. package/src/src/utils/_recover.ts +178 -0
  530. package/src/src/utils/mod.ts +1 -0
  531. package/esm/src/api/exchange/_base/_sequential.d.ts +0 -30
  532. package/esm/src/api/exchange/_base/_sequential.d.ts.map +0 -1
  533. package/esm/src/api/exchange/_base/_sequential.js +0 -69
  534. package/esm/src/api/exchange/_base/_sequential.js.map +0 -1
  535. package/esm/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
  536. package/esm/src/utils/_minimalEIP712Signer.js.map +0 -1
  537. package/script/src/api/exchange/_base/_sequential.d.ts +0 -30
  538. package/script/src/api/exchange/_base/_sequential.d.ts.map +0 -1
  539. package/script/src/api/exchange/_base/_sequential.js +0 -72
  540. package/script/src/api/exchange/_base/_sequential.js.map +0 -1
  541. package/script/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
  542. package/script/src/utils/_minimalEIP712Signer.js.map +0 -1
  543. package/src/src/api/exchange/_base/_sequential.ts +0 -82
@@ -6,7 +6,6 @@ import {
6
6
  type ExtractRequestAction,
7
7
  type ExtractRequestOptions,
8
8
  getSignatureChainId,
9
- globalNonceManager,
10
9
  type MultiSignRequestConfig,
11
10
  Signature,
12
11
  } from "./_base/mod.js";
@@ -123,16 +122,20 @@ export async function approveAgent(
123
122
  params: DeepImmutable<ApproveAgentParameters>,
124
123
  opts?: ApproveAgentOptions,
125
124
  ): Promise<SuccessResponse> {
126
- const action = parser(ApproveAgentRequest.entries.action)({
127
- type: "approveAgent",
128
- hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
129
- signatureChainId: await getSignatureChainId(config),
130
- nonce: globalNonceManager.getNonce(),
131
- ...params,
125
+ const request = parser(ApproveAgentRequest)({
126
+ action: {
127
+ type: "approveAgent",
128
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
129
+ signatureChainId: await getSignatureChainId(config),
130
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
131
+ ...params,
132
+ },
133
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
134
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
135
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
136
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
137
+ v: 27,
138
+ },
132
139
  });
133
- return await executeUserSignedAction(
134
- config,
135
- { action, types: ApproveAgentTypes },
136
- opts?.signal,
137
- );
140
+ return await executeUserSignedAction(config, request, ApproveAgentTypes, opts?.signal);
138
141
  }
@@ -6,7 +6,6 @@ import {
6
6
  type ExtractRequestAction,
7
7
  type ExtractRequestOptions,
8
8
  getSignatureChainId,
9
- globalNonceManager,
10
9
  type MultiSignRequestConfig,
11
10
  Signature,
12
11
  } from "./_base/mod.js";
@@ -123,16 +122,20 @@ export async function approveBuilderFee(
123
122
  params: DeepImmutable<ApproveBuilderFeeParameters>,
124
123
  opts?: ApproveBuilderFeeOptions,
125
124
  ): Promise<SuccessResponse> {
126
- const action = parser(ApproveBuilderFeeRequest.entries.action)({
127
- type: "approveBuilderFee",
128
- hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
129
- signatureChainId: await getSignatureChainId(config),
130
- nonce: globalNonceManager.getNonce(),
131
- ...params,
125
+ const request = parser(ApproveBuilderFeeRequest)({
126
+ action: {
127
+ type: "approveBuilderFee",
128
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
129
+ signatureChainId: await getSignatureChainId(config),
130
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
131
+ ...params,
132
+ },
133
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
134
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
135
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
136
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
137
+ v: 27,
138
+ },
132
139
  });
133
- return await executeUserSignedAction(
134
- config,
135
- { action, types: ApproveBuilderFeeTypes },
136
- opts?.signal,
137
- );
140
+ return await executeUserSignedAction(config, request, ApproveBuilderFeeTypes, opts?.signal);
138
141
  }
@@ -128,18 +128,21 @@ export async function batchModify(
128
128
  params: DeepImmutable<BatchModifyParameters>,
129
129
  opts?: BatchModifyOptions,
130
130
  ): Promise<OrderSuccessResponse> {
131
- const action = parser(BatchModifyRequest.entries.action)({
132
- type: "batchModify",
133
- ...params,
131
+ const request = parser(BatchModifyRequest)({
132
+ action: {
133
+ type: "batchModify",
134
+ ...params,
135
+ },
136
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
137
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
138
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
139
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
140
+ v: 27,
141
+ },
142
+ vaultAddress: opts?.vaultAddress ?? config.defaultVaultAddress,
143
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
144
+ ? config.defaultExpiresAfter
145
+ : await config.defaultExpiresAfter?.(),
134
146
  });
135
-
136
- const vaultAddress_ = opts?.vaultAddress ?? config.defaultVaultAddress;
137
- const vaultAddress = parser(v.optional(Address))(vaultAddress_);
138
-
139
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
140
- ? config.defaultExpiresAfter
141
- : await config.defaultExpiresAfter?.();
142
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
143
-
144
- return await executeL1Action(config, { action, vaultAddress, expiresAfter }, opts?.signal);
147
+ return await executeL1Action(config, request, opts?.signal);
145
148
  }
@@ -6,7 +6,6 @@ import {
6
6
  type ExtractRequestAction,
7
7
  type ExtractRequestOptions,
8
8
  getSignatureChainId,
9
- globalNonceManager,
10
9
  type MultiSignRequestConfig,
11
10
  Signature,
12
11
  } from "./_base/mod.js";
@@ -117,16 +116,20 @@ export async function cDeposit(
117
116
  params: DeepImmutable<CDepositParameters>,
118
117
  opts?: CDepositOptions,
119
118
  ): Promise<SuccessResponse> {
120
- const action = parser(CDepositRequest.entries.action)({
121
- type: "cDeposit",
122
- hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
123
- signatureChainId: await getSignatureChainId(config),
124
- nonce: globalNonceManager.getNonce(),
125
- ...params,
119
+ const request = parser(CDepositRequest)({
120
+ action: {
121
+ type: "cDeposit",
122
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
123
+ signatureChainId: await getSignatureChainId(config),
124
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
125
+ ...params,
126
+ },
127
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
128
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
129
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
130
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
131
+ v: 27,
132
+ },
126
133
  });
127
- return await executeUserSignedAction(
128
- config,
129
- { action, types: CDepositTypes },
130
- opts?.signal,
131
- );
134
+ return await executeUserSignedAction(config, request, CDepositTypes, opts?.signal);
132
135
  }
@@ -117,15 +117,20 @@ export async function cSignerAction(
117
117
  params: DeepImmutable<CSignerActionParameters>,
118
118
  opts?: CSignerActionOptions,
119
119
  ): Promise<SuccessResponse> {
120
- const action = parser(CSignerActionRequest.entries.action)({
121
- type: "CSignerAction",
122
- ...params,
120
+ const request = parser(CSignerActionRequest)({
121
+ action: {
122
+ type: "CSignerAction",
123
+ ...params,
124
+ },
125
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
126
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
127
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
128
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
129
+ v: 27,
130
+ },
131
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
132
+ ? config.defaultExpiresAfter
133
+ : await config.defaultExpiresAfter?.(),
123
134
  });
124
-
125
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
126
- ? config.defaultExpiresAfter
127
- : await config.defaultExpiresAfter?.();
128
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
129
-
130
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
135
+ return await executeL1Action(config, request, opts?.signal);
131
136
  }
@@ -257,15 +257,20 @@ export async function cValidatorAction(
257
257
  params: DeepImmutable<CValidatorActionParameters>,
258
258
  opts?: CValidatorActionOptions,
259
259
  ): Promise<SuccessResponse> {
260
- const action = parser(CValidatorActionRequest.entries.action)({
261
- type: "CValidatorAction",
262
- ...params,
260
+ const request = parser(CValidatorActionRequest)({
261
+ action: {
262
+ type: "CValidatorAction",
263
+ ...params,
264
+ },
265
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
266
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
267
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
268
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
269
+ v: 27,
270
+ },
271
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
272
+ ? config.defaultExpiresAfter
273
+ : await config.defaultExpiresAfter?.(),
263
274
  });
264
-
265
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
266
- ? config.defaultExpiresAfter
267
- : await config.defaultExpiresAfter?.();
268
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
269
-
270
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
275
+ return await executeL1Action(config, request, opts?.signal);
271
276
  }
@@ -6,7 +6,6 @@ import {
6
6
  type ExtractRequestAction,
7
7
  type ExtractRequestOptions,
8
8
  getSignatureChainId,
9
- globalNonceManager,
10
9
  type MultiSignRequestConfig,
11
10
  Signature,
12
11
  } from "./_base/mod.js";
@@ -117,16 +116,20 @@ export async function cWithdraw(
117
116
  params: DeepImmutable<CWithdrawParameters>,
118
117
  opts?: CWithdrawOptions,
119
118
  ): Promise<SuccessResponse> {
120
- const action = parser(CWithdrawRequest.entries.action)({
121
- type: "cWithdraw",
122
- hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
123
- signatureChainId: await getSignatureChainId(config),
124
- nonce: globalNonceManager.getNonce(),
125
- ...params,
119
+ const request = parser(CWithdrawRequest)({
120
+ action: {
121
+ type: "cWithdraw",
122
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
123
+ signatureChainId: await getSignatureChainId(config),
124
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
125
+ ...params,
126
+ },
127
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
128
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
129
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
130
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
131
+ v: 27,
132
+ },
126
133
  });
127
- return await executeUserSignedAction(
128
- config,
129
- { action, types: CWithdrawTypes },
130
- opts?.signal,
131
- );
134
+ return await executeUserSignedAction(config, request, CWithdrawTypes, opts?.signal);
132
135
  }
@@ -198,18 +198,21 @@ export async function cancel(
198
198
  params: DeepImmutable<CancelParameters>,
199
199
  opts?: CancelOptions,
200
200
  ): Promise<CancelSuccessResponse> {
201
- const action = parser(CancelRequest.entries.action)({
202
- type: "cancel",
203
- ...params,
201
+ const request = parser(CancelRequest)({
202
+ action: {
203
+ type: "cancel",
204
+ ...params,
205
+ },
206
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
207
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
208
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
209
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
210
+ v: 27,
211
+ },
212
+ vaultAddress: opts?.vaultAddress ?? config.defaultVaultAddress,
213
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
214
+ ? config.defaultExpiresAfter
215
+ : await config.defaultExpiresAfter?.(),
204
216
  });
205
-
206
- const vaultAddress_ = opts?.vaultAddress ?? config.defaultVaultAddress;
207
- const vaultAddress = parser(v.optional(Address))(vaultAddress_);
208
-
209
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
210
- ? config.defaultExpiresAfter
211
- : await config.defaultExpiresAfter?.();
212
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
213
-
214
- return await executeL1Action(config, { action, vaultAddress, expiresAfter }, opts?.signal);
217
+ return await executeL1Action(config, request, opts?.signal);
215
218
  }
@@ -116,18 +116,21 @@ export async function cancelByCloid(
116
116
  params: DeepImmutable<CancelByCloidParameters>,
117
117
  opts?: CancelByCloidOptions,
118
118
  ): Promise<CancelSuccessResponse> {
119
- const action = parser(CancelByCloidRequest.entries.action)({
120
- type: "cancelByCloid",
121
- ...params,
119
+ const request = parser(CancelByCloidRequest)({
120
+ action: {
121
+ type: "cancelByCloid",
122
+ ...params,
123
+ },
124
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
125
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
126
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
127
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
128
+ v: 27,
129
+ },
130
+ vaultAddress: opts?.vaultAddress ?? config.defaultVaultAddress,
131
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
132
+ ? config.defaultExpiresAfter
133
+ : await config.defaultExpiresAfter?.(),
122
134
  });
123
-
124
- const vaultAddress_ = opts?.vaultAddress ?? config.defaultVaultAddress;
125
- const vaultAddress = parser(v.optional(Address))(vaultAddress_);
126
-
127
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
128
- ? config.defaultExpiresAfter
129
- : await config.defaultExpiresAfter?.();
130
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
131
-
132
- return await executeL1Action(config, { action, vaultAddress, expiresAfter }, opts?.signal);
135
+ return await executeL1Action(config, request, opts?.signal);
133
136
  }
@@ -82,14 +82,19 @@ export async function claimRewards(
82
82
  config: ExchangeRequestConfig | MultiSignRequestConfig,
83
83
  opts?: ClaimRewardsOptions,
84
84
  ): Promise<SuccessResponse> {
85
- const action = parser(ClaimRewardsRequest.entries.action)({
86
- type: "claimRewards",
85
+ const request = parser(ClaimRewardsRequest)({
86
+ action: {
87
+ type: "claimRewards",
88
+ },
89
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
90
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
91
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
92
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
93
+ v: 27,
94
+ },
95
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
96
+ ? config.defaultExpiresAfter
97
+ : await config.defaultExpiresAfter?.(),
87
98
  });
88
-
89
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
90
- ? config.defaultExpiresAfter
91
- : await config.defaultExpiresAfter?.();
92
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
93
-
94
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
99
+ return await executeL1Action(config, request, opts?.signal);
95
100
  }
@@ -6,7 +6,6 @@ import {
6
6
  type ExtractRequestAction,
7
7
  type ExtractRequestOptions,
8
8
  getSignatureChainId,
9
- globalNonceManager,
10
9
  type MultiSignRequestConfig,
11
10
  Signature,
12
11
  } from "./_base/mod.js";
@@ -174,16 +173,20 @@ export async function convertToMultiSigUser(
174
173
  params: DeepImmutable<ConvertToMultiSigUserParameters>,
175
174
  opts?: ConvertToMultiSigUserOptions,
176
175
  ): Promise<SuccessResponse> {
177
- const action = parser(ConvertToMultiSigUserRequest.entries.action)({
178
- type: "convertToMultiSigUser",
179
- hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
180
- signatureChainId: await getSignatureChainId(config),
181
- nonce: globalNonceManager.getNonce(),
182
- ...params,
176
+ const request = parser(ConvertToMultiSigUserRequest)({
177
+ action: {
178
+ type: "convertToMultiSigUser",
179
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
180
+ signatureChainId: await getSignatureChainId(config),
181
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
182
+ ...params,
183
+ },
184
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
185
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
186
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
187
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
188
+ v: 27,
189
+ },
183
190
  });
184
- return await executeUserSignedAction(
185
- config,
186
- { action, types: ConvertToMultiSigUserTypes },
187
- opts?.signal,
188
- );
191
+ return await executeUserSignedAction(config, request, ConvertToMultiSigUserTypes, opts?.signal);
189
192
  }
@@ -125,15 +125,20 @@ export async function createSubAccount(
125
125
  params: DeepImmutable<CreateSubAccountParameters>,
126
126
  opts?: CreateSubAccountOptions,
127
127
  ): Promise<CreateSubAccountResponse> {
128
- const action = parser(CreateSubAccountRequest.entries.action)({
129
- type: "createSubAccount",
130
- ...params,
128
+ const request = parser(CreateSubAccountRequest)({
129
+ action: {
130
+ type: "createSubAccount",
131
+ ...params,
132
+ },
133
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
134
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
135
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
136
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
137
+ v: 27,
138
+ },
139
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
140
+ ? config.defaultExpiresAfter
141
+ : await config.defaultExpiresAfter?.(),
131
142
  });
132
-
133
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
134
- ? config.defaultExpiresAfter
135
- : await config.defaultExpiresAfter?.();
136
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
137
-
138
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
143
+ return await executeL1Action(config, request, opts?.signal);
139
144
  }
@@ -146,15 +146,20 @@ export async function createVault(
146
146
  params: DeepImmutable<CreateVaultParameters>,
147
147
  opts?: CreateVaultOptions,
148
148
  ): Promise<CreateVaultResponse> {
149
- const action = parser(CreateVaultRequest.entries.action)({
150
- type: "createVault",
151
- ...params,
149
+ const request = parser(CreateVaultRequest)({
150
+ action: {
151
+ type: "createVault",
152
+ ...params,
153
+ },
154
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
155
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
156
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
157
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
158
+ v: 27,
159
+ },
160
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
161
+ ? config.defaultExpiresAfter
162
+ : await config.defaultExpiresAfter?.(),
152
163
  });
153
-
154
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
155
- ? config.defaultExpiresAfter
156
- : await config.defaultExpiresAfter?.();
157
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
158
-
159
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
164
+ return await executeL1Action(config, request, opts?.signal);
160
165
  }
@@ -70,7 +70,7 @@ export type EvmUserModifyOptions = ExtractRequestOptions<v.InferInput<typeof Evm
70
70
  * @param config - General configuration for Exchange API requests.
71
71
  * @param params - Parameters specific to the API request.
72
72
  * @param opts - Request execution options.
73
- * @returns Response for creating a sub-account.
73
+ * @returns Successful response without specific data.
74
74
  *
75
75
  * @throws {ApiRequestError} When the API returns an unsuccessful response.
76
76
  * @throws {TransportError} When the transport layer throws an error.
@@ -96,15 +96,20 @@ export async function evmUserModify(
96
96
  params: DeepImmutable<EvmUserModifyParameters>,
97
97
  opts?: EvmUserModifyOptions,
98
98
  ): Promise<SuccessResponse> {
99
- const action = parser(EvmUserModifyRequest.entries.action)({
100
- type: "evmUserModify",
101
- ...params,
99
+ const request = parser(EvmUserModifyRequest)({
100
+ action: {
101
+ type: "evmUserModify",
102
+ ...params,
103
+ },
104
+ nonce: 0, // Placeholder; actual nonce generated in `executeL1Action`
105
+ signature: { // Placeholder; actual signature generated in `executeL1Action`
106
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
107
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
108
+ v: 27,
109
+ },
110
+ expiresAfter: typeof config.defaultExpiresAfter === "number"
111
+ ? config.defaultExpiresAfter
112
+ : await config.defaultExpiresAfter?.(),
102
113
  });
103
-
104
- const expiresAfter_ = typeof config.defaultExpiresAfter === "number"
105
- ? config.defaultExpiresAfter
106
- : await config.defaultExpiresAfter?.();
107
- const expiresAfter = parser(v.optional(UnsignedInteger))(expiresAfter_);
108
-
109
- return await executeL1Action(config, { action, expiresAfter }, opts?.signal);
114
+ return await executeL1Action(config, request, opts?.signal);
110
115
  }
@@ -0,0 +1,157 @@
1
+ import * as v from "valibot";
2
+ import { Address, type DeepImmutable, Hex, parser, UnsignedInteger } from "../_base.js";
3
+ import {
4
+ type ExchangeRequestConfig,
5
+ executeUserSignedAction,
6
+ type ExtractRequestAction,
7
+ type ExtractRequestOptions,
8
+ getSignatureChainId,
9
+ type MultiSignRequestConfig,
10
+ Signature,
11
+ } from "./_base/mod.js";
12
+
13
+ // -------------------- Schemas --------------------
14
+
15
+ /**
16
+ * Link staking and trading accounts for fee discount attribution.
17
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/fees#staking-linking
18
+ */
19
+ export const LinkStakingUserRequest = /* @__PURE__ */ (() => {
20
+ return v.pipe(
21
+ v.object({
22
+ /** Action to perform. */
23
+ action: v.pipe(
24
+ v.object({
25
+ /** Type of action. */
26
+ type: v.pipe(
27
+ v.literal("linkStakingUser"),
28
+ v.description("Type of action."),
29
+ ),
30
+ /** Chain ID used for signing. */
31
+ signatureChainId: v.pipe(
32
+ Hex,
33
+ v.description("Chain ID used for signing."),
34
+ ),
35
+ /** HyperLiquid network. */
36
+ hyperliquidChain: v.pipe(
37
+ v.union([v.literal("Mainnet"), v.literal("Testnet")]),
38
+ v.description("HyperLiquid network."),
39
+ ),
40
+ /**
41
+ * Target account address.
42
+ * - Trading user initiating: enter staking account address.
43
+ * - Staking user finalizing: enter trading account address.
44
+ */
45
+ user: v.pipe(
46
+ Address,
47
+ v.description(
48
+ "Target account address." +
49
+ "\n- Trading user initiating: enter staking account address." +
50
+ "\n- Staking user finalizing: enter trading account address.",
51
+ ),
52
+ ),
53
+ /**
54
+ * Link phase.
55
+ * - `false` = trading user initiates link request.
56
+ * - `true` = staking user finalizes permanent link.
57
+ */
58
+ isFinalize: v.pipe(
59
+ v.boolean(),
60
+ v.description(
61
+ "Link phase." +
62
+ "\n- `false` = trading user initiates link request." +
63
+ "\n- `true` = staking user finalizes permanent link.",
64
+ ),
65
+ ),
66
+ /** Unique request identifier (current timestamp in ms). */
67
+ nonce: v.pipe(
68
+ UnsignedInteger,
69
+ v.description("Unique request identifier (current timestamp in ms)."),
70
+ ),
71
+ }),
72
+ v.description("Action to perform."),
73
+ ),
74
+ /** Unique request identifier (current timestamp in ms). */
75
+ nonce: v.pipe(
76
+ UnsignedInteger,
77
+ v.description("Unique request identifier (current timestamp in ms)."),
78
+ ),
79
+ /** Cryptographic signature. */
80
+ signature: v.pipe(
81
+ Signature,
82
+ v.description("Cryptographic signature."),
83
+ ),
84
+ }),
85
+ v.description(""),
86
+ );
87
+ })();
88
+ export type LinkStakingUserRequest = v.InferOutput<typeof LinkStakingUserRequest>;
89
+
90
+ import { SuccessResponse } from "./_base/mod.js";
91
+ export { SuccessResponse };
92
+
93
+ // -------------------- Function --------------------
94
+
95
+ /** Action parameters for the {@linkcode linkStakingUser} function. */
96
+ export type LinkStakingUserParameters = ExtractRequestAction<v.InferInput<typeof LinkStakingUserRequest>>;
97
+ /** Request options for the {@linkcode linkStakingUser} function. */
98
+ export type LinkStakingUserOptions = ExtractRequestOptions<v.InferInput<typeof LinkStakingUserRequest>>;
99
+
100
+ /** EIP-712 types for the {@linkcode linkStakingUser} function. */
101
+ export const LinkStakingUserTypes = {
102
+ "HyperliquidTransaction:LinkStakingUser": [
103
+ { name: "hyperliquidChain", type: "string" },
104
+ { name: "user", type: "address" },
105
+ { name: "isFinalize", type: "bool" },
106
+ { name: "nonce", type: "uint64" },
107
+ ],
108
+ };
109
+
110
+ /**
111
+ * Link staking and trading accounts for fee discount attribution.
112
+ * @param config - General configuration for Exchange API requests.
113
+ * @param params - Parameters specific to the API request.
114
+ * @param opts - Request execution options.
115
+ * @returns Successful response without specific data.
116
+ *
117
+ * @throws {ApiRequestError} When the API returns an unsuccessful response.
118
+ * @throws {TransportError} When the transport layer throws an error.
119
+ *
120
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/fees#staking-linking
121
+ * @example
122
+ * ```ts
123
+ * import { HttpTransport } from "@nktkas/hyperliquid";
124
+ * import { linkStakingUser } from "@nktkas/hyperliquid/api/exchange";
125
+ * import { privateKeyToAccount } from "npm:viem/accounts";
126
+ *
127
+ * const wallet = privateKeyToAccount("0x..."); // viem or ethers
128
+ * const transport = new HttpTransport(); // or `WebSocketTransport`
129
+ *
130
+ * await linkStakingUser(
131
+ * { transport, wallet },
132
+ * { user: "0x...", isFinalize: false },
133
+ * );
134
+ * ```
135
+ */
136
+ export async function linkStakingUser(
137
+ config: ExchangeRequestConfig | MultiSignRequestConfig,
138
+ params: DeepImmutable<LinkStakingUserParameters>,
139
+ opts?: LinkStakingUserOptions,
140
+ ): Promise<SuccessResponse> {
141
+ const request = parser(LinkStakingUserRequest)({
142
+ action: {
143
+ type: "linkStakingUser",
144
+ hyperliquidChain: config.transport.isTestnet ? "Testnet" : "Mainnet",
145
+ signatureChainId: await getSignatureChainId(config),
146
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
147
+ ...params,
148
+ },
149
+ nonce: 0, // Placeholder; actual nonce generated in `executeUserSignedAction` to prevent race conditions
150
+ signature: { // Placeholder; actual signature generated in `executeUserSignedAction`
151
+ r: "0x0000000000000000000000000000000000000000000000000000000000000000",
152
+ s: "0x0000000000000000000000000000000000000000000000000000000000000000",
153
+ v: 27,
154
+ },
155
+ });
156
+ return await executeUserSignedAction(config, request, LinkStakingUserTypes, opts?.signal);
157
+ }