@lifi/perps-sdk 0.1.1-alpha.4 → 0.1.1-alpha.40

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 (595) hide show
  1. package/README.md +38 -15
  2. package/dist/cjs/agent/AgentManager.d.ts +5 -5
  3. package/dist/cjs/agent/AgentManager.d.ts.map +1 -1
  4. package/dist/cjs/agent/AgentManager.js +16 -14
  5. package/dist/cjs/agent/AgentManager.js.map +1 -1
  6. package/dist/cjs/client/PerpsClient.d.ts +70 -21
  7. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  8. package/dist/cjs/client/PerpsClient.js +323 -175
  9. package/dist/cjs/client/PerpsClient.js.map +1 -1
  10. package/dist/cjs/client/createPerpsClient.d.ts +12 -2
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  12. package/dist/cjs/client/createPerpsClient.js +6 -5
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  14. package/dist/cjs/client/types.d.ts +42 -25
  15. package/dist/cjs/client/types.d.ts.map +1 -1
  16. package/dist/cjs/client/types.js +6 -0
  17. package/dist/cjs/client/types.js.map +1 -1
  18. package/dist/cjs/errors/PerpsError.d.ts +2 -3
  19. package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
  20. package/dist/cjs/errors/PerpsError.js +3 -15
  21. package/dist/cjs/errors/PerpsError.js.map +1 -1
  22. package/dist/cjs/errors/constants.d.ts +0 -10
  23. package/dist/cjs/errors/constants.d.ts.map +1 -1
  24. package/dist/cjs/errors/constants.js +1 -12
  25. package/dist/cjs/errors/constants.js.map +1 -1
  26. package/dist/cjs/index.d.ts +31 -32
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +58 -42
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/realtime/PerpsWsClient.d.ts +1 -0
  31. package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
  32. package/dist/cjs/realtime/PerpsWsClient.js +28 -23
  33. package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
  34. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
  35. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  36. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +162 -52
  37. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  38. package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
  39. package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
  40. package/dist/cjs/services/createAction.d.ts +11 -0
  41. package/dist/cjs/services/createAction.d.ts.map +1 -0
  42. package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
  43. package/dist/cjs/services/createAction.js.map +1 -0
  44. package/dist/cjs/services/executeAction.d.ts +11 -0
  45. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  46. package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
  47. package/dist/cjs/services/executeAction.js.map +1 -0
  48. package/dist/cjs/services/getAccount.d.ts +1 -1
  49. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  50. package/dist/cjs/services/getAccount.js +1 -1
  51. package/dist/cjs/services/getAccount.js.map +1 -1
  52. package/dist/cjs/services/getActivity.d.ts +13 -0
  53. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  54. package/dist/cjs/services/getActivity.js +21 -0
  55. package/dist/cjs/services/getActivity.js.map +1 -0
  56. package/dist/cjs/services/getAsset.d.ts +8 -0
  57. package/dist/cjs/services/getAsset.d.ts.map +1 -0
  58. package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
  59. package/dist/cjs/services/getAsset.js.map +1 -0
  60. package/dist/cjs/services/getAssets.d.ts +7 -0
  61. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  62. package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
  63. package/dist/cjs/services/getAssets.js.map +1 -0
  64. package/dist/cjs/services/getFills.d.ts +12 -0
  65. package/dist/cjs/services/getFills.d.ts.map +1 -0
  66. package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
  67. package/dist/cjs/services/getFills.js.map +1 -0
  68. package/dist/cjs/services/getOhlcv.d.ts +1 -1
  69. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  70. package/dist/cjs/services/getOhlcv.js +1 -1
  71. package/dist/cjs/services/getOhlcv.js.map +1 -1
  72. package/dist/cjs/services/getOrder.d.ts +1 -1
  73. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  74. package/dist/cjs/services/getOrder.js +1 -1
  75. package/dist/cjs/services/getOrder.js.map +1 -1
  76. package/dist/cjs/services/getOrderbook.d.ts +1 -1
  77. package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
  78. package/dist/cjs/services/getOrderbook.js +1 -1
  79. package/dist/cjs/services/getOrderbook.js.map +1 -1
  80. package/dist/cjs/services/getOrders.d.ts +11 -0
  81. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  82. package/dist/cjs/services/getOrders.js +15 -0
  83. package/dist/cjs/services/getOrders.js.map +1 -0
  84. package/dist/cjs/services/getPositions.d.ts +11 -0
  85. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  86. package/dist/cjs/services/getPositions.js +15 -0
  87. package/dist/cjs/services/getPositions.js.map +1 -0
  88. package/dist/cjs/services/getPrices.d.ts +1 -1
  89. package/dist/cjs/services/getPrices.d.ts.map +1 -1
  90. package/dist/cjs/services/getPrices.js +1 -1
  91. package/dist/cjs/services/getPrices.js.map +1 -1
  92. package/dist/cjs/services/getProviders.d.ts +4 -0
  93. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  94. package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
  95. package/dist/cjs/services/getProviders.js.map +1 -0
  96. package/dist/cjs/utils/accountSummary.d.ts +9 -0
  97. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  98. package/dist/cjs/utils/accountSummary.js +81 -0
  99. package/dist/cjs/utils/accountSummary.js.map +1 -0
  100. package/dist/cjs/utils/calculations.d.ts +16 -0
  101. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  102. package/dist/cjs/utils/calculations.js +71 -0
  103. package/dist/cjs/utils/calculations.js.map +1 -0
  104. package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
  105. package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
  106. package/dist/cjs/utils/hyperliquid/index.js +11 -0
  107. package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
  108. package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
  109. package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
  110. package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
  111. package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
  112. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
  113. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  114. package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
  115. package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
  116. package/dist/cjs/utils/orderClassification.d.ts +8 -0
  117. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  118. package/dist/cjs/utils/orderClassification.js +39 -0
  119. package/dist/cjs/utils/orderClassification.js.map +1 -0
  120. package/dist/cjs/utils/parse.d.ts +2 -0
  121. package/dist/cjs/utils/parse.d.ts.map +1 -0
  122. package/dist/cjs/utils/parse.js +14 -0
  123. package/dist/cjs/utils/parse.js.map +1 -0
  124. package/dist/cjs/utils/request.d.ts.map +1 -1
  125. package/dist/cjs/utils/request.js +16 -4
  126. package/dist/cjs/utils/request.js.map +1 -1
  127. package/dist/cjs/utils/units.d.ts +3 -0
  128. package/dist/cjs/utils/units.d.ts.map +1 -0
  129. package/dist/cjs/utils/units.js +18 -0
  130. package/dist/cjs/utils/units.js.map +1 -0
  131. package/dist/cjs/utils/validation.d.ts +2 -0
  132. package/dist/cjs/utils/validation.d.ts.map +1 -0
  133. package/dist/cjs/utils/validation.js +16 -0
  134. package/dist/cjs/utils/validation.js.map +1 -0
  135. package/dist/cjs/version.d.ts +1 -1
  136. package/dist/cjs/version.d.ts.map +1 -1
  137. package/dist/cjs/version.js +1 -1
  138. package/dist/cjs/version.js.map +1 -1
  139. package/dist/esm/agent/AgentManager.d.ts +9 -9
  140. package/dist/esm/agent/AgentManager.d.ts.map +1 -1
  141. package/dist/esm/agent/AgentManager.js +20 -18
  142. package/dist/esm/agent/AgentManager.js.map +1 -1
  143. package/dist/esm/agent/storage.d.ts +1 -1
  144. package/dist/esm/agent/storage.js +1 -1
  145. package/dist/esm/client/PerpsClient.d.ts +70 -189
  146. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  147. package/dist/esm/client/PerpsClient.js +355 -361
  148. package/dist/esm/client/PerpsClient.js.map +1 -1
  149. package/dist/esm/client/createPerpsClient.d.ts +30 -7
  150. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  151. package/dist/esm/client/createPerpsClient.js +6 -6
  152. package/dist/esm/client/createPerpsClient.js.map +1 -1
  153. package/dist/esm/client/types.d.ts +75 -48
  154. package/dist/esm/client/types.d.ts.map +1 -1
  155. package/dist/esm/client/types.js +11 -1
  156. package/dist/esm/client/types.js.map +1 -1
  157. package/dist/esm/errors/PerpsError.d.ts +2 -3
  158. package/dist/esm/errors/PerpsError.d.ts.map +1 -1
  159. package/dist/esm/errors/PerpsError.js +3 -15
  160. package/dist/esm/errors/PerpsError.js.map +1 -1
  161. package/dist/esm/errors/constants.d.ts +0 -10
  162. package/dist/esm/errors/constants.d.ts.map +1 -1
  163. package/dist/esm/errors/constants.js +0 -11
  164. package/dist/esm/errors/constants.js.map +1 -1
  165. package/dist/esm/index.d.ts +31 -32
  166. package/dist/esm/index.d.ts.map +1 -1
  167. package/dist/esm/index.js +22 -23
  168. package/dist/esm/index.js.map +1 -1
  169. package/dist/esm/realtime/PerpsWsClient.d.ts +1 -0
  170. package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
  171. package/dist/esm/realtime/PerpsWsClient.js +30 -23
  172. package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
  173. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  174. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  175. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +174 -53
  176. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  177. package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
  178. package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
  179. package/dist/esm/services/createAction.d.ts +11 -0
  180. package/dist/esm/services/createAction.d.ts.map +1 -0
  181. package/dist/esm/services/createAction.js +14 -0
  182. package/dist/esm/services/createAction.js.map +1 -0
  183. package/dist/esm/services/executeAction.d.ts +11 -0
  184. package/dist/esm/services/executeAction.d.ts.map +1 -0
  185. package/dist/esm/services/executeAction.js +14 -0
  186. package/dist/esm/services/executeAction.js.map +1 -0
  187. package/dist/esm/services/getAccount.d.ts +7 -7
  188. package/dist/esm/services/getAccount.d.ts.map +1 -1
  189. package/dist/esm/services/getAccount.js +6 -6
  190. package/dist/esm/services/getAccount.js.map +1 -1
  191. package/dist/esm/services/getActivity.d.ts +49 -0
  192. package/dist/esm/services/getActivity.d.ts.map +1 -0
  193. package/dist/esm/services/getActivity.js +47 -0
  194. package/dist/esm/services/getActivity.js.map +1 -0
  195. package/dist/esm/services/getAsset.d.ts +20 -0
  196. package/dist/esm/services/getAsset.d.ts.map +1 -0
  197. package/dist/esm/services/getAsset.js +18 -0
  198. package/dist/esm/services/getAsset.js.map +1 -0
  199. package/dist/esm/services/getAssets.d.ts +18 -0
  200. package/dist/esm/services/getAssets.d.ts.map +1 -0
  201. package/dist/esm/services/getAssets.js +18 -0
  202. package/dist/esm/services/getAssets.js.map +1 -0
  203. package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
  204. package/dist/esm/services/getFills.d.ts.map +1 -0
  205. package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
  206. package/dist/esm/services/getFills.js.map +1 -0
  207. package/dist/esm/services/getOhlcv.d.ts +4 -4
  208. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  209. package/dist/esm/services/getOhlcv.js +3 -3
  210. package/dist/esm/services/getOhlcv.js.map +1 -1
  211. package/dist/esm/services/getOrder.d.ts +4 -4
  212. package/dist/esm/services/getOrder.d.ts.map +1 -1
  213. package/dist/esm/services/getOrder.js +3 -3
  214. package/dist/esm/services/getOrder.js.map +1 -1
  215. package/dist/esm/services/getOrderbook.d.ts +4 -4
  216. package/dist/esm/services/getOrderbook.d.ts.map +1 -1
  217. package/dist/esm/services/getOrderbook.js +3 -3
  218. package/dist/esm/services/getOrderbook.js.map +1 -1
  219. package/dist/esm/services/getOrders.d.ts +27 -0
  220. package/dist/esm/services/getOrders.d.ts.map +1 -0
  221. package/dist/esm/services/getOrders.js +23 -0
  222. package/dist/esm/services/getOrders.js.map +1 -0
  223. package/dist/esm/services/getPositions.d.ts +27 -0
  224. package/dist/esm/services/getPositions.d.ts.map +1 -0
  225. package/dist/esm/services/getPositions.js +23 -0
  226. package/dist/esm/services/getPositions.js.map +1 -0
  227. package/dist/esm/services/getPrices.d.ts +5 -5
  228. package/dist/esm/services/getPrices.d.ts.map +1 -1
  229. package/dist/esm/services/getPrices.js +4 -4
  230. package/dist/esm/services/getPrices.js.map +1 -1
  231. package/dist/esm/services/getProviders.d.ts +20 -0
  232. package/dist/esm/services/getProviders.d.ts.map +1 -0
  233. package/dist/esm/services/getProviders.js +21 -0
  234. package/dist/esm/services/getProviders.js.map +1 -0
  235. package/dist/esm/utils/accountSummary.d.ts +13 -0
  236. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  237. package/dist/esm/utils/accountSummary.js +92 -0
  238. package/dist/esm/utils/accountSummary.js.map +1 -0
  239. package/dist/esm/utils/calculations.d.ts +109 -0
  240. package/dist/esm/utils/calculations.d.ts.map +1 -0
  241. package/dist/esm/utils/calculations.js +154 -0
  242. package/dist/esm/utils/calculations.js.map +1 -0
  243. package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
  244. package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
  245. package/dist/esm/utils/hyperliquid/index.js +3 -0
  246. package/dist/esm/utils/hyperliquid/index.js.map +1 -0
  247. package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
  248. package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
  249. package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
  250. package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
  251. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
  252. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  253. package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
  254. package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
  255. package/dist/esm/utils/orderClassification.d.ts +29 -0
  256. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  257. package/dist/esm/utils/orderClassification.js +53 -0
  258. package/dist/esm/utils/orderClassification.js.map +1 -0
  259. package/dist/esm/utils/parse.d.ts +18 -0
  260. package/dist/esm/utils/parse.d.ts.map +1 -0
  261. package/dist/esm/utils/parse.js +28 -0
  262. package/dist/esm/utils/parse.js.map +1 -0
  263. package/dist/esm/utils/request.d.ts +1 -2
  264. package/dist/esm/utils/request.d.ts.map +1 -1
  265. package/dist/esm/utils/request.js +20 -7
  266. package/dist/esm/utils/request.js.map +1 -1
  267. package/dist/esm/utils/units.d.ts +20 -0
  268. package/dist/esm/utils/units.d.ts.map +1 -0
  269. package/dist/esm/utils/units.js +31 -0
  270. package/dist/esm/utils/units.js.map +1 -0
  271. package/dist/esm/utils/validation.d.ts +15 -0
  272. package/dist/esm/utils/validation.d.ts.map +1 -0
  273. package/dist/esm/utils/validation.js +26 -0
  274. package/dist/esm/utils/validation.js.map +1 -0
  275. package/dist/esm/version.d.ts +1 -1
  276. package/dist/esm/version.d.ts.map +1 -1
  277. package/dist/esm/version.js +1 -1
  278. package/dist/esm/version.js.map +1 -1
  279. package/dist/types/agent/AgentManager.d.ts +9 -9
  280. package/dist/types/agent/AgentManager.d.ts.map +1 -1
  281. package/dist/types/agent/storage.d.ts +1 -1
  282. package/dist/types/client/PerpsClient.d.ts +70 -189
  283. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  284. package/dist/types/client/createPerpsClient.d.ts +30 -7
  285. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  286. package/dist/types/client/types.d.ts +75 -48
  287. package/dist/types/client/types.d.ts.map +1 -1
  288. package/dist/types/errors/PerpsError.d.ts +2 -3
  289. package/dist/types/errors/PerpsError.d.ts.map +1 -1
  290. package/dist/types/errors/constants.d.ts +0 -10
  291. package/dist/types/errors/constants.d.ts.map +1 -1
  292. package/dist/types/index.d.ts +31 -32
  293. package/dist/types/index.d.ts.map +1 -1
  294. package/dist/types/realtime/PerpsWsClient.d.ts +1 -0
  295. package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
  296. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  297. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  298. package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
  299. package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
  300. package/dist/types/services/createAction.d.ts +11 -0
  301. package/dist/types/services/createAction.d.ts.map +1 -0
  302. package/dist/types/services/executeAction.d.ts +11 -0
  303. package/dist/types/services/executeAction.d.ts.map +1 -0
  304. package/dist/types/services/getAccount.d.ts +7 -7
  305. package/dist/types/services/getAccount.d.ts.map +1 -1
  306. package/dist/types/services/getActivity.d.ts +49 -0
  307. package/dist/types/services/getActivity.d.ts.map +1 -0
  308. package/dist/types/services/getAsset.d.ts +20 -0
  309. package/dist/types/services/getAsset.d.ts.map +1 -0
  310. package/dist/types/services/getAssets.d.ts +18 -0
  311. package/dist/types/services/getAssets.d.ts.map +1 -0
  312. package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
  313. package/dist/types/services/getFills.d.ts.map +1 -0
  314. package/dist/types/services/getOhlcv.d.ts +4 -4
  315. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  316. package/dist/types/services/getOrder.d.ts +4 -4
  317. package/dist/types/services/getOrder.d.ts.map +1 -1
  318. package/dist/types/services/getOrderbook.d.ts +4 -4
  319. package/dist/types/services/getOrderbook.d.ts.map +1 -1
  320. package/dist/types/services/getOrders.d.ts +27 -0
  321. package/dist/types/services/getOrders.d.ts.map +1 -0
  322. package/dist/types/services/getPositions.d.ts +27 -0
  323. package/dist/types/services/getPositions.d.ts.map +1 -0
  324. package/dist/types/services/getPrices.d.ts +5 -5
  325. package/dist/types/services/getPrices.d.ts.map +1 -1
  326. package/dist/types/services/getProviders.d.ts +20 -0
  327. package/dist/types/services/getProviders.d.ts.map +1 -0
  328. package/dist/types/utils/accountSummary.d.ts +13 -0
  329. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  330. package/dist/types/utils/calculations.d.ts +109 -0
  331. package/dist/types/utils/calculations.d.ts.map +1 -0
  332. package/dist/types/utils/hyperliquid/index.d.ts +3 -0
  333. package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
  334. package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
  335. package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
  336. package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
  337. package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  338. package/dist/types/utils/orderClassification.d.ts +29 -0
  339. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  340. package/dist/types/utils/parse.d.ts +18 -0
  341. package/dist/types/utils/parse.d.ts.map +1 -0
  342. package/dist/types/utils/request.d.ts +1 -2
  343. package/dist/types/utils/request.d.ts.map +1 -1
  344. package/dist/types/utils/units.d.ts +20 -0
  345. package/dist/types/utils/units.d.ts.map +1 -0
  346. package/dist/types/utils/validation.d.ts +15 -0
  347. package/dist/types/utils/validation.d.ts.map +1 -0
  348. package/dist/types/version.d.ts +1 -1
  349. package/dist/types/version.d.ts.map +1 -1
  350. package/package.json +8 -4
  351. package/src/agent/AgentManager.ts +21 -19
  352. package/src/agent/storage.ts +1 -1
  353. package/src/client/PerpsClient.ts +569 -446
  354. package/src/client/createPerpsClient.ts +36 -11
  355. package/src/client/types.ts +84 -51
  356. package/src/errors/PerpsError.ts +3 -22
  357. package/src/errors/constants.ts +0 -11
  358. package/src/index.ts +70 -47
  359. package/src/realtime/PerpsWsClient.ts +47 -31
  360. package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +203 -64
  361. package/src/realtime/hyperliquid/types.ts +8 -10
  362. package/src/services/createAction.ts +41 -0
  363. package/src/services/executeAction.ts +41 -0
  364. package/src/services/getAccount.ts +8 -8
  365. package/src/services/getActivity.ts +77 -0
  366. package/src/services/getAsset.ts +34 -0
  367. package/src/services/getAssets.ts +32 -0
  368. package/src/services/{getHistory.ts → getFills.ts} +23 -17
  369. package/src/services/getOhlcv.ts +5 -5
  370. package/src/services/getOrder.ts +5 -5
  371. package/src/services/getOrderbook.ts +5 -5
  372. package/src/services/getOrders.ts +45 -0
  373. package/src/services/getPositions.ts +45 -0
  374. package/src/services/getPrices.ts +6 -6
  375. package/src/services/{getDexes.ts → getProviders.ts} +10 -10
  376. package/src/utils/accountSummary.ts +124 -0
  377. package/src/utils/calculations.ts +209 -0
  378. package/src/utils/hyperliquid/index.ts +9 -0
  379. package/src/utils/hyperliquid/liquidation.ts +71 -0
  380. package/src/utils/hyperliquid/orderFormatting.ts +96 -0
  381. package/src/utils/orderClassification.ts +64 -0
  382. package/src/utils/parse.ts +28 -0
  383. package/src/utils/request.ts +22 -7
  384. package/src/utils/units.ts +32 -0
  385. package/src/utils/validation.ts +35 -0
  386. package/src/version.ts +1 -1
  387. package/dist/cjs/dex/hyperliquid.d.ts +0 -3
  388. package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
  389. package/dist/cjs/dex/hyperliquid.js +0 -21
  390. package/dist/cjs/dex/hyperliquid.js.map +0 -1
  391. package/dist/cjs/dex/registry.d.ts +0 -3
  392. package/dist/cjs/dex/registry.d.ts.map +0 -1
  393. package/dist/cjs/dex/registry.js +0 -16
  394. package/dist/cjs/dex/registry.js.map +0 -1
  395. package/dist/cjs/dex/types.d.ts +0 -13
  396. package/dist/cjs/dex/types.d.ts.map +0 -1
  397. package/dist/cjs/dex/types.js +0 -3
  398. package/dist/cjs/dex/types.js.map +0 -1
  399. package/dist/cjs/errors/AgentError.d.ts +0 -10
  400. package/dist/cjs/errors/AgentError.d.ts.map +0 -1
  401. package/dist/cjs/errors/AgentError.js +0 -23
  402. package/dist/cjs/errors/AgentError.js.map +0 -1
  403. package/dist/cjs/errors/HTTPError.d.ts +0 -11
  404. package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
  405. package/dist/cjs/errors/HTTPError.js +0 -62
  406. package/dist/cjs/errors/HTTPError.js.map +0 -1
  407. package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
  408. package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
  409. package/dist/cjs/errors/PerpsSDKError.js +0 -36
  410. package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
  411. package/dist/cjs/errors/ServerError.d.ts +0 -10
  412. package/dist/cjs/errors/ServerError.d.ts.map +0 -1
  413. package/dist/cjs/errors/ServerError.js +0 -24
  414. package/dist/cjs/errors/ServerError.js.map +0 -1
  415. package/dist/cjs/errors/ValidationError.d.ts +0 -9
  416. package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
  417. package/dist/cjs/errors/ValidationError.js +0 -23
  418. package/dist/cjs/errors/ValidationError.js.map +0 -1
  419. package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
  420. package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
  421. package/dist/cjs/errors/utils/rootCause.js +0 -41
  422. package/dist/cjs/errors/utils/rootCause.js.map +0 -1
  423. package/dist/cjs/services/cancelOrder.d.ts +0 -10
  424. package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
  425. package/dist/cjs/services/cancelOrder.js +0 -16
  426. package/dist/cjs/services/cancelOrder.js.map +0 -1
  427. package/dist/cjs/services/createAuthorization.d.ts +0 -10
  428. package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
  429. package/dist/cjs/services/createAuthorization.js +0 -16
  430. package/dist/cjs/services/createAuthorization.js.map +0 -1
  431. package/dist/cjs/services/createOrder.d.ts +0 -21
  432. package/dist/cjs/services/createOrder.d.ts.map +0 -1
  433. package/dist/cjs/services/createOrder.js +0 -27
  434. package/dist/cjs/services/createOrder.js.map +0 -1
  435. package/dist/cjs/services/createWithdrawal.d.ts +0 -9
  436. package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
  437. package/dist/cjs/services/createWithdrawal.js +0 -15
  438. package/dist/cjs/services/createWithdrawal.js.map +0 -1
  439. package/dist/cjs/services/getDexes.d.ts +0 -4
  440. package/dist/cjs/services/getDexes.d.ts.map +0 -1
  441. package/dist/cjs/services/getDexes.js.map +0 -1
  442. package/dist/cjs/services/getHistory.d.ts +0 -10
  443. package/dist/cjs/services/getHistory.d.ts.map +0 -1
  444. package/dist/cjs/services/getHistory.js.map +0 -1
  445. package/dist/cjs/services/getMarket.d.ts +0 -8
  446. package/dist/cjs/services/getMarket.d.ts.map +0 -1
  447. package/dist/cjs/services/getMarket.js.map +0 -1
  448. package/dist/cjs/services/getMarkets.d.ts +0 -7
  449. package/dist/cjs/services/getMarkets.d.ts.map +0 -1
  450. package/dist/cjs/services/getMarkets.js.map +0 -1
  451. package/dist/cjs/services/submitAuthorization.d.ts +0 -10
  452. package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
  453. package/dist/cjs/services/submitAuthorization.js.map +0 -1
  454. package/dist/cjs/services/submitOrder.d.ts +0 -10
  455. package/dist/cjs/services/submitOrder.d.ts.map +0 -1
  456. package/dist/cjs/services/submitOrder.js.map +0 -1
  457. package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
  458. package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
  459. package/dist/cjs/services/submitWithdrawal.js +0 -15
  460. package/dist/cjs/services/submitWithdrawal.js.map +0 -1
  461. package/dist/esm/dex/hyperliquid.d.ts +0 -3
  462. package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
  463. package/dist/esm/dex/hyperliquid.js +0 -19
  464. package/dist/esm/dex/hyperliquid.js.map +0 -1
  465. package/dist/esm/dex/registry.d.ts +0 -3
  466. package/dist/esm/dex/registry.d.ts.map +0 -1
  467. package/dist/esm/dex/registry.js +0 -13
  468. package/dist/esm/dex/registry.js.map +0 -1
  469. package/dist/esm/dex/types.d.ts +0 -15
  470. package/dist/esm/dex/types.d.ts.map +0 -1
  471. package/dist/esm/dex/types.js +0 -2
  472. package/dist/esm/dex/types.js.map +0 -1
  473. package/dist/esm/errors/AgentError.d.ts +0 -25
  474. package/dist/esm/errors/AgentError.d.ts.map +0 -1
  475. package/dist/esm/errors/AgentError.js +0 -35
  476. package/dist/esm/errors/AgentError.js.map +0 -1
  477. package/dist/esm/errors/HTTPError.d.ts +0 -11
  478. package/dist/esm/errors/HTTPError.d.ts.map +0 -1
  479. package/dist/esm/errors/HTTPError.js +0 -61
  480. package/dist/esm/errors/HTTPError.js.map +0 -1
  481. package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
  482. package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
  483. package/dist/esm/errors/PerpsSDKError.js +0 -67
  484. package/dist/esm/errors/PerpsSDKError.js.map +0 -1
  485. package/dist/esm/errors/ServerError.d.ts +0 -23
  486. package/dist/esm/errors/ServerError.d.ts.map +0 -1
  487. package/dist/esm/errors/ServerError.js +0 -34
  488. package/dist/esm/errors/ServerError.js.map +0 -1
  489. package/dist/esm/errors/ValidationError.d.ts +0 -23
  490. package/dist/esm/errors/ValidationError.d.ts.map +0 -1
  491. package/dist/esm/errors/ValidationError.js +0 -34
  492. package/dist/esm/errors/ValidationError.js.map +0 -1
  493. package/dist/esm/errors/utils/rootCause.d.ts +0 -71
  494. package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
  495. package/dist/esm/errors/utils/rootCause.js +0 -99
  496. package/dist/esm/errors/utils/rootCause.js.map +0 -1
  497. package/dist/esm/services/cancelOrder.d.ts +0 -51
  498. package/dist/esm/services/cancelOrder.d.ts.map +0 -1
  499. package/dist/esm/services/cancelOrder.js +0 -50
  500. package/dist/esm/services/cancelOrder.js.map +0 -1
  501. package/dist/esm/services/createAuthorization.d.ts +0 -51
  502. package/dist/esm/services/createAuthorization.d.ts.map +0 -1
  503. package/dist/esm/services/createAuthorization.js +0 -50
  504. package/dist/esm/services/createAuthorization.js.map +0 -1
  505. package/dist/esm/services/createOrder.d.ts +0 -74
  506. package/dist/esm/services/createOrder.d.ts.map +0 -1
  507. package/dist/esm/services/createOrder.js +0 -62
  508. package/dist/esm/services/createOrder.js.map +0 -1
  509. package/dist/esm/services/createWithdrawal.d.ts +0 -49
  510. package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
  511. package/dist/esm/services/createWithdrawal.js +0 -49
  512. package/dist/esm/services/createWithdrawal.js.map +0 -1
  513. package/dist/esm/services/getDexes.d.ts +0 -20
  514. package/dist/esm/services/getDexes.d.ts.map +0 -1
  515. package/dist/esm/services/getDexes.js +0 -21
  516. package/dist/esm/services/getDexes.js.map +0 -1
  517. package/dist/esm/services/getHistory.d.ts.map +0 -1
  518. package/dist/esm/services/getHistory.js.map +0 -1
  519. package/dist/esm/services/getMarket.d.ts +0 -27
  520. package/dist/esm/services/getMarket.d.ts.map +0 -1
  521. package/dist/esm/services/getMarket.js +0 -25
  522. package/dist/esm/services/getMarket.js.map +0 -1
  523. package/dist/esm/services/getMarkets.d.ts +0 -25
  524. package/dist/esm/services/getMarkets.d.ts.map +0 -1
  525. package/dist/esm/services/getMarkets.js +0 -23
  526. package/dist/esm/services/getMarkets.js.map +0 -1
  527. package/dist/esm/services/submitAuthorization.d.ts +0 -42
  528. package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
  529. package/dist/esm/services/submitAuthorization.js +0 -41
  530. package/dist/esm/services/submitAuthorization.js.map +0 -1
  531. package/dist/esm/services/submitOrder.d.ts +0 -44
  532. package/dist/esm/services/submitOrder.d.ts.map +0 -1
  533. package/dist/esm/services/submitOrder.js +0 -43
  534. package/dist/esm/services/submitOrder.js.map +0 -1
  535. package/dist/esm/services/submitWithdrawal.d.ts +0 -40
  536. package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
  537. package/dist/esm/services/submitWithdrawal.js +0 -40
  538. package/dist/esm/services/submitWithdrawal.js.map +0 -1
  539. package/dist/types/dex/hyperliquid.d.ts +0 -3
  540. package/dist/types/dex/hyperliquid.d.ts.map +0 -1
  541. package/dist/types/dex/registry.d.ts +0 -3
  542. package/dist/types/dex/registry.d.ts.map +0 -1
  543. package/dist/types/dex/types.d.ts +0 -15
  544. package/dist/types/dex/types.d.ts.map +0 -1
  545. package/dist/types/errors/AgentError.d.ts +0 -25
  546. package/dist/types/errors/AgentError.d.ts.map +0 -1
  547. package/dist/types/errors/HTTPError.d.ts +0 -11
  548. package/dist/types/errors/HTTPError.d.ts.map +0 -1
  549. package/dist/types/errors/PerpsSDKError.d.ts +0 -40
  550. package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
  551. package/dist/types/errors/ServerError.d.ts +0 -23
  552. package/dist/types/errors/ServerError.d.ts.map +0 -1
  553. package/dist/types/errors/ValidationError.d.ts +0 -23
  554. package/dist/types/errors/ValidationError.d.ts.map +0 -1
  555. package/dist/types/errors/utils/rootCause.d.ts +0 -71
  556. package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
  557. package/dist/types/services/cancelOrder.d.ts +0 -51
  558. package/dist/types/services/cancelOrder.d.ts.map +0 -1
  559. package/dist/types/services/createAuthorization.d.ts +0 -51
  560. package/dist/types/services/createAuthorization.d.ts.map +0 -1
  561. package/dist/types/services/createOrder.d.ts +0 -74
  562. package/dist/types/services/createOrder.d.ts.map +0 -1
  563. package/dist/types/services/createWithdrawal.d.ts +0 -49
  564. package/dist/types/services/createWithdrawal.d.ts.map +0 -1
  565. package/dist/types/services/getDexes.d.ts +0 -20
  566. package/dist/types/services/getDexes.d.ts.map +0 -1
  567. package/dist/types/services/getHistory.d.ts.map +0 -1
  568. package/dist/types/services/getMarket.d.ts +0 -27
  569. package/dist/types/services/getMarket.d.ts.map +0 -1
  570. package/dist/types/services/getMarkets.d.ts +0 -25
  571. package/dist/types/services/getMarkets.d.ts.map +0 -1
  572. package/dist/types/services/submitAuthorization.d.ts +0 -42
  573. package/dist/types/services/submitAuthorization.d.ts.map +0 -1
  574. package/dist/types/services/submitOrder.d.ts +0 -44
  575. package/dist/types/services/submitOrder.d.ts.map +0 -1
  576. package/dist/types/services/submitWithdrawal.d.ts +0 -40
  577. package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
  578. package/src/dex/hyperliquid.ts +0 -20
  579. package/src/dex/registry.ts +0 -15
  580. package/src/dex/types.ts +0 -16
  581. package/src/errors/AgentError.ts +0 -43
  582. package/src/errors/HTTPError.ts +0 -72
  583. package/src/errors/PerpsSDKError.ts +0 -79
  584. package/src/errors/ServerError.ts +0 -41
  585. package/src/errors/ValidationError.ts +0 -38
  586. package/src/errors/utils/rootCause.ts +0 -112
  587. package/src/services/cancelOrder.ts +0 -75
  588. package/src/services/createAuthorization.ts +0 -79
  589. package/src/services/createOrder.ts +0 -116
  590. package/src/services/createWithdrawal.ts +0 -76
  591. package/src/services/getMarket.ts +0 -41
  592. package/src/services/getMarkets.ts +0 -37
  593. package/src/services/submitAuthorization.ts +0 -70
  594. package/src/services/submitOrder.ts +0 -72
  595. package/src/services/submitWithdrawal.ts +0 -67
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Universal perpetual futures calculation utilities.
3
+ *
4
+ * Pure functions for computing position-related values that any consumer
5
+ * of the perps SDK would need. All parameters are required — no default
6
+ * values for critical financial parameters.
7
+ */
8
+
9
+ /**
10
+ * Calculate position size in asset units from margin.
11
+ *
12
+ * @param marginUsd - Margin amount in USD
13
+ * @param leverage - Position leverage
14
+ * @param price - Current asset price
15
+ * @returns Position size in asset units
16
+ */
17
+ export function calculatePositionSize(
18
+ marginUsd: number,
19
+ leverage: number,
20
+ price: number
21
+ ): number {
22
+ return (marginUsd * leverage) / price
23
+ }
24
+
25
+ /**
26
+ * Calculate notional value of a position.
27
+ *
28
+ * @param size - Position size in asset units
29
+ * @param price - Current asset price
30
+ * @returns Notional value in USD
31
+ */
32
+ export function calculateNotionalValue(size: number, price: number): number {
33
+ return Math.abs(size) * price
34
+ }
35
+
36
+ /**
37
+ * Calculate unrealized PnL.
38
+ *
39
+ * @param entryPrice - Position entry price
40
+ * @param currentPrice - Current market price
41
+ * @param size - Position size (positive for long, negative for short)
42
+ * @returns Unrealized PnL in USD
43
+ */
44
+ export function calculateUnrealizedPnl(
45
+ entryPrice: number,
46
+ currentPrice: number,
47
+ size: number
48
+ ): number {
49
+ return (currentPrice - entryPrice) * size
50
+ }
51
+
52
+ /**
53
+ * Calculate return on equity (ROE) percentage.
54
+ *
55
+ * @param pnl - Profit/loss in USD
56
+ * @param margin - Initial margin in USD
57
+ * @returns ROE as percentage (e.g., 10 for 10%)
58
+ */
59
+ export function calculateRoe(pnl: number, margin: number): number {
60
+ if (margin === 0) {
61
+ return 0
62
+ }
63
+ return (pnl / margin) * 100
64
+ }
65
+
66
+ /**
67
+ * Calculate required margin for a position.
68
+ *
69
+ * @param notionalValue - Position notional value in USD
70
+ * @param leverage - Position leverage
71
+ * @returns Required margin in USD
72
+ */
73
+ export function calculateRequiredMargin(
74
+ notionalValue: number,
75
+ leverage: number
76
+ ): number {
77
+ return notionalValue / leverage
78
+ }
79
+
80
+ /**
81
+ * Estimate trading fees.
82
+ *
83
+ * @param sizeUsd - Position size in USD (notional value)
84
+ * @param feeRate - Fee rate as decimal (e.g., 0.00035 for 0.035%)
85
+ * @returns Estimated fee in USD
86
+ */
87
+ export function estimateFees(sizeUsd: number, feeRate: number): number {
88
+ return sizeUsd * feeRate
89
+ }
90
+
91
+ /**
92
+ * Apply slippage to a price for order execution.
93
+ *
94
+ * @param price - Base price
95
+ * @param slippagePercent - Slippage tolerance as percentage (e.g., 0.5 for 0.5%)
96
+ * @param isBuy - True if buying (price goes up), false if selling (price goes down)
97
+ * @returns Price adjusted for slippage
98
+ */
99
+ export function applySlippage(
100
+ price: number,
101
+ slippagePercent: number,
102
+ isBuy: boolean
103
+ ): number {
104
+ const multiplier = 1 + slippagePercent / 100
105
+ return isBuy ? price * multiplier : price / multiplier
106
+ }
107
+
108
+ // ---------------------------------------------------------------------------
109
+ // TP/SL expected P&L calculations
110
+ // ---------------------------------------------------------------------------
111
+
112
+ export interface ExpectedPnl {
113
+ amount: number
114
+ percent: number
115
+ }
116
+
117
+ /**
118
+ * Calculate expected gain/loss for a TP or SL trigger price.
119
+ * Returns signed values — positive means profit, negative means loss.
120
+ *
121
+ * @param triggerPrice - The TP or SL target price
122
+ * @param entryPrice - Position entry / current market price
123
+ * @param leverage - Position leverage multiplier
124
+ * @param isLong - True for long positions, false for short
125
+ * @param margin - Margin amount in USD
126
+ */
127
+ export function calculateExpectedPnl(
128
+ triggerPrice: number,
129
+ entryPrice: number,
130
+ leverage: number,
131
+ isLong: boolean,
132
+ margin: number
133
+ ): ExpectedPnl | null {
134
+ if (!triggerPrice || entryPrice === 0 || margin === 0) {
135
+ return null
136
+ }
137
+ const priceDiff = isLong
138
+ ? triggerPrice - entryPrice
139
+ : entryPrice - triggerPrice
140
+ const percent = (priceDiff / entryPrice) * leverage * 100
141
+ const amount = margin * (percent / 100)
142
+ return { amount, percent }
143
+ }
144
+
145
+ /**
146
+ * Convert a percentage gain/loss to a target price.
147
+ *
148
+ * @param percent - Target gain/loss percentage (positive = profitable direction)
149
+ * @param entryPrice - Position entry price
150
+ * @param leverage - Position leverage multiplier
151
+ * @param isLong - True for long positions, false for short
152
+ */
153
+ export function priceFromPercent(
154
+ percent: number,
155
+ entryPrice: number,
156
+ leverage: number,
157
+ isLong: boolean
158
+ ): number {
159
+ if (entryPrice === 0 || leverage === 0) {
160
+ return 0
161
+ }
162
+ const priceDelta = (percent / 100 / leverage) * entryPrice
163
+ return isLong ? entryPrice + priceDelta : entryPrice - priceDelta
164
+ }
165
+
166
+ /**
167
+ * Convert a target price to a percentage gain/loss.
168
+ *
169
+ * @param price - Target price
170
+ * @param entryPrice - Position entry price
171
+ * @param leverage - Position leverage multiplier
172
+ * @param isLong - True for long positions, false for short
173
+ */
174
+ export function percentFromPrice(
175
+ price: number,
176
+ entryPrice: number,
177
+ leverage: number,
178
+ isLong: boolean
179
+ ): number {
180
+ if (entryPrice === 0 || leverage === 0) {
181
+ return 0
182
+ }
183
+ const priceDiff = isLong ? price - entryPrice : entryPrice - price
184
+ return (priceDiff / entryPrice) * leverage * 100
185
+ }
186
+
187
+ // ---------------------------------------------------------------------------
188
+ // Realized PnL percentage
189
+ // ---------------------------------------------------------------------------
190
+
191
+ /**
192
+ * Calculate realized PnL as a percentage of position value at close.
193
+ *
194
+ * @param realizedPnl - The realized profit/loss in USD
195
+ * @param size - Position size in asset units at close
196
+ * @param price - Price at close
197
+ * @returns PnL as a percentage of position value
198
+ */
199
+ export function calculateRealizedPnlPercent(
200
+ realizedPnl: number,
201
+ size: number,
202
+ price: number
203
+ ): number {
204
+ const positionValue = Math.abs(size) * price
205
+ if (positionValue === 0) {
206
+ return 0
207
+ }
208
+ return (realizedPnl / positionValue) * 100
209
+ }
@@ -0,0 +1,9 @@
1
+ export {
2
+ calculateLiquidationPrice,
3
+ calculateMaintenanceMarginRate,
4
+ } from './liquidation.js'
5
+ export {
6
+ formatOrderPrice,
7
+ formatOrderSize,
8
+ getMaxPriceDecimals,
9
+ } from './orderFormatting.js'
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Hyperliquid-specific liquidation price calculation.
3
+ *
4
+ * Uses the exact formula from Hyperliquid docs:
5
+ * https://hyperliquid.gitbook.io/hyperliquid-docs/trading/liquidations
6
+ *
7
+ * liq_price = price - side * margin_available / position_size / (1 - l * side)
8
+ *
9
+ * Where:
10
+ * - l = 1 / (2 * maxLeverage) (maintenance margin fraction)
11
+ * - side = 1 (long) or -1 (short)
12
+ * - margin_available = isolated_margin - maintenance_margin_required
13
+ */
14
+
15
+ /**
16
+ * Calculate the maintenance margin fraction for a Hyperliquid asset.
17
+ *
18
+ * Maintenance margin is half of the initial margin at max leverage.
19
+ *
20
+ * @param maxLeverage - Maximum leverage for the asset (e.g., 50 for BTC)
21
+ * @returns Maintenance margin fraction (e.g., 0.01 for 50x max leverage),
22
+ * or undefined if maxLeverage is zero
23
+ */
24
+ export function calculateMaintenanceMarginRate(
25
+ maxLeverage: number
26
+ ): number | undefined {
27
+ if (maxLeverage === 0) {
28
+ return undefined
29
+ }
30
+ return 1 / (2 * maxLeverage)
31
+ }
32
+
33
+ /**
34
+ * Calculate liquidation price using the exact Hyperliquid formula.
35
+ *
36
+ * For isolated margin, new position prediction. For existing positions,
37
+ * prefer Position.liquidationPrice from the API.
38
+ *
39
+ * Formula derivation (isolated margin, single position):
40
+ * margin_per_unit = entryPrice / leverage
41
+ * maintenance_per_unit = entryPrice * mmr
42
+ * margin_available = margin_per_unit - maintenance_per_unit
43
+ * liq_price = entryPrice - side * margin_available / (1 - mmr * side)
44
+ *
45
+ * Where mmr = 1 / (2 * maxLeverage).
46
+ *
47
+ * @param entryPrice - Position entry price
48
+ * @param leverage - User-selected leverage (e.g., 10)
49
+ * @param isLong - True if long position, false if short
50
+ * @param maxLeverage - Asset's maximum leverage (e.g., 50 for BTC). Determines
51
+ * the maintenance margin rate: mmr = 1 / (2 * maxLeverage)
52
+ * @returns Estimated liquidation price, or undefined if inputs are invalid
53
+ */
54
+ export function calculateLiquidationPrice(
55
+ entryPrice: number,
56
+ leverage: number,
57
+ isLong: boolean,
58
+ maxLeverage: number
59
+ ): number | undefined {
60
+ if (leverage === 0 || maxLeverage === 0) {
61
+ return undefined
62
+ }
63
+ const mmr = 1 / (2 * maxLeverage)
64
+ const side = isLong ? 1 : -1
65
+ const denominator = 1 - mmr * side
66
+ if (denominator === 0) {
67
+ return undefined
68
+ }
69
+ const marginAvailable = entryPrice * (1 / leverage - mmr)
70
+ return entryPrice - (side * marginAvailable) / denominator
71
+ }
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Hyperliquid order size and price formatting for exchange submission.
3
+ *
4
+ * These encode Hyperliquid-specific order submission rules. Getting size/price
5
+ * formatting wrong causes rejected orders.
6
+ *
7
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/tick-and-lot-size
8
+ */
9
+
10
+ import { stringToFloat } from '../parse.js'
11
+
12
+ /**
13
+ * Max combined decimals (size + price) enforced by Hyperliquid.
14
+ * Perps: 6, Spot: 8
15
+ */
16
+ const MAX_DECIMALS_PERPS = 6
17
+ const MAX_DECIMALS_SPOT = 8
18
+
19
+ function getMaxDecimals(market?: string): number {
20
+ return market === 'spot' ? MAX_DECIMALS_SPOT : MAX_DECIMALS_PERPS
21
+ }
22
+
23
+ /**
24
+ * Derive the maximum number of price decimal places for a given asset.
25
+ *
26
+ * @param szDecimals - The asset's szDecimals (from market meta)
27
+ * @param market - Optional market type (e.g. 'spot'). Defaults to perps rules.
28
+ * @returns Maximum allowed price decimals
29
+ */
30
+ export function getMaxPriceDecimals(
31
+ szDecimals: number,
32
+ market?: string
33
+ ): number {
34
+ return Math.max(0, getMaxDecimals(market) - szDecimals)
35
+ }
36
+
37
+ /**
38
+ * Format a size value for order submission.
39
+ *
40
+ * Per Hyperliquid docs (tick-and-lot-size):
41
+ * - Size must be rounded to the asset's szDecimals
42
+ * - Trailing zeroes must be removed for signing
43
+ *
44
+ * @param size - The size value to format
45
+ * @param szDecimals - Number of decimal places allowed for this asset (from meta)
46
+ * @returns Size as a string with correct precision, no trailing zeros
47
+ */
48
+ export function formatOrderSize(size: number, szDecimals: number): string {
49
+ // Truncate (don't round up) to avoid exceeding available balance
50
+ const multiplier = 10 ** szDecimals
51
+ const truncated = Math.floor(size * multiplier) / multiplier
52
+ // Remove trailing zeros by round-tripping through stringToFloat
53
+ return stringToFloat(truncated.toFixed(szDecimals)).toString()
54
+ }
55
+
56
+ /**
57
+ * Format a price value for order submission.
58
+ *
59
+ * Per Hyperliquid docs (tick-and-lot-size):
60
+ * - Maximum 5 significant figures
61
+ * - Max decimals = MAX_DECIMALS - szDecimals (6 for perps, 8 for spot)
62
+ * - Integer prices always allowed regardless of significant figures
63
+ * - Trailing zeroes must be removed for signing
64
+ *
65
+ * @param price - The price value to format
66
+ * @param szDecimals - The asset's szDecimals (affects max price decimals)
67
+ * @param market - Optional market type (e.g. 'spot'). Defaults to perps rules.
68
+ * @returns Price as a string with correct precision, no trailing zeros
69
+ */
70
+ export function formatOrderPrice(
71
+ price: number,
72
+ szDecimals: number,
73
+ market?: string
74
+ ): string {
75
+ const maxPriceDecimals = getMaxPriceDecimals(szDecimals, market)
76
+
77
+ // Round to max allowed decimals
78
+ let rounded = stringToFloat(price.toFixed(maxPriceDecimals))
79
+
80
+ // Integer prices are always allowed regardless of significant figures
81
+ if (Number.isInteger(rounded)) {
82
+ return rounded.toString()
83
+ }
84
+
85
+ // Count significant figures (digits excluding leading zeros)
86
+ const absStr = Math.abs(rounded).toString().replace('.', '')
87
+ const sigFigs = absStr.replace(/^0+/, '').length
88
+
89
+ // If more than 5 significant figures, round to 5
90
+ if (sigFigs > 5) {
91
+ rounded = stringToFloat(rounded.toPrecision(5))
92
+ }
93
+
94
+ // Return without trailing zeros
95
+ return rounded.toString()
96
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Order classification utilities.
3
+ *
4
+ * Type guards and classifiers that operate on SDK types to determine
5
+ * order categories (TP/SL, open/close). These use the OrderType enum
6
+ * for classification — no string matching.
7
+ */
8
+
9
+ import type { OpenOrder } from '@lifi/perps-types'
10
+ import { FillClassification, OrderSide, OrderType } from '@lifi/perps-types'
11
+ import { stringToFloat } from './parse.js'
12
+
13
+ export { FillClassification }
14
+
15
+ const TP_TYPES = new Set<OrderType>([
16
+ OrderType.TAKE_PROFIT_MARKET,
17
+ OrderType.TAKE_PROFIT_LIMIT,
18
+ ])
19
+
20
+ const SL_TYPES = new Set<OrderType>([
21
+ OrderType.STOP_MARKET,
22
+ OrderType.STOP_LIMIT,
23
+ ])
24
+
25
+ /**
26
+ * Check if an open order is a Take Profit trigger order.
27
+ */
28
+ export function isTakeProfitOrder(order: Pick<OpenOrder, 'type'>): boolean {
29
+ return TP_TYPES.has(order.type)
30
+ }
31
+
32
+ /**
33
+ * Check if an open order is a Stop Loss trigger order.
34
+ */
35
+ export function isStopLossOrder(order: Pick<OpenOrder, 'type'>): boolean {
36
+ return SL_TYPES.has(order.type)
37
+ }
38
+
39
+ /**
40
+ * Check if an open order is a TP or SL trigger order.
41
+ */
42
+ export function isTpSlOrder(order: Pick<OpenOrder, 'type'>): boolean {
43
+ return TP_TYPES.has(order.type) || SL_TYPES.has(order.type)
44
+ }
45
+
46
+ /**
47
+ * Classify a fill as open or close based on realizedPnl.
48
+ * @deprecated Use `Fill.classification` instead — it uses startPosition
49
+ * for accurate open/increase/reduce/close/reverse classification.
50
+ */
51
+ export function classifyFill(
52
+ side: OrderSide,
53
+ realizedPnl: string | null | undefined
54
+ ): FillClassification {
55
+ const isClose = realizedPnl != null && stringToFloat(realizedPnl) !== 0
56
+ if (side === OrderSide.BUY) {
57
+ return isClose
58
+ ? FillClassification.CLOSED_SHORT
59
+ : FillClassification.OPENED_LONG
60
+ }
61
+ return isClose
62
+ ? FillClassification.CLOSED_LONG
63
+ : FillClassification.OPENED_SHORT
64
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Robust string-to-number parsing utilities.
3
+ */
4
+
5
+ /**
6
+ * Parse a string to a float, stripping common formatting artefacts.
7
+ *
8
+ * Handles:
9
+ * - Currency prefixes/suffixes ($, USD, etc.)
10
+ * - Explicit sign prefixes (+/-)
11
+ * - Thousands separators (commas)
12
+ * - Percentage suffixes (%)
13
+ * - Whitespace
14
+ *
15
+ * @param value - The string to parse
16
+ * @returns Parsed number, or NaN if the string contains no valid number
17
+ */
18
+ export function stringToFloat(value: string): number {
19
+ if (!value) {
20
+ return 0
21
+ }
22
+ // Strip whitespace, currency symbols, thousands commas, and % suffix
23
+ const cleaned = value.trim().replace(/[$%]/g, '').replace(/,/g, '').trim()
24
+ if (!cleaned) {
25
+ return 0
26
+ }
27
+ return parseFloat(cleaned)
28
+ }
@@ -1,9 +1,9 @@
1
+ import type { PerpsErrorBody } from '@lifi/perps-types'
1
2
  import { PerpsErrorCode } from '@lifi/perps-types'
2
3
  import type {
3
4
  PerpsBaseConfig,
4
5
  SDKRequestOptions,
5
6
  } from '../client/createPerpsClient.js'
6
- import { HTTPError } from '../errors/HTTPError.js'
7
7
  import { PerpsError } from '../errors/PerpsError.js'
8
8
  import { version } from '../version.js'
9
9
  import { sleep } from './sleep.js'
@@ -23,8 +23,7 @@ const DEFAULT_RETRIES = 1
23
23
  * @param options - Fetch options plus retries
24
24
  * @param sdkOptions - SDK-specific options (signal, etc.)
25
25
  * @returns Parsed JSON response
26
- * @throws {HTTPError} On non-2xx responses
27
- * @throws {PerpsError} On network or parsing errors
26
+ * @throws {PerpsError} On non-2xx responses or network errors
28
27
  */
29
28
  export async function request<T>(
30
29
  config: PerpsBaseConfig,
@@ -61,10 +60,13 @@ export async function request<T>(
61
60
  const response = await fetch(url, finalOptions)
62
61
 
63
62
  if (!response.ok) {
64
- const error = new HTTPError(response, url)
65
- await error.buildAdditionalDetails()
63
+ // Parse the backend's error body
64
+ let body: PerpsErrorBody | undefined
65
+ try {
66
+ body = await response.json()
67
+ } catch {}
66
68
 
67
- // Retry on 5xx errors
69
+ // Retry on 5xx before throwing
68
70
  if (retries > 0 && response.status >= 500) {
69
71
  await sleep(500)
70
72
  return request<T>(
@@ -75,12 +77,25 @@ export async function request<T>(
75
77
  )
76
78
  }
77
79
 
80
+ // Rehydrate backend error — code/message/tool come straight from the response
81
+ const fallbackMessage = `Request failed with status code ${response.status}`
82
+ if (
83
+ body &&
84
+ typeof body.code === 'number' &&
85
+ typeof body.message === 'string'
86
+ ) {
87
+ const error = new PerpsError(body.code, body.message)
88
+ error.tool = body.tool ?? 'unknown'
89
+ throw error
90
+ }
91
+ const error = new PerpsError(PerpsErrorCode.DefaultError, fallbackMessage)
92
+ error.tool = 'unknown'
78
93
  throw error
79
94
  }
80
95
 
81
96
  return (await response.json()) as T
82
97
  } catch (error) {
83
- if (error instanceof HTTPError || error instanceof PerpsError) {
98
+ if (error instanceof PerpsError) {
84
99
  throw error
85
100
  }
86
101
 
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Token unit conversion utilities.
3
+ */
4
+
5
+ import { formatUnits } from 'viem'
6
+
7
+ /**
8
+ * Convert a base-unit amount (bigint string) to a human-readable decimal string.
9
+ *
10
+ * @param amount - Amount in base units (e.g. "1000000" for 1 USDC)
11
+ * @param decimals - Token decimals (e.g. 6 for USDC)
12
+ * @returns Decimal string (e.g. "1.0")
13
+ */
14
+ export function fromBaseUnits(amount: string, decimals: number): string {
15
+ try {
16
+ return formatUnits(BigInt(amount), decimals)
17
+ } catch {
18
+ return '0'
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Convert a base-unit amount to a number.
24
+ *
25
+ * @param amount - Amount in base units
26
+ * @param decimals - Token decimals
27
+ * @returns Numeric value, or 0 if parsing fails
28
+ */
29
+ export function fromBaseUnitsNumber(amount: string, decimals: number): number {
30
+ const value = Number(fromBaseUnits(amount, decimals))
31
+ return Number.isFinite(value) ? value : 0
32
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Order validation utilities.
3
+ */
4
+
5
+ /**
6
+ * Validate margin input against available balance and exchange minimums.
7
+ *
8
+ * @param margin - Margin amount in USD
9
+ * @param leverage - Position leverage
10
+ * @param availableBalance - Available balance, or null if unknown
11
+ * @param feeRate - Fee rate as decimal, or null if unknown
12
+ * @param minMarginUsd - Minimum margin requirement in USD (exchange-specific)
13
+ * @returns Error code: 'insufficient' | 'below-minimum' | '' (valid)
14
+ */
15
+ export function validateMargin(
16
+ margin: number,
17
+ leverage: number,
18
+ availableBalance: number | null,
19
+ feeRate: number | null,
20
+ minMarginUsd: number
21
+ ): string {
22
+ if (margin <= 0) {
23
+ return ''
24
+ }
25
+
26
+ if (availableBalance !== null && margin > availableBalance) {
27
+ return 'insufficient'
28
+ }
29
+
30
+ if (margin < minMarginUsd) {
31
+ return 'below-minimum'
32
+ }
33
+
34
+ return ''
35
+ }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/perps-sdk'
2
- export const version = '0.1.1-alpha.4'
2
+ export const version = '0.1.1-alpha.40'
@@ -1,3 +0,0 @@
1
- import type { DexAuthProvider } from './types.js';
2
- export declare const hyperliquidAuthProvider: DexAuthProvider;
3
- //# sourceMappingURL=hyperliquid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hyperliquid.d.ts","sourceRoot":"","sources":["../../../src/dex/hyperliquid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,uBAAuB,EAAE,eAiBrC,CAAA"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hyperliquidAuthProvider = void 0;
4
- exports.hyperliquidAuthProvider = {
5
- getAuthorizationInputs({ signingMode, agentAddress }) {
6
- if (signingMode === 'USER') {
7
- return {
8
- user: [{ key: 'ApproveBuilderFee' }, { key: 'UserSetAbstraction' }],
9
- agent: [],
10
- };
11
- }
12
- return {
13
- user: [
14
- { key: 'ApproveAgent', params: { agentAddress } },
15
- { key: 'ApproveBuilderFee' },
16
- ],
17
- agent: [{ key: 'AgentSetAbstraction' }],
18
- };
19
- },
20
- };
21
- //# sourceMappingURL=hyperliquid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hyperliquid.js","sourceRoot":"","sources":["../../../src/dex/hyperliquid.ts"],"names":[],"mappings":";;;AAEa,QAAA,uBAAuB,GAAoB;IACtD,sBAAsB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE;QAClD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO;gBACL,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,CAAC;gBACnE,KAAK,EAAE,EAAE;aACV,CAAA;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE;gBACJ,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,EAAE;gBACjD,EAAE,GAAG,EAAE,mBAAmB,EAAE;aAC7B;YACD,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,CAAC;SACxC,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { DexAuthProvider } from './types.js';
2
- export declare function getDexAuthProvider(dex: string): DexAuthProvider;
3
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/dex/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMjD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAM/D"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDexAuthProvider = getDexAuthProvider;
4
- const PerpsSDKError_js_1 = require("../errors/PerpsSDKError.js");
5
- const hyperliquid_js_1 = require("./hyperliquid.js");
6
- const providers = {
7
- hyperliquid: hyperliquid_js_1.hyperliquidAuthProvider,
8
- };
9
- function getDexAuthProvider(dex) {
10
- const provider = providers[dex];
11
- if (!provider) {
12
- throw new PerpsSDKError_js_1.PerpsSDKError(new Error(`Unsupported dex: ${dex}`));
13
- }
14
- return provider;
15
- }
16
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/dex/registry.ts"],"names":[],"mappings":";;AAQA,gDAMC;AAdD,iEAA0D;AAC1D,qDAA0D;AAG1D,MAAM,SAAS,GAAoC;IACjD,WAAW,EAAE,wCAAuB;CACrC,CAAA;AAED,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,gCAAa,CAAC,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}