@nktkas/hyperliquid 0.25.7 → 0.25.8

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 (516) hide show
  1. package/CONTRIBUTING.md +26 -19
  2. package/README.md +57 -5
  3. package/esm/bin/cli.js +1 -0
  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.map +1 -1
  73. package/esm/src/api/exchange/multiSig.js +17 -16
  74. package/esm/src/api/exchange/multiSig.js.map +1 -1
  75. package/esm/src/api/exchange/noop.d.ts.map +1 -1
  76. package/esm/src/api/exchange/noop.js +14 -7
  77. package/esm/src/api/exchange/noop.js.map +1 -1
  78. package/esm/src/api/exchange/order.d.ts.map +1 -1
  79. package/esm/src/api/exchange/order.js +16 -10
  80. package/esm/src/api/exchange/order.js.map +1 -1
  81. package/esm/src/api/exchange/perpDeploy.d.ts.map +1 -1
  82. package/esm/src/api/exchange/perpDeploy.js +15 -8
  83. package/esm/src/api/exchange/perpDeploy.js.map +1 -1
  84. package/esm/src/api/exchange/registerReferrer.d.ts.map +1 -1
  85. package/esm/src/api/exchange/registerReferrer.js +15 -8
  86. package/esm/src/api/exchange/registerReferrer.js.map +1 -1
  87. package/esm/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
  88. package/esm/src/api/exchange/reserveRequestWeight.js +15 -8
  89. package/esm/src/api/exchange/reserveRequestWeight.js.map +1 -1
  90. package/esm/src/api/exchange/scheduleCancel.js +16 -10
  91. package/esm/src/api/exchange/scheduleCancel.js.map +1 -1
  92. package/esm/src/api/exchange/sendAsset.d.ts.map +1 -1
  93. package/esm/src/api/exchange/sendAsset.js +16 -8
  94. package/esm/src/api/exchange/sendAsset.js.map +1 -1
  95. package/esm/src/api/exchange/setDisplayName.d.ts.map +1 -1
  96. package/esm/src/api/exchange/setDisplayName.js +15 -8
  97. package/esm/src/api/exchange/setDisplayName.js.map +1 -1
  98. package/esm/src/api/exchange/setReferrer.d.ts.map +1 -1
  99. package/esm/src/api/exchange/setReferrer.js +15 -8
  100. package/esm/src/api/exchange/setReferrer.js.map +1 -1
  101. package/esm/src/api/exchange/spotDeploy.d.ts.map +1 -1
  102. package/esm/src/api/exchange/spotDeploy.js +15 -8
  103. package/esm/src/api/exchange/spotDeploy.js.map +1 -1
  104. package/esm/src/api/exchange/spotSend.d.ts.map +1 -1
  105. package/esm/src/api/exchange/spotSend.js +16 -8
  106. package/esm/src/api/exchange/spotSend.js.map +1 -1
  107. package/esm/src/api/exchange/spotUser.d.ts.map +1 -1
  108. package/esm/src/api/exchange/spotUser.js +15 -8
  109. package/esm/src/api/exchange/spotUser.js.map +1 -1
  110. package/esm/src/api/exchange/subAccountModify.d.ts.map +1 -1
  111. package/esm/src/api/exchange/subAccountModify.js +15 -8
  112. package/esm/src/api/exchange/subAccountModify.js.map +1 -1
  113. package/esm/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
  114. package/esm/src/api/exchange/subAccountSpotTransfer.js +15 -8
  115. package/esm/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
  116. package/esm/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
  117. package/esm/src/api/exchange/subAccountTransfer.js +15 -8
  118. package/esm/src/api/exchange/subAccountTransfer.js.map +1 -1
  119. package/esm/src/api/exchange/tokenDelegate.d.ts.map +1 -1
  120. package/esm/src/api/exchange/tokenDelegate.js +16 -8
  121. package/esm/src/api/exchange/tokenDelegate.js.map +1 -1
  122. package/esm/src/api/exchange/twapCancel.d.ts.map +1 -1
  123. package/esm/src/api/exchange/twapCancel.js +16 -10
  124. package/esm/src/api/exchange/twapCancel.js.map +1 -1
  125. package/esm/src/api/exchange/twapOrder.d.ts.map +1 -1
  126. package/esm/src/api/exchange/twapOrder.js +16 -10
  127. package/esm/src/api/exchange/twapOrder.js.map +1 -1
  128. package/esm/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
  129. package/esm/src/api/exchange/updateIsolatedMargin.js +16 -10
  130. package/esm/src/api/exchange/updateIsolatedMargin.js.map +1 -1
  131. package/esm/src/api/exchange/updateLeverage.d.ts.map +1 -1
  132. package/esm/src/api/exchange/updateLeverage.js +16 -10
  133. package/esm/src/api/exchange/updateLeverage.js.map +1 -1
  134. package/esm/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
  135. package/esm/src/api/exchange/usdClassTransfer.js +16 -8
  136. package/esm/src/api/exchange/usdClassTransfer.js.map +1 -1
  137. package/esm/src/api/exchange/usdSend.d.ts.map +1 -1
  138. package/esm/src/api/exchange/usdSend.js +16 -8
  139. package/esm/src/api/exchange/usdSend.js.map +1 -1
  140. package/esm/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
  141. package/esm/src/api/exchange/userDexAbstraction.js +16 -8
  142. package/esm/src/api/exchange/userDexAbstraction.js.map +1 -1
  143. package/esm/src/api/exchange/vaultDistribute.d.ts.map +1 -1
  144. package/esm/src/api/exchange/vaultDistribute.js +15 -8
  145. package/esm/src/api/exchange/vaultDistribute.js.map +1 -1
  146. package/esm/src/api/exchange/vaultModify.d.ts.map +1 -1
  147. package/esm/src/api/exchange/vaultModify.js +15 -8
  148. package/esm/src/api/exchange/vaultModify.js.map +1 -1
  149. package/esm/src/api/exchange/vaultTransfer.d.ts.map +1 -1
  150. package/esm/src/api/exchange/vaultTransfer.js +15 -8
  151. package/esm/src/api/exchange/vaultTransfer.js.map +1 -1
  152. package/esm/src/api/exchange/withdraw3.d.ts.map +1 -1
  153. package/esm/src/api/exchange/withdraw3.js +16 -8
  154. package/esm/src/api/exchange/withdraw3.js.map +1 -1
  155. package/esm/src/api/exchange/~client.d.ts +31 -3
  156. package/esm/src/api/exchange/~client.d.ts.map +1 -1
  157. package/esm/src/api/exchange/~client.js +27 -4
  158. package/esm/src/api/exchange/~client.js.map +1 -1
  159. package/esm/src/api/exchange/~mod.d.ts +1 -0
  160. package/esm/src/api/exchange/~mod.d.ts.map +1 -1
  161. package/esm/src/api/exchange/~mod.js +1 -0
  162. package/esm/src/api/exchange/~mod.js.map +1 -1
  163. package/esm/src/api/info/allPerpMetas.d.ts +5 -0
  164. package/esm/src/api/info/allPerpMetas.d.ts.map +1 -1
  165. package/esm/src/api/info/meta.d.ts +5 -0
  166. package/esm/src/api/info/meta.d.ts.map +1 -1
  167. package/esm/src/api/info/meta.js +2 -0
  168. package/esm/src/api/info/meta.js.map +1 -1
  169. package/esm/src/api/info/metaAndAssetCtxs.d.ts +5 -0
  170. package/esm/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
  171. package/esm/src/api/info/perpDexs.d.ts +4 -0
  172. package/esm/src/api/info/perpDexs.d.ts.map +1 -1
  173. package/esm/src/api/info/perpDexs.js +5 -0
  174. package/esm/src/api/info/perpDexs.js.map +1 -1
  175. package/esm/src/api/info/spotClearinghouseState.d.ts +0 -5
  176. package/esm/src/api/info/spotClearinghouseState.d.ts.map +1 -1
  177. package/esm/src/api/info/spotClearinghouseState.js +2 -14
  178. package/esm/src/api/info/spotClearinghouseState.js.map +1 -1
  179. package/esm/src/api/info/userFees.d.ts +27 -2
  180. package/esm/src/api/info/userFees.d.ts.map +1 -1
  181. package/esm/src/api/info/userFees.js +29 -1
  182. package/esm/src/api/info/userFees.js.map +1 -1
  183. package/esm/src/api/info/webData2.d.ts +6 -0
  184. package/esm/src/api/info/webData2.d.ts.map +1 -1
  185. package/esm/src/api/info/~client.d.ts +9 -1
  186. package/esm/src/api/info/~client.d.ts.map +1 -1
  187. package/esm/src/api/subscription/spotState.d.ts +91 -0
  188. package/esm/src/api/subscription/spotState.d.ts.map +1 -0
  189. package/esm/src/api/subscription/spotState.js +58 -0
  190. package/esm/src/api/subscription/spotState.js.map +1 -0
  191. package/esm/src/api/subscription/webData2.d.ts +5 -0
  192. package/esm/src/api/subscription/webData2.d.ts.map +1 -1
  193. package/esm/src/api/subscription/~client.d.ts +22 -0
  194. package/esm/src/api/subscription/~client.d.ts.map +1 -1
  195. package/esm/src/api/subscription/~client.js +23 -0
  196. package/esm/src/api/subscription/~client.js.map +1 -1
  197. package/esm/src/api/subscription/~mod.d.ts +1 -0
  198. package/esm/src/api/subscription/~mod.d.ts.map +1 -1
  199. package/esm/src/api/subscription/~mod.js +1 -0
  200. package/esm/src/api/subscription/~mod.js.map +1 -1
  201. package/esm/src/signing/_signTypedData.d.ts +1 -1
  202. package/esm/src/signing/_signTypedData.d.ts.map +1 -1
  203. package/esm/src/signing/_signTypedData.js +1 -1
  204. package/esm/src/signing/_signTypedData.js.map +1 -1
  205. package/esm/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
  206. package/esm/src/utils/_eip712.d.ts.map +1 -0
  207. package/esm/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -11
  208. package/esm/src/utils/_eip712.js.map +1 -0
  209. package/esm/src/utils/_format.d.ts +3 -4
  210. package/esm/src/utils/_format.d.ts.map +1 -1
  211. package/esm/src/utils/_format.js +98 -88
  212. package/esm/src/utils/_format.js.map +1 -1
  213. package/esm/src/utils/_recover.d.ts +89 -0
  214. package/esm/src/utils/_recover.d.ts.map +1 -0
  215. package/esm/src/utils/_recover.js +119 -0
  216. package/esm/src/utils/_recover.js.map +1 -0
  217. package/esm/src/utils/mod.d.ts +1 -0
  218. package/esm/src/utils/mod.d.ts.map +1 -1
  219. package/esm/src/utils/mod.js +1 -0
  220. package/esm/src/utils/mod.js.map +1 -1
  221. package/package.json +3 -2
  222. package/script/bin/cli.js +1 -0
  223. package/script/bin/cli.js.map +1 -1
  224. package/script/src/api/_common_schemas.d.ts +19 -0
  225. package/script/src/api/_common_schemas.d.ts.map +1 -1
  226. package/script/src/api/_common_schemas.js +16 -1
  227. package/script/src/api/_common_schemas.js.map +1 -1
  228. package/script/src/api/exchange/_base/_execute.d.ts +6 -7
  229. package/script/src/api/exchange/_base/_execute.d.ts.map +1 -1
  230. package/script/src/api/exchange/_base/_execute.js +67 -43
  231. package/script/src/api/exchange/_base/_execute.js.map +1 -1
  232. package/script/src/api/exchange/_base/_types.d.ts +0 -7
  233. package/script/src/api/exchange/_base/_types.d.ts.map +1 -1
  234. package/script/src/api/exchange/_base/mod.d.ts +0 -2
  235. package/script/src/api/exchange/_base/mod.d.ts.map +1 -1
  236. package/script/src/api/exchange/_base/mod.js +0 -2
  237. package/script/src/api/exchange/_base/mod.js.map +1 -1
  238. package/script/src/api/exchange/agentEnableDexAbstraction.d.ts.map +1 -1
  239. package/script/src/api/exchange/agentEnableDexAbstraction.js +14 -7
  240. package/script/src/api/exchange/agentEnableDexAbstraction.js.map +1 -1
  241. package/script/src/api/exchange/approveAgent.d.ts.map +1 -1
  242. package/script/src/api/exchange/approveAgent.js +15 -7
  243. package/script/src/api/exchange/approveAgent.js.map +1 -1
  244. package/script/src/api/exchange/approveBuilderFee.d.ts.map +1 -1
  245. package/script/src/api/exchange/approveBuilderFee.js +15 -7
  246. package/script/src/api/exchange/approveBuilderFee.js.map +1 -1
  247. package/script/src/api/exchange/batchModify.d.ts.map +1 -1
  248. package/script/src/api/exchange/batchModify.js +16 -10
  249. package/script/src/api/exchange/batchModify.js.map +1 -1
  250. package/script/src/api/exchange/cDeposit.d.ts.map +1 -1
  251. package/script/src/api/exchange/cDeposit.js +15 -7
  252. package/script/src/api/exchange/cDeposit.js.map +1 -1
  253. package/script/src/api/exchange/cSignerAction.d.ts.map +1 -1
  254. package/script/src/api/exchange/cSignerAction.js +15 -8
  255. package/script/src/api/exchange/cSignerAction.js.map +1 -1
  256. package/script/src/api/exchange/cValidatorAction.d.ts.map +1 -1
  257. package/script/src/api/exchange/cValidatorAction.js +15 -8
  258. package/script/src/api/exchange/cValidatorAction.js.map +1 -1
  259. package/script/src/api/exchange/cWithdraw.d.ts.map +1 -1
  260. package/script/src/api/exchange/cWithdraw.js +15 -7
  261. package/script/src/api/exchange/cWithdraw.js.map +1 -1
  262. package/script/src/api/exchange/cancel.d.ts.map +1 -1
  263. package/script/src/api/exchange/cancel.js +16 -10
  264. package/script/src/api/exchange/cancel.js.map +1 -1
  265. package/script/src/api/exchange/cancelByCloid.d.ts.map +1 -1
  266. package/script/src/api/exchange/cancelByCloid.js +16 -10
  267. package/script/src/api/exchange/cancelByCloid.js.map +1 -1
  268. package/script/src/api/exchange/claimRewards.d.ts.map +1 -1
  269. package/script/src/api/exchange/claimRewards.js +14 -7
  270. package/script/src/api/exchange/claimRewards.js.map +1 -1
  271. package/script/src/api/exchange/convertToMultiSigUser.d.ts.map +1 -1
  272. package/script/src/api/exchange/convertToMultiSigUser.js +15 -7
  273. package/script/src/api/exchange/convertToMultiSigUser.js.map +1 -1
  274. package/script/src/api/exchange/createSubAccount.d.ts.map +1 -1
  275. package/script/src/api/exchange/createSubAccount.js +15 -8
  276. package/script/src/api/exchange/createSubAccount.js.map +1 -1
  277. package/script/src/api/exchange/createVault.d.ts.map +1 -1
  278. package/script/src/api/exchange/createVault.js +15 -8
  279. package/script/src/api/exchange/createVault.js.map +1 -1
  280. package/script/src/api/exchange/evmUserModify.d.ts +1 -1
  281. package/script/src/api/exchange/evmUserModify.d.ts.map +1 -1
  282. package/script/src/api/exchange/evmUserModify.js +16 -9
  283. package/script/src/api/exchange/evmUserModify.js.map +1 -1
  284. package/script/src/api/exchange/linkStakingUser.d.ts +112 -0
  285. package/script/src/api/exchange/linkStakingUser.d.ts.map +1 -0
  286. package/script/src/api/exchange/linkStakingUser.js +136 -0
  287. package/script/src/api/exchange/linkStakingUser.js.map +1 -0
  288. package/script/src/api/exchange/modify.d.ts.map +1 -1
  289. package/script/src/api/exchange/modify.js +16 -10
  290. package/script/src/api/exchange/modify.js.map +1 -1
  291. package/script/src/api/exchange/multiSig.d.ts.map +1 -1
  292. package/script/src/api/exchange/multiSig.js +17 -16
  293. package/script/src/api/exchange/multiSig.js.map +1 -1
  294. package/script/src/api/exchange/noop.d.ts.map +1 -1
  295. package/script/src/api/exchange/noop.js +14 -7
  296. package/script/src/api/exchange/noop.js.map +1 -1
  297. package/script/src/api/exchange/order.d.ts.map +1 -1
  298. package/script/src/api/exchange/order.js +16 -10
  299. package/script/src/api/exchange/order.js.map +1 -1
  300. package/script/src/api/exchange/perpDeploy.d.ts.map +1 -1
  301. package/script/src/api/exchange/perpDeploy.js +15 -8
  302. package/script/src/api/exchange/perpDeploy.js.map +1 -1
  303. package/script/src/api/exchange/registerReferrer.d.ts.map +1 -1
  304. package/script/src/api/exchange/registerReferrer.js +15 -8
  305. package/script/src/api/exchange/registerReferrer.js.map +1 -1
  306. package/script/src/api/exchange/reserveRequestWeight.d.ts.map +1 -1
  307. package/script/src/api/exchange/reserveRequestWeight.js +15 -8
  308. package/script/src/api/exchange/reserveRequestWeight.js.map +1 -1
  309. package/script/src/api/exchange/scheduleCancel.js +16 -10
  310. package/script/src/api/exchange/scheduleCancel.js.map +1 -1
  311. package/script/src/api/exchange/sendAsset.d.ts.map +1 -1
  312. package/script/src/api/exchange/sendAsset.js +15 -7
  313. package/script/src/api/exchange/sendAsset.js.map +1 -1
  314. package/script/src/api/exchange/setDisplayName.d.ts.map +1 -1
  315. package/script/src/api/exchange/setDisplayName.js +15 -8
  316. package/script/src/api/exchange/setDisplayName.js.map +1 -1
  317. package/script/src/api/exchange/setReferrer.d.ts.map +1 -1
  318. package/script/src/api/exchange/setReferrer.js +15 -8
  319. package/script/src/api/exchange/setReferrer.js.map +1 -1
  320. package/script/src/api/exchange/spotDeploy.d.ts.map +1 -1
  321. package/script/src/api/exchange/spotDeploy.js +15 -8
  322. package/script/src/api/exchange/spotDeploy.js.map +1 -1
  323. package/script/src/api/exchange/spotSend.d.ts.map +1 -1
  324. package/script/src/api/exchange/spotSend.js +15 -7
  325. package/script/src/api/exchange/spotSend.js.map +1 -1
  326. package/script/src/api/exchange/spotUser.d.ts.map +1 -1
  327. package/script/src/api/exchange/spotUser.js +15 -8
  328. package/script/src/api/exchange/spotUser.js.map +1 -1
  329. package/script/src/api/exchange/subAccountModify.d.ts.map +1 -1
  330. package/script/src/api/exchange/subAccountModify.js +15 -8
  331. package/script/src/api/exchange/subAccountModify.js.map +1 -1
  332. package/script/src/api/exchange/subAccountSpotTransfer.d.ts.map +1 -1
  333. package/script/src/api/exchange/subAccountSpotTransfer.js +15 -8
  334. package/script/src/api/exchange/subAccountSpotTransfer.js.map +1 -1
  335. package/script/src/api/exchange/subAccountTransfer.d.ts.map +1 -1
  336. package/script/src/api/exchange/subAccountTransfer.js +15 -8
  337. package/script/src/api/exchange/subAccountTransfer.js.map +1 -1
  338. package/script/src/api/exchange/tokenDelegate.d.ts.map +1 -1
  339. package/script/src/api/exchange/tokenDelegate.js +15 -7
  340. package/script/src/api/exchange/tokenDelegate.js.map +1 -1
  341. package/script/src/api/exchange/twapCancel.d.ts.map +1 -1
  342. package/script/src/api/exchange/twapCancel.js +16 -10
  343. package/script/src/api/exchange/twapCancel.js.map +1 -1
  344. package/script/src/api/exchange/twapOrder.d.ts.map +1 -1
  345. package/script/src/api/exchange/twapOrder.js +16 -10
  346. package/script/src/api/exchange/twapOrder.js.map +1 -1
  347. package/script/src/api/exchange/updateIsolatedMargin.d.ts.map +1 -1
  348. package/script/src/api/exchange/updateIsolatedMargin.js +16 -10
  349. package/script/src/api/exchange/updateIsolatedMargin.js.map +1 -1
  350. package/script/src/api/exchange/updateLeverage.d.ts.map +1 -1
  351. package/script/src/api/exchange/updateLeverage.js +16 -10
  352. package/script/src/api/exchange/updateLeverage.js.map +1 -1
  353. package/script/src/api/exchange/usdClassTransfer.d.ts.map +1 -1
  354. package/script/src/api/exchange/usdClassTransfer.js +15 -7
  355. package/script/src/api/exchange/usdClassTransfer.js.map +1 -1
  356. package/script/src/api/exchange/usdSend.d.ts.map +1 -1
  357. package/script/src/api/exchange/usdSend.js +15 -7
  358. package/script/src/api/exchange/usdSend.js.map +1 -1
  359. package/script/src/api/exchange/userDexAbstraction.d.ts.map +1 -1
  360. package/script/src/api/exchange/userDexAbstraction.js +15 -7
  361. package/script/src/api/exchange/userDexAbstraction.js.map +1 -1
  362. package/script/src/api/exchange/vaultDistribute.d.ts.map +1 -1
  363. package/script/src/api/exchange/vaultDistribute.js +15 -8
  364. package/script/src/api/exchange/vaultDistribute.js.map +1 -1
  365. package/script/src/api/exchange/vaultModify.d.ts.map +1 -1
  366. package/script/src/api/exchange/vaultModify.js +15 -8
  367. package/script/src/api/exchange/vaultModify.js.map +1 -1
  368. package/script/src/api/exchange/vaultTransfer.d.ts.map +1 -1
  369. package/script/src/api/exchange/vaultTransfer.js +15 -8
  370. package/script/src/api/exchange/vaultTransfer.js.map +1 -1
  371. package/script/src/api/exchange/withdraw3.d.ts.map +1 -1
  372. package/script/src/api/exchange/withdraw3.js +15 -7
  373. package/script/src/api/exchange/withdraw3.js.map +1 -1
  374. package/script/src/api/exchange/~client.d.ts +31 -3
  375. package/script/src/api/exchange/~client.d.ts.map +1 -1
  376. package/script/src/api/exchange/~client.js +29 -6
  377. package/script/src/api/exchange/~client.js.map +1 -1
  378. package/script/src/api/exchange/~mod.d.ts +1 -0
  379. package/script/src/api/exchange/~mod.d.ts.map +1 -1
  380. package/script/src/api/exchange/~mod.js +1 -0
  381. package/script/src/api/exchange/~mod.js.map +1 -1
  382. package/script/src/api/info/allPerpMetas.d.ts +5 -0
  383. package/script/src/api/info/allPerpMetas.d.ts.map +1 -1
  384. package/script/src/api/info/meta.d.ts +5 -0
  385. package/script/src/api/info/meta.d.ts.map +1 -1
  386. package/script/src/api/info/meta.js +2 -0
  387. package/script/src/api/info/meta.js.map +1 -1
  388. package/script/src/api/info/metaAndAssetCtxs.d.ts +5 -0
  389. package/script/src/api/info/metaAndAssetCtxs.d.ts.map +1 -1
  390. package/script/src/api/info/perpDexs.d.ts +4 -0
  391. package/script/src/api/info/perpDexs.d.ts.map +1 -1
  392. package/script/src/api/info/perpDexs.js +5 -0
  393. package/script/src/api/info/perpDexs.js.map +1 -1
  394. package/script/src/api/info/spotClearinghouseState.d.ts +0 -5
  395. package/script/src/api/info/spotClearinghouseState.d.ts.map +1 -1
  396. package/script/src/api/info/spotClearinghouseState.js +2 -14
  397. package/script/src/api/info/spotClearinghouseState.js.map +1 -1
  398. package/script/src/api/info/userFees.d.ts +27 -2
  399. package/script/src/api/info/userFees.d.ts.map +1 -1
  400. package/script/src/api/info/userFees.js +29 -1
  401. package/script/src/api/info/userFees.js.map +1 -1
  402. package/script/src/api/info/webData2.d.ts +6 -0
  403. package/script/src/api/info/webData2.d.ts.map +1 -1
  404. package/script/src/api/info/~client.d.ts +9 -1
  405. package/script/src/api/info/~client.d.ts.map +1 -1
  406. package/script/src/api/subscription/spotState.d.ts +91 -0
  407. package/script/src/api/subscription/spotState.d.ts.map +1 -0
  408. package/script/src/api/subscription/spotState.js +95 -0
  409. package/script/src/api/subscription/spotState.js.map +1 -0
  410. package/script/src/api/subscription/webData2.d.ts +5 -0
  411. package/script/src/api/subscription/webData2.d.ts.map +1 -1
  412. package/script/src/api/subscription/~client.d.ts +22 -0
  413. package/script/src/api/subscription/~client.d.ts.map +1 -1
  414. package/script/src/api/subscription/~client.js +23 -0
  415. package/script/src/api/subscription/~client.js.map +1 -1
  416. package/script/src/api/subscription/~mod.d.ts +1 -0
  417. package/script/src/api/subscription/~mod.d.ts.map +1 -1
  418. package/script/src/api/subscription/~mod.js +1 -0
  419. package/script/src/api/subscription/~mod.js.map +1 -1
  420. package/script/src/signing/_signTypedData.d.ts +1 -1
  421. package/script/src/signing/_signTypedData.d.ts.map +1 -1
  422. package/script/src/signing/_signTypedData.js +1 -1
  423. package/script/src/signing/_signTypedData.js.map +1 -1
  424. package/script/src/utils/{_minimalEIP712Signer.d.ts → _eip712.d.ts} +16 -1
  425. package/script/src/utils/_eip712.d.ts.map +1 -0
  426. package/script/src/utils/{_minimalEIP712Signer.js → _eip712.js} +14 -9
  427. package/script/src/utils/_eip712.js.map +1 -0
  428. package/script/src/utils/_format.d.ts +3 -4
  429. package/script/src/utils/_format.d.ts.map +1 -1
  430. package/script/src/utils/_format.js +98 -88
  431. package/script/src/utils/_format.js.map +1 -1
  432. package/script/src/utils/_recover.d.ts +89 -0
  433. package/script/src/utils/_recover.d.ts.map +1 -0
  434. package/script/src/utils/_recover.js +156 -0
  435. package/script/src/utils/_recover.js.map +1 -0
  436. package/script/src/utils/mod.d.ts +1 -0
  437. package/script/src/utils/mod.d.ts.map +1 -1
  438. package/script/src/utils/mod.js +1 -0
  439. package/script/src/utils/mod.js.map +1 -1
  440. package/src/bin/cli.ts +1 -0
  441. package/src/src/api/_common_schemas.ts +34 -0
  442. package/src/src/api/exchange/_base/_execute.ts +73 -49
  443. package/src/src/api/exchange/_base/_types.ts +0 -7
  444. package/src/src/api/exchange/_base/mod.ts +0 -2
  445. package/src/src/api/exchange/agentEnableDexAbstraction.ts +14 -9
  446. package/src/src/api/exchange/approveAgent.ts +15 -12
  447. package/src/src/api/exchange/approveBuilderFee.ts +15 -12
  448. package/src/src/api/exchange/batchModify.ts +16 -13
  449. package/src/src/api/exchange/cDeposit.ts +15 -12
  450. package/src/src/api/exchange/cSignerAction.ts +15 -10
  451. package/src/src/api/exchange/cValidatorAction.ts +15 -10
  452. package/src/src/api/exchange/cWithdraw.ts +15 -12
  453. package/src/src/api/exchange/cancel.ts +16 -13
  454. package/src/src/api/exchange/cancelByCloid.ts +16 -13
  455. package/src/src/api/exchange/claimRewards.ts +14 -9
  456. package/src/src/api/exchange/convertToMultiSigUser.ts +15 -12
  457. package/src/src/api/exchange/createSubAccount.ts +15 -10
  458. package/src/src/api/exchange/createVault.ts +15 -10
  459. package/src/src/api/exchange/evmUserModify.ts +16 -11
  460. package/src/src/api/exchange/linkStakingUser.ts +157 -0
  461. package/src/src/api/exchange/modify.ts +16 -13
  462. package/src/src/api/exchange/multiSig.ts +17 -23
  463. package/src/src/api/exchange/noop.ts +14 -9
  464. package/src/src/api/exchange/order.ts +16 -13
  465. package/src/src/api/exchange/perpDeploy.ts +15 -10
  466. package/src/src/api/exchange/registerReferrer.ts +15 -10
  467. package/src/src/api/exchange/reserveRequestWeight.ts +15 -10
  468. package/src/src/api/exchange/scheduleCancel.ts +16 -13
  469. package/src/src/api/exchange/sendAsset.ts +15 -12
  470. package/src/src/api/exchange/setDisplayName.ts +15 -10
  471. package/src/src/api/exchange/setReferrer.ts +15 -10
  472. package/src/src/api/exchange/spotDeploy.ts +15 -10
  473. package/src/src/api/exchange/spotSend.ts +15 -12
  474. package/src/src/api/exchange/spotUser.ts +15 -10
  475. package/src/src/api/exchange/subAccountModify.ts +15 -10
  476. package/src/src/api/exchange/subAccountSpotTransfer.ts +15 -10
  477. package/src/src/api/exchange/subAccountTransfer.ts +15 -10
  478. package/src/src/api/exchange/tokenDelegate.ts +15 -12
  479. package/src/src/api/exchange/twapCancel.ts +16 -13
  480. package/src/src/api/exchange/twapOrder.ts +16 -13
  481. package/src/src/api/exchange/updateIsolatedMargin.ts +16 -13
  482. package/src/src/api/exchange/updateLeverage.ts +16 -13
  483. package/src/src/api/exchange/usdClassTransfer.ts +15 -12
  484. package/src/src/api/exchange/usdSend.ts +15 -12
  485. package/src/src/api/exchange/userDexAbstraction.ts +15 -12
  486. package/src/src/api/exchange/vaultDistribute.ts +15 -10
  487. package/src/src/api/exchange/vaultModify.ts +15 -10
  488. package/src/src/api/exchange/vaultTransfer.ts +15 -10
  489. package/src/src/api/exchange/withdraw3.ts +15 -12
  490. package/src/src/api/exchange/~client.ts +30 -5
  491. package/src/src/api/exchange/~mod.ts +1 -0
  492. package/src/src/api/info/meta.ts +7 -0
  493. package/src/src/api/info/perpDexs.ts +10 -0
  494. package/src/src/api/info/spotClearinghouseState.ts +3 -33
  495. package/src/src/api/info/userFees.ts +46 -1
  496. package/src/src/api/subscription/spotState.ts +96 -0
  497. package/src/src/api/subscription/~client.ts +25 -0
  498. package/src/src/api/subscription/~mod.ts +1 -0
  499. package/src/src/signing/_signTypedData.ts +1 -1
  500. package/src/src/utils/{_minimalEIP712Signer.ts → _eip712.ts} +22 -29
  501. package/src/src/utils/_format.ts +99 -98
  502. package/src/src/utils/_recover.ts +178 -0
  503. package/src/src/utils/mod.ts +1 -0
  504. package/esm/src/api/exchange/_base/_sequential.d.ts +0 -30
  505. package/esm/src/api/exchange/_base/_sequential.d.ts.map +0 -1
  506. package/esm/src/api/exchange/_base/_sequential.js +0 -69
  507. package/esm/src/api/exchange/_base/_sequential.js.map +0 -1
  508. package/esm/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
  509. package/esm/src/utils/_minimalEIP712Signer.js.map +0 -1
  510. package/script/src/api/exchange/_base/_sequential.d.ts +0 -30
  511. package/script/src/api/exchange/_base/_sequential.d.ts.map +0 -1
  512. package/script/src/api/exchange/_base/_sequential.js +0 -72
  513. package/script/src/api/exchange/_base/_sequential.js.map +0 -1
  514. package/script/src/utils/_minimalEIP712Signer.d.ts.map +0 -1
  515. package/script/src/utils/_minimalEIP712Signer.js.map +0 -1
  516. package/src/src/api/exchange/_base/_sequential.ts +0 -82
@@ -2,13 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatPrice = formatPrice;
4
4
  exports.formatSize = formatSize;
5
- const _base_js_1 = require("../_base.js");
6
5
  /**
7
6
  * Format price according to Hyperliquid {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size | rules}:
8
7
  * - Maximum 5 significant figures
9
- * - Maximum (6 for perp, 8 for spot) - `szDecimals` decimal places
8
+ * - Maximum 6 (for perp) or 8 (for spot) - `szDecimals` decimal places
10
9
  * - Integer prices are always allowed regardless of significant figures
11
- * - Remove trailing zeros
12
10
  * @example
13
11
  * ```ts
14
12
  * import { formatPrice } from "@nktkas/hyperliquid/utils";
@@ -19,133 +17,145 @@ const _base_js_1 = require("../_base.js");
19
17
  * ```
20
18
  */
21
19
  function formatPrice(price, szDecimals, isPerp = true) {
22
- // Prepare: trim, validate, normalize leading/trailing zeros
23
- let priceStr = prepareNumber(typeof price === "string" ? price : price.toString());
24
- // Integer prices bypass sig figs limit per spec
25
- if (!priceStr.includes(".")) {
26
- return priceStr;
27
- }
28
- // Apply decimal limit: max (6 for perp, 8 for spot) - `szDecimals` decimals
20
+ price = price.toString().trim();
21
+ assertNumberString(price);
22
+ // Integer prices are always allowed
23
+ if (/^-?\d+$/.test(price))
24
+ return trimZeros(price);
25
+ // Apply decimal limit: max 6 (perp) or 8 (spot) - szDecimals
29
26
  const maxDecimals = Math.max((isPerp ? 6 : 8) - szDecimals, 0);
30
- priceStr = truncateDecimals(priceStr, maxDecimals);
27
+ price = StringMath.toFixedTruncate(price, maxDecimals);
31
28
  // Apply sig figs limit: max 5 significant figures
32
- priceStr = truncateSigFigs(priceStr, 5);
33
- return priceStr;
29
+ price = StringMath.toPrecisionTruncate(price, 5);
30
+ return price;
34
31
  }
35
32
  /**
36
33
  * Format size according to Hyperliquid {@link https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size | rules}:
37
- * - Truncate to `szDecimals` decimal places
38
- * - Remove trailing zeros
34
+ * - Truncate decimal places to `szDecimals`
39
35
  * @example
40
36
  * ```ts
41
37
  * import { formatSize } from "@nktkas/hyperliquid/utils";
42
38
  *
43
39
  * const size = formatSize("1.23456789", 5); // → "1.23456"
44
40
  * ```
41
+ * @note May return 0 if the value is not suitable, but when closing a position, a size of 0 means the full size.
45
42
  */
46
43
  function formatSize(size, szDecimals) {
47
- // Prepare: trim, validate, normalize leading/trailing zeros
48
- let sizeStr = prepareNumber(typeof size === "string" ? size : size.toString());
49
- // Truncate to `szDecimals` decimal places
50
- sizeStr = truncateDecimals(sizeStr, szDecimals);
51
- return sizeStr;
52
- }
53
- /**
54
- * Prepare number string for processing:
55
- * 1. Trim whitespace
56
- * 2. Validate format (decimal number, not hex/scientific)
57
- * 3. Normalize: remove leading zeros from integer part, trailing zeros from decimal part
58
- */
59
- function prepareNumber(numStr) {
60
- const trimmed = numStr.trim();
61
- // Validate: only decimal numbers allowed (no hex, scientific notation, etc)
62
- if (!/^-?(\d+\.?\d*|\.\d+)$/.test(trimmed)) {
63
- throw new _base_js_1.HyperliquidError(`Invalid number format: ${numStr}`);
64
- }
65
- // Normalize: remove leading zeros from integer, trailing zeros from decimal
66
- const [int, dec] = trimmed.split(".");
67
- const trimmedInt = int.replace(/^0+/, "") || "0";
68
- const trimmedDec = dec?.replace(/0+$/, "");
69
- return trimmedInt + (trimmedDec ? "." + trimmedDec : "");
44
+ size = size.toString().trim();
45
+ assertNumberString(size);
46
+ // Apply decimal limit: szDecimals
47
+ size = StringMath.toFixedTruncate(size, szDecimals);
48
+ return size;
70
49
  }
71
50
  /** String-based Math operations for arbitrary precision */
72
51
  const StringMath = {
73
- /** Absolute value: remove negative sign if present */
74
- abs(numStr) {
75
- return numStr[0] === "-" ? numStr.slice(1) : numStr;
76
- },
77
52
  /** Floor log10 (magnitude): position of most significant digit */
78
- log10Floor(numStr) {
79
- const abs = this.abs(numStr);
53
+ log10Floor(value) {
54
+ const abs = value[0] === "-" ? value.slice(1) : value;
55
+ // Check if zero or invalid
56
+ const num = Number(abs);
57
+ if (num === 0 || isNaN(num))
58
+ return -Infinity;
80
59
  const [int, dec] = abs.split(".");
81
60
  // Number >= 1: magnitude = length of integer part - 1
82
- if (int !== "0") {
61
+ if (Number(int) !== 0) {
83
62
  const trimmed = int.replace(/^0+/, "");
84
63
  return trimmed.length - 1;
85
64
  }
86
65
  // Number < 1: count leading zeros in decimal part
87
- if (!dec)
88
- return -Infinity;
89
66
  const leadingZeros = dec.match(/^0*/)?.[0].length ?? 0;
90
67
  return -(leadingZeros + 1);
91
68
  },
92
69
  /** Multiply by 10^exp: shift decimal point left (negative) or right (positive) */
93
- multiplyByPow10(numStr, exp) {
70
+ multiplyByPow10(value, exp) {
71
+ if (!Number.isInteger(exp))
72
+ throw new RangeError("Exponent must be an integer");
94
73
  if (exp === 0)
95
- return numStr;
96
- const neg = numStr[0] === "-";
97
- const abs = neg ? numStr.slice(1) : numStr;
98
- const [int, dec = ""] = abs.split(".");
74
+ return trimZeros(value);
75
+ const neg = value[0] === "-";
76
+ const abs = neg ? value.slice(1) : value;
77
+ const [intRaw, dec = ""] = abs.split(".");
78
+ // Normalize empty integer part to "0" (handles ".5" → "0.5")
79
+ const int = intRaw || "0";
80
+ let result;
99
81
  if (exp > 0) {
100
82
  // Shift right: move digits from decimal to integer
101
83
  if (exp >= dec.length) {
102
- return (neg ? "-" : "") + int + dec + "0".repeat(exp - dec.length);
84
+ result = int + dec + "0".repeat(exp - dec.length);
85
+ }
86
+ else {
87
+ result = int + dec.slice(0, exp) + "." + dec.slice(exp);
103
88
  }
104
- return (neg ? "-" : "") + int + dec.slice(0, exp) + "." + dec.slice(exp);
105
89
  }
106
90
  else {
107
91
  // Shift left: move digits from integer to decimal
108
92
  const absExp = -exp;
109
93
  if (absExp >= int.length) {
110
- return (neg ? "-" : "") + "0." + "0".repeat(absExp - int.length) + int + dec;
94
+ result = "0." + "0".repeat(absExp - int.length) + int + dec;
95
+ }
96
+ else {
97
+ result = int.slice(0, -absExp) + "." + int.slice(-absExp) + dec;
111
98
  }
112
- return (neg ? "-" : "") + int.slice(0, -absExp) + "." + int.slice(-absExp) + dec;
113
99
  }
100
+ return trimZeros((neg ? "-" : "") + result);
101
+ },
102
+ /** Returns the integer part of a number by removing any fractional digits */
103
+ trunc(value) {
104
+ const dotIndex = value.indexOf(".");
105
+ return dotIndex === -1 ? value : value.slice(0, dotIndex) || "0";
114
106
  },
115
- /** Truncate: remove decimal part */
116
- trunc(numStr) {
117
- const dotIndex = numStr.indexOf(".");
118
- return dotIndex === -1 ? numStr : numStr.slice(0, dotIndex);
107
+ /** Truncate to a certain number of significant figures */
108
+ toPrecisionTruncate(value, precision) {
109
+ if (!Number.isInteger(precision))
110
+ throw new RangeError("Precision must be an integer");
111
+ if (precision < 1)
112
+ throw new RangeError("Precision must be positive");
113
+ if (/^-?0+(\.0*)?$/.test(value))
114
+ return "0"; // zero is special case (don't work with log10)
115
+ const neg = value[0] === "-";
116
+ const abs = neg ? value.slice(1) : value;
117
+ // Calculate how much to shift: align most significant digit to ones place + (maxSigFigs-1)
118
+ const magnitude = StringMath.log10Floor(abs);
119
+ const shiftAmount = precision - magnitude - 1;
120
+ // Shift right, truncate integer part, shift back
121
+ const shifted = StringMath.multiplyByPow10(abs, shiftAmount);
122
+ const truncated = StringMath.trunc(shifted);
123
+ const result = StringMath.multiplyByPow10(truncated, -shiftAmount);
124
+ // build final result and trim zeros
125
+ return trimZeros(neg ? "-" + result : result);
126
+ },
127
+ /** Truncate to a certain number of decimal places */
128
+ toFixedTruncate(value, decimals) {
129
+ if (!Number.isInteger(decimals))
130
+ throw new RangeError("Decimals must be an integer");
131
+ if (decimals < 0)
132
+ throw new RangeError("Decimals must be non-negative");
133
+ // Match number with up to `decimals` decimal places
134
+ const regex = new RegExp(`^-?(?:\\d+)?(?:\\.\\d{0,${decimals}})?`);
135
+ const result = value.match(regex)?.[0];
136
+ if (!result) {
137
+ throw new TypeError("Invalid number format");
138
+ }
139
+ // Trim zeros after truncation
140
+ return trimZeros(result);
119
141
  },
120
142
  };
121
- /** Truncate to specified decimal places */
122
- function truncateDecimals(numStr, maxDecimals) {
123
- const dotIndex = numStr.indexOf(".");
124
- if (dotIndex === -1)
125
- return numStr;
126
- const truncated = numStr.substring(0, dotIndex + maxDecimals + 1);
127
- // Remove trailing zeros from decimal
128
- const [int, dec] = truncated.split(".");
129
- const trimmedDec = dec?.replace(/0+$/, "");
130
- return trimmedDec ? int + "." + trimmedDec : int;
143
+ function trimZeros(value) {
144
+ return value
145
+ // remove leading zeros
146
+ .replace(/^(-?)0+(?=\d)/, "$1") // "00123" → "123", "-00.5" → "-0.5"
147
+ // remove trailing zeros
148
+ .replace(/\.0*$|(\.\d+?)0+$/, "$1") // "1.2000" "1.2", "5.0" "5"
149
+ // add leading zero if starts with decimal point
150
+ .replace(/^(-?)\./, "$10.") // ".5" → "0.5", "-.5" → "-0.5"
151
+ // add "0" if string is empty after trimming
152
+ .replace(/^-?$/, "0") // "" "0", "-" "0"
153
+ // normalize negative zero
154
+ .replace(/^-0$/, "0"); // "-0" → "0"
131
155
  }
132
- /** Truncate to specified significant figures using string-based math */
133
- function truncateSigFigs(numStr, maxSigFigs) {
134
- if (parseFloat(numStr) === 0)
135
- return "0";
136
- const neg = numStr[0] === "-";
137
- const abs = neg ? numStr.slice(1) : numStr;
138
- // Calculate how much to shift: align most significant digit to ones place + (maxSigFigs-1)
139
- const magnitude = StringMath.log10Floor(abs);
140
- const shiftAmount = maxSigFigs - magnitude - 1;
141
- // Shift right, truncate integer part, shift back
142
- const shifted = StringMath.multiplyByPow10(abs, shiftAmount);
143
- const truncated = StringMath.trunc(shifted);
144
- const result = StringMath.multiplyByPow10(truncated, -shiftAmount);
145
- // Remove trailing zeros introduced by shifting
146
- const final = neg ? "-" + result : result;
147
- const [int, dec] = final.split(".");
148
- const trimmedDec = dec?.replace(/0+$/, "");
149
- return trimmedDec ? int + "." + trimmedDec : int;
156
+ function assertNumberString(value) {
157
+ if (!/^-?(\d+\.?\d*|\.\d*)$/.test(value)) {
158
+ throw new TypeError("Invalid number format");
159
+ }
150
160
  }
151
161
  //# sourceMappingURL=_format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_format.js","sourceRoot":"","sources":["../../../src/src/utils/_format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_format.js","sourceRoot":"","sources":["../../../src/src/utils/_format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { type Signature } from "../signing/mod.js";
2
+ /**
3
+ * Recover the Ethereum address that signed an L1 action.
4
+ * @example
5
+ * ```ts
6
+ * import { recoverUserFromL1Action } from "@nktkas/hyperliquid/utils";
7
+ *
8
+ * const action = {
9
+ * type: "cancel",
10
+ * cancels: [{ a: 0, o: 12345 }],
11
+ * };
12
+ * const nonce = 1700000000000;
13
+ * const signature = {
14
+ * r: "0x...",
15
+ * s: "0x...",
16
+ * v: 27,
17
+ * } as const;
18
+ *
19
+ * const address = await recoverUserFromL1Action({ action, nonce, signature });
20
+ * console.log(`Signer address: ${address}`);
21
+ * ```
22
+ */
23
+ export declare function recoverUserFromL1Action(params: {
24
+ /** The action that was signed (hash depends on key order). */
25
+ action: Record<string, unknown>;
26
+ /** The timestamp in ms used when signing. */
27
+ nonce: number;
28
+ /** The signature to recover the address from. */
29
+ signature: Signature;
30
+ /** Indicates if the action is for the testnet. (default: false) */
31
+ isTestnet?: boolean;
32
+ /** Optional vault address used in the action. */
33
+ vaultAddress?: `0x${string}`;
34
+ /** Optional expiration time in ms used in the action. */
35
+ expiresAfter?: number;
36
+ }): Promise<`0x${string}`>;
37
+ /**
38
+ * Recover the Ethereum address that signed a user-signed action.
39
+ * @example
40
+ * ```ts
41
+ * import { recoverUserFromUserSigned } from "@nktkas/hyperliquid/utils";
42
+ *
43
+ * const action = {
44
+ * type: "approveAgent",
45
+ * signatureChainId: "0x66eee" as const,
46
+ * hyperliquidChain: "Mainnet",
47
+ * agentAddress: "0x...",
48
+ * agentName: "Agent",
49
+ * nonce: 1700000000000,
50
+ * };
51
+ * const types = {
52
+ * HyperliquidTransaction: [
53
+ * { name: "hyperliquidChain", type: "string" },
54
+ * // ... other fields
55
+ * ],
56
+ * };
57
+ * const signature = {
58
+ * r: "0x...",
59
+ * s: "0x...",
60
+ * v: 27,
61
+ * } as const;
62
+ *
63
+ * const address = await recoverUserFromUserSigned({ action, types, signature });
64
+ * console.log(`Signer address: ${address}`);
65
+ * ```
66
+ */
67
+ export declare function recoverUserFromUserSigned(params: {
68
+ /** The action that was signed (hex strings must be in lower case). */
69
+ action: {
70
+ signatureChainId: `0x${string}`;
71
+ [key: string]: unknown;
72
+ } & ({
73
+ nonce: number;
74
+ time?: undefined;
75
+ } | {
76
+ time: number;
77
+ nonce?: undefined;
78
+ });
79
+ /** The types of the action (hash depends on key order). */
80
+ types: {
81
+ [key: string]: {
82
+ name: string;
83
+ type: string;
84
+ }[];
85
+ };
86
+ /** The signature to recover the address from. */
87
+ signature: Signature;
88
+ }): Promise<`0x${string}`>;
89
+ //# sourceMappingURL=_recover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_recover.d.ts","sourceRoot":"","sources":["../../../src/src/utils/_recover.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CA+CzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE;IACtD,sEAAsE;IACtE,MAAM,EACF;QACA,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,GACC,CACE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,GACnC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,SAAS,CAAA;KAAE,CACtC,CAAC;IACJ,2DAA2D;IAC3D,KAAK,EAAE;QACL,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;SACd,EAAE,CAAC;KACL,CAAC;IACF,iDAAiD;IACjD,SAAS,EAAE,SAAS,CAAC;CACtB,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CA6BzB"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.recoverUserFromL1Action = recoverUserFromL1Action;
37
+ exports.recoverUserFromUserSigned = recoverUserFromUserSigned;
38
+ const sha3_js_1 = require("@noble/hashes/sha3.js");
39
+ const secp = __importStar(require("@noble/secp256k1"));
40
+ const mod_js_1 = require("../signing/mod.js");
41
+ const _eip712_js_1 = require("./_eip712.js");
42
+ /**
43
+ * Recover the Ethereum address that signed an L1 action.
44
+ * @example
45
+ * ```ts
46
+ * import { recoverUserFromL1Action } from "@nktkas/hyperliquid/utils";
47
+ *
48
+ * const action = {
49
+ * type: "cancel",
50
+ * cancels: [{ a: 0, o: 12345 }],
51
+ * };
52
+ * const nonce = 1700000000000;
53
+ * const signature = {
54
+ * r: "0x...",
55
+ * s: "0x...",
56
+ * v: 27,
57
+ * } as const;
58
+ *
59
+ * const address = await recoverUserFromL1Action({ action, nonce, signature });
60
+ * console.log(`Signer address: ${address}`);
61
+ * ```
62
+ */
63
+ async function recoverUserFromL1Action(params) {
64
+ const { action, signature, nonce, isTestnet = false, vaultAddress, expiresAfter, } = params;
65
+ // 1. Create the action hash
66
+ const actionHash = (0, mod_js_1.createL1ActionHash)({ action, nonce, vaultAddress, expiresAfter });
67
+ // 2. Hash the typed data according to EIP-712
68
+ const hash = (0, _eip712_js_1.hashTypedData)({
69
+ domain: {
70
+ name: "Exchange",
71
+ version: "1",
72
+ chainId: 1337,
73
+ verifyingContract: "0x0000000000000000000000000000000000000000",
74
+ },
75
+ types: {
76
+ Agent: [
77
+ { name: "source", type: "string" },
78
+ { name: "connectionId", type: "bytes32" },
79
+ ],
80
+ },
81
+ primaryType: "Agent",
82
+ message: {
83
+ source: isTestnet ? "b" : "a",
84
+ connectionId: actionHash,
85
+ },
86
+ });
87
+ // 3. Convert signature to recovery format (v, r, s)
88
+ const sigr = secp.etc.concatBytes(new Uint8Array([signature.v - 27]), secp.etc.hexToBytes(signature.r.slice(2)), secp.etc.hexToBytes(signature.s.slice(2)));
89
+ // 4. Recover the public key from the signature and hash
90
+ const compressedPubKey = await secp.recoverPublicKeyAsync(sigr, hash, { prehash: false });
91
+ const uncompressedPubKey = secp.Point.fromBytes(compressedPubKey).toBytes(false);
92
+ // 5. Convert the public key to an Ethereum address
93
+ return publicKeyToAddress(uncompressedPubKey);
94
+ }
95
+ /**
96
+ * Recover the Ethereum address that signed a user-signed action.
97
+ * @example
98
+ * ```ts
99
+ * import { recoverUserFromUserSigned } from "@nktkas/hyperliquid/utils";
100
+ *
101
+ * const action = {
102
+ * type: "approveAgent",
103
+ * signatureChainId: "0x66eee" as const,
104
+ * hyperliquidChain: "Mainnet",
105
+ * agentAddress: "0x...",
106
+ * agentName: "Agent",
107
+ * nonce: 1700000000000,
108
+ * };
109
+ * const types = {
110
+ * HyperliquidTransaction: [
111
+ * { name: "hyperliquidChain", type: "string" },
112
+ * // ... other fields
113
+ * ],
114
+ * };
115
+ * const signature = {
116
+ * r: "0x...",
117
+ * s: "0x...",
118
+ * v: 27,
119
+ * } as const;
120
+ *
121
+ * const address = await recoverUserFromUserSigned({ action, types, signature });
122
+ * console.log(`Signer address: ${address}`);
123
+ * ```
124
+ */
125
+ async function recoverUserFromUserSigned(params) {
126
+ const { action, types, signature } = params;
127
+ // 1. Hash the typed data according to EIP-712
128
+ const hash = (0, _eip712_js_1.hashTypedData)({
129
+ domain: {
130
+ name: "HyperliquidSignTransaction",
131
+ version: "1",
132
+ chainId: parseInt(action.signatureChainId),
133
+ verifyingContract: "0x0000000000000000000000000000000000000000",
134
+ },
135
+ types,
136
+ primaryType: Object.keys(types)[0],
137
+ message: action,
138
+ });
139
+ // 2. Convert signature to recovery format (v, r, s)
140
+ const sigr = secp.etc.concatBytes(new Uint8Array([signature.v - 27]), secp.etc.hexToBytes(signature.r.slice(2)), secp.etc.hexToBytes(signature.s.slice(2)));
141
+ // 3. Recover the public key from the signature and hash
142
+ const compressedPubKey = await secp.recoverPublicKeyAsync(sigr, hash, { prehash: false });
143
+ const uncompressedPubKey = secp.Point.fromBytes(compressedPubKey).toBytes(false);
144
+ // 4. Convert the public key to an Ethereum address
145
+ return publicKeyToAddress(uncompressedPubKey);
146
+ }
147
+ /** Convert a public key to an Ethereum address. */
148
+ function publicKeyToAddress(publicKey) {
149
+ // Remove the 0x04 prefix from uncompressed public key
150
+ const publicKeyWithoutPrefix = publicKey.slice(1);
151
+ // Hash the public key and take the last 20 bytes as the address
152
+ const hash = (0, sha3_js_1.keccak_256)(publicKeyWithoutPrefix);
153
+ const addressBytes = hash.slice(-20);
154
+ return `0x${secp.etc.bytesToHex(addressBytes)}`;
155
+ }
156
+ //# sourceMappingURL=_recover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_recover.js","sourceRoot":"","sources":["../../../src/src/utils/_recover.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./_symbolConverter.js";
2
2
  export * from "./_format.js";
3
+ export * from "./_recover.js";
3
4
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/utils/mod.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/utils/mod.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./_symbolConverter.js"), exports);
18
18
  __exportStar(require("./_format.js"), exports);
19
+ __exportStar(require("./_recover.js"), exports);
19
20
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/src/utils/mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+CAA6B"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../../src/src/utils/mod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,+CAA6B;AAC7B,gDAA8B"}
package/src/bin/cli.ts CHANGED
@@ -240,6 +240,7 @@ Referrer:
240
240
  Staking & Delegation:
241
241
  cDeposit --wei <number>
242
242
  cWithdraw --wei <number>
243
+ linkStakingUser --user <address> --isFinalize <bool>
243
244
  tokenDelegate --validator <address> --wei <number> --isUndelegate <bool>
244
245
 
245
246
  Vault:
@@ -731,3 +731,37 @@ export const TwapFillSchema = /* @__PURE__ */ (() => {
731
731
  v.description("TWAP fill record."),
732
732
  );
733
733
  })();
734
+
735
+ /** Balance for a specific spot token. */
736
+ export const BalanceSchema = /* @__PURE__ */ (() => {
737
+ return v.pipe(
738
+ v.object({
739
+ /** Asset symbol. */
740
+ coin: v.pipe(
741
+ v.string(),
742
+ v.description("Asset symbol."),
743
+ ),
744
+ /** Unique identifier for the token. */
745
+ token: v.pipe(
746
+ UnsignedInteger,
747
+ v.description("Unique identifier for the token."),
748
+ ),
749
+ /** Total balance. */
750
+ total: v.pipe(
751
+ UnsignedDecimal,
752
+ v.description("Total balance."),
753
+ ),
754
+ /** Amount on hold. */
755
+ hold: v.pipe(
756
+ UnsignedDecimal,
757
+ v.description("Amount on hold."),
758
+ ),
759
+ /** Entry notional value. */
760
+ entryNtl: v.pipe(
761
+ UnsignedDecimal,
762
+ v.description("Entry notional value."),
763
+ ),
764
+ }),
765
+ v.description("Balance for a specific spot token."),
766
+ );
767
+ })();