@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
@@ -1,12 +1,15 @@
1
- import type { Subscription, SubscriptionEvent } from '@lifi/perps-types'
2
- import { HistoryItemStatus, OrderSide, OrderType } from '@lifi/perps-types'
1
+ import type {
2
+ Position,
3
+ Subscription,
4
+ SubscriptionEvent,
5
+ } from '@lifi/perps-types'
3
6
  import type {
4
7
  HlAssetPosition,
5
8
  HlOrderDetail,
6
9
  HlUserFill,
7
10
  } from '@lifi/perps-types/providers/hyperliquid'
8
11
  import {
9
- mapHistoryItem,
12
+ mapFill,
10
13
  mapOrder,
11
14
  mapPosition,
12
15
  } from '@lifi/perps-types/providers/hyperliquid'
@@ -15,27 +18,25 @@ import type { SubscriptionListener, WsProvider } from '../types.js'
15
18
  import type {
16
19
  HlWsAllMidsData,
17
20
  HlWsCandleData,
21
+ HlWsClearinghouseStateData,
18
22
  HlWsL2BookData,
19
23
  HlWsMessage,
20
- HlWsTrade,
24
+ HlWsSpotClearinghouseStateData,
21
25
  HlWsUserFillsData,
22
- HlWsWebData2Data,
23
26
  } from './types.js'
24
27
 
25
28
  export class HyperliquidWsProvider implements WsProvider {
26
29
  private rws: ReconnectingWebSocket
27
30
  private subs = new Map<string, { count: number; payload: object }>()
28
31
  private listeners = new Map<string, Set<SubscriptionListener>>()
29
- private readonly dexKey: string
30
- private readonly assetIdLookup: Map<string, number>
31
-
32
- constructor(
33
- wsUrl: string,
34
- dexKey: string,
35
- assetIdLookup: Map<string, number>
36
- ) {
37
- this.dexKey = dexKey
38
- this.assetIdLookup = assetIdLookup
32
+ private readonly providerKey: string
33
+ private readonly subDexes: string[]
34
+ private positionsBySubDex = new Map<string, Position[]>()
35
+ private midsBySubDex = new Map<string, Record<string, string>>()
36
+
37
+ constructor(wsUrl: string, providerKey: string, subDexes: string[]) {
38
+ this.providerKey = providerKey
39
+ this.subDexes = subDexes
39
40
  this.rws = new ReconnectingWebSocket(wsUrl)
40
41
  this.rws.on('message', (data) => this.handleMessage(data))
41
42
  this.rws.on('open', () => this.resubscribeAll())
@@ -46,13 +47,102 @@ export class HyperliquidWsProvider implements WsProvider {
46
47
  listener: SubscriptionListener
47
48
  ): Promise<() => void> {
48
49
  const key = this.toKey(sub)
49
- const payload = this.toHlPayload(sub)
50
50
 
51
51
  if (!this.listeners.has(key)) {
52
52
  this.listeners.set(key, new Set())
53
53
  }
54
54
  this.listeners.get(key)!.add(listener)
55
55
 
56
+ // Prices require multi-sub-dex allMids subscriptions
57
+ if (sub.channel === 'prices') {
58
+ const entries = this.getPriceSubEntries()
59
+
60
+ for (const { subKey, payload } of entries) {
61
+ const existing = this.subs.get(subKey)
62
+ if (existing) {
63
+ existing.count++
64
+ } else {
65
+ this.subs.set(subKey, { count: 1, payload })
66
+ await this.rws.ready()
67
+ this.rws.send(
68
+ JSON.stringify({ method: 'subscribe', subscription: payload })
69
+ )
70
+ }
71
+ }
72
+
73
+ return () => {
74
+ this.listeners.get(key)?.delete(listener)
75
+ let allRemoved = true
76
+ for (const { subKey, payload } of entries) {
77
+ const s = this.subs.get(subKey)
78
+ if (s) {
79
+ s.count--
80
+ if (s.count <= 0) {
81
+ this.subs.delete(subKey)
82
+ this.rws.send(
83
+ JSON.stringify({
84
+ method: 'unsubscribe',
85
+ subscription: payload,
86
+ })
87
+ )
88
+ } else {
89
+ allRemoved = false
90
+ }
91
+ }
92
+ }
93
+ if (allRemoved) {
94
+ this.listeners.delete(key)
95
+ this.midsBySubDex.clear()
96
+ }
97
+ }
98
+ }
99
+
100
+ // Positions require multi-sub-dex clearinghouseState subscriptions
101
+ if (sub.channel === 'positions') {
102
+ const entries = this.getPositionSubEntries(sub.address)
103
+
104
+ for (const { subKey, payload } of entries) {
105
+ const existing = this.subs.get(subKey)
106
+ if (existing) {
107
+ existing.count++
108
+ } else {
109
+ this.subs.set(subKey, { count: 1, payload })
110
+ await this.rws.ready()
111
+ this.rws.send(
112
+ JSON.stringify({ method: 'subscribe', subscription: payload })
113
+ )
114
+ }
115
+ }
116
+
117
+ return () => {
118
+ this.listeners.get(key)?.delete(listener)
119
+ let allRemoved = true
120
+ for (const { subKey, payload } of entries) {
121
+ const s = this.subs.get(subKey)
122
+ if (s) {
123
+ s.count--
124
+ if (s.count <= 0) {
125
+ this.subs.delete(subKey)
126
+ this.rws.send(
127
+ JSON.stringify({
128
+ method: 'unsubscribe',
129
+ subscription: payload,
130
+ })
131
+ )
132
+ } else {
133
+ allRemoved = false
134
+ }
135
+ }
136
+ }
137
+ if (allRemoved) {
138
+ this.listeners.delete(key)
139
+ this.positionsBySubDex.clear()
140
+ }
141
+ }
142
+ }
143
+
144
+ // All other channels: single WS subscription per key
145
+ const payload = this.toHlPayload(sub)
56
146
  const existing = this.subs.get(key)
57
147
  if (existing) {
58
148
  existing.count++
@@ -80,6 +170,37 @@ export class HyperliquidWsProvider implements WsProvider {
80
170
  }
81
171
  }
82
172
 
173
+ /** Build sub-key + payload pairs for each sub-dex allMids subscription. */
174
+ private getPriceSubEntries(): Array<{ subKey: string; payload: object }> {
175
+ return [
176
+ {
177
+ subKey: 'allMids:default',
178
+ payload: { type: 'allMids' },
179
+ },
180
+ ...this.subDexes.map((dex) => ({
181
+ subKey: `allMids:${dex}`,
182
+ payload: { type: 'allMids', dex },
183
+ })),
184
+ ]
185
+ }
186
+
187
+ /** Build sub-key + payload pairs for each sub-dex clearinghouseState subscription. */
188
+ private getPositionSubEntries(
189
+ address: string
190
+ ): Array<{ subKey: string; payload: object }> {
191
+ const addr = address.toLowerCase()
192
+ return [
193
+ {
194
+ subKey: `positions:${addr}:default`,
195
+ payload: { type: 'clearinghouseState', user: address },
196
+ },
197
+ ...this.subDexes.map((dex) => ({
198
+ subKey: `positions:${addr}:${dex}`,
199
+ payload: { type: 'clearinghouseState', user: address, dex },
200
+ })),
201
+ ]
202
+ }
203
+
83
204
  close() {
84
205
  this.rws.close()
85
206
  this.subs.clear()
@@ -99,36 +220,48 @@ export class HyperliquidWsProvider implements WsProvider {
99
220
  case 'prices':
100
221
  return 'allMids'
101
222
  case 'orderbook':
102
- return `l2Book:${sub.symbol}`
103
- case 'trades':
104
- return `trades:${sub.symbol}`
223
+ return `l2Book:${sub.assetId}`
105
224
  case 'candle':
106
- return `candle:${sub.symbol}:${sub.interval}`
225
+ return `candle:${sub.assetId}:${sub.interval}`
107
226
  case 'orderUpdates':
108
- return `orderUpdates:${sub.address}`
227
+ return `orderUpdates:${sub.address.toLowerCase()}`
109
228
  case 'fills':
110
- return `userFills:${sub.address}`
229
+ return `userFills:${sub.address.toLowerCase()}`
111
230
  case 'positions':
112
- return `webData2:${sub.address}`
231
+ return `positions:${sub.address.toLowerCase()}`
232
+ case 'spotBalances':
233
+ return `spotClearinghouseState:${sub.address.toLowerCase()}`
113
234
  }
114
235
  }
115
236
 
116
237
  private toHlPayload(sub: Subscription): object {
117
238
  switch (sub.channel) {
118
239
  case 'prices':
240
+ // Prices are handled via getPriceSubEntries in subscribe()
241
+ // and never reach toHlPayload, but TS requires exhaustive cases.
119
242
  return { type: 'allMids' }
120
243
  case 'orderbook':
121
- return { type: 'l2Book', coin: sub.symbol }
122
- case 'trades':
123
- return { type: 'trades', coin: sub.symbol }
244
+ return {
245
+ type: 'l2Book',
246
+ coin: sub.assetId,
247
+ ...(sub.depth !== undefined ? { nLevels: sub.depth } : {}),
248
+ }
124
249
  case 'candle':
125
- return { type: 'candle', coin: sub.symbol, interval: sub.interval }
250
+ return {
251
+ type: 'candle',
252
+ coin: sub.assetId,
253
+ interval: sub.interval,
254
+ }
126
255
  case 'orderUpdates':
127
256
  return { type: 'orderUpdates', user: sub.address }
128
257
  case 'fills':
129
258
  return { type: 'userFills', user: sub.address }
130
259
  case 'positions':
131
- return { type: 'webData2', user: sub.address }
260
+ // Positions are handled via getPositionSubEntries in subscribe()
261
+ // and never reach toHlPayload, but TS requires exhaustive cases.
262
+ return { type: 'clearinghouseState', user: sub.address }
263
+ case 'spotBalances':
264
+ return { type: 'spotClearinghouseState', user: sub.address }
132
265
  }
133
266
  }
134
267
 
@@ -174,9 +307,6 @@ export class HyperliquidWsProvider implements WsProvider {
174
307
  case 'l2Book':
175
308
  this.handleL2Book(msg.data as HlWsL2BookData)
176
309
  break
177
- case 'trades':
178
- this.handleTrades(msg.data as HlWsTrade[])
179
- break
180
310
  case 'candle':
181
311
  this.handleCandle(msg.data as HlWsCandleData)
182
312
  break
@@ -186,8 +316,13 @@ export class HyperliquidWsProvider implements WsProvider {
186
316
  case 'userFills':
187
317
  this.handleUserFills(msg.data as HlWsUserFillsData)
188
318
  break
189
- case 'webData2':
190
- this.handleWebData2(msg.data as HlWsWebData2Data)
319
+ case 'clearinghouseState':
320
+ this.handleClearinghouseState(msg.data as HlWsClearinghouseStateData)
321
+ break
322
+ case 'spotClearinghouseState':
323
+ this.handleSpotClearinghouseState(
324
+ msg.data as HlWsSpotClearinghouseStateData
325
+ )
191
326
  break
192
327
  }
193
328
  } catch {
@@ -196,15 +331,24 @@ export class HyperliquidWsProvider implements WsProvider {
196
331
  }
197
332
 
198
333
  private handleAllMids(data: HlWsAllMidsData) {
199
- this.emit('allMids', { channel: 'prices', data: { prices: data.mids } })
334
+ const subDexKey = data.dex || 'default'
335
+ this.midsBySubDex.set(subDexKey, data.mids)
336
+
337
+ // Merge all sub-dex mids into a single record
338
+ const merged: Record<string, string> = {}
339
+ for (const mids of this.midsBySubDex.values()) {
340
+ Object.assign(merged, mids)
341
+ }
342
+
343
+ this.emit('allMids', { channel: 'prices', data: merged })
200
344
  }
201
345
 
202
346
  private handleL2Book(data: HlWsL2BookData) {
203
347
  this.emit(`l2Book:${data.coin}`, {
204
348
  channel: 'orderbook',
205
349
  data: {
206
- dex: this.dexKey,
207
- symbol: data.coin,
350
+ provider: this.providerKey,
351
+ assetId: data.coin,
208
352
  bids: data.levels[0].map((l) => ({ price: l.px, size: l.sz })),
209
353
  asks: data.levels[1].map((l) => ({ price: l.px, size: l.sz })),
210
354
  timestamp: data.time,
@@ -212,27 +356,6 @@ export class HyperliquidWsProvider implements WsProvider {
212
356
  })
213
357
  }
214
358
 
215
- private handleTrades(data: HlWsTrade[]) {
216
- if (data.length === 0) {
217
- return
218
- }
219
- const coin = data[0].coin
220
- const items = data.map((t) => ({
221
- id: String(t.tid),
222
- symbol: t.coin,
223
- assetId: this.assetIdLookup.get(t.coin) ?? -1,
224
- dex: this.dexKey,
225
- side: t.side === 'B' ? OrderSide.BUY : OrderSide.SELL,
226
- type: OrderType.MARKET,
227
- size: t.sz,
228
- price: t.px,
229
- status: HistoryItemStatus.FILLED,
230
- filledSize: t.sz,
231
- createdAt: new Date(t.time).toISOString(),
232
- }))
233
- this.emit(`trades:${coin}`, { channel: 'trades', data: items })
234
- }
235
-
236
359
  private handleCandle(data: HlWsCandleData) {
237
360
  this.emit(`candle:${data.s}:${data.i}`, {
238
361
  channel: 'candle',
@@ -256,19 +379,35 @@ export class HyperliquidWsProvider implements WsProvider {
256
379
  }
257
380
 
258
381
  private handleUserFills(data: HlWsUserFillsData) {
259
- const items = data.fills.map((f) =>
260
- mapHistoryItem(f as HlUserFill, this.dexKey, this.assetIdLookup)
261
- )
382
+ const items = data.fills.map((f) => mapFill(f as HlUserFill))
262
383
  this.emit(`userFills:${data.user}`, { channel: 'fills', data: items })
263
384
  }
264
385
 
265
- private handleWebData2(data: HlWsWebData2Data) {
386
+ private handleClearinghouseState(data: HlWsClearinghouseStateData) {
387
+ const subDexKey = data.dex || 'default'
266
388
  const positions = data.clearinghouseState.assetPositions.map((ap) =>
267
- mapPosition(ap as HlAssetPosition, this.dexKey, this.assetIdLookup)
389
+ mapPosition(ap as HlAssetPosition)
268
390
  )
269
- this.emit(`webData2:${data.user}`, {
391
+ this.positionsBySubDex.set(subDexKey, positions)
392
+
393
+ // Merge all sub-dex positions into a single flat array
394
+ const merged = [...this.positionsBySubDex.values()].flat()
395
+
396
+ this.emit(`positions:${data.user.toLowerCase()}`, {
270
397
  channel: 'positions',
271
- data: positions,
398
+ data: merged,
399
+ })
400
+ }
401
+
402
+ private handleSpotClearinghouseState(data: HlWsSpotClearinghouseStateData) {
403
+ const balances = data.balances.map((b) => ({
404
+ coin: b.coin,
405
+ total: b.total,
406
+ hold: b.hold,
407
+ }))
408
+ this.emit(`spotClearinghouseState:${data.user.toLowerCase()}`, {
409
+ channel: 'spotBalances',
410
+ data: balances,
272
411
  })
273
412
  }
274
413
  }
@@ -16,19 +16,11 @@ export type HlWsMessage = {
16
16
 
17
17
  export type HlWsAllMidsData = {
18
18
  mids: HlAllMids
19
+ dex?: string
19
20
  }
20
21
 
21
22
  export type HlWsL2BookData = HlL2Book & { coin: string }
22
23
 
23
- export type HlWsTrade = {
24
- coin: string
25
- side: string
26
- px: string
27
- sz: string
28
- time: number
29
- tid: number
30
- }
31
-
32
24
  export type HlWsCandleData = HlCandle & {
33
25
  T: number
34
26
  s: string
@@ -42,7 +34,13 @@ export type HlWsUserFillsData = {
42
34
  fills: HlUserFill[]
43
35
  }
44
36
 
45
- export type HlWsWebData2Data = {
37
+ export type HlWsClearinghouseStateData = {
38
+ dex: string
46
39
  user: string
47
40
  clearinghouseState: Pick<HlClearinghouseState, 'assetPositions'>
48
41
  }
42
+
43
+ export type HlWsSpotClearinghouseStateData = {
44
+ user: string
45
+ balances: Array<{ coin: string; total: string; hold: string }>
46
+ }
@@ -0,0 +1,41 @@
1
+ import type {
2
+ ActionParamsMap,
3
+ ActionType,
4
+ Address,
5
+ CreateActionResponse,
6
+ } from '@lifi/perps-types'
7
+ import type {
8
+ PerpsSDKClient,
9
+ SDKRequestOptions,
10
+ } from '../client/createPerpsClient.js'
11
+ import { request } from '../utils/request.js'
12
+
13
+ export interface CreateActionParams<T extends ActionType = ActionType> {
14
+ provider: string
15
+ address: Address
16
+ signerAddress?: Address
17
+ action: T
18
+ params: ActionParamsMap[T]
19
+ }
20
+
21
+ export async function createAction<T extends ActionType>(
22
+ client: PerpsSDKClient,
23
+ params: CreateActionParams<T>,
24
+ options?: SDKRequestOptions
25
+ ): Promise<CreateActionResponse> {
26
+ return request<CreateActionResponse>(
27
+ client.config,
28
+ `${client.config.apiUrl}/createAction`,
29
+ {
30
+ method: 'POST',
31
+ body: JSON.stringify({
32
+ provider: params.provider,
33
+ address: params.address,
34
+ signerAddress: params.signerAddress,
35
+ action: params.action,
36
+ params: params.params,
37
+ }),
38
+ },
39
+ options
40
+ )
41
+ }
@@ -0,0 +1,41 @@
1
+ import type {
2
+ ActionType,
3
+ Address,
4
+ ExecuteActionResponse,
5
+ SignedActionStep,
6
+ } from '@lifi/perps-types'
7
+ import type {
8
+ PerpsSDKClient,
9
+ SDKRequestOptions,
10
+ } from '../client/createPerpsClient.js'
11
+ import { request } from '../utils/request.js'
12
+
13
+ export interface ExecuteActionParams {
14
+ provider: string
15
+ address: Address
16
+ signerAddress?: Address
17
+ action: ActionType
18
+ actions: SignedActionStep[]
19
+ }
20
+
21
+ export async function executeAction(
22
+ client: PerpsSDKClient,
23
+ params: ExecuteActionParams,
24
+ options?: SDKRequestOptions
25
+ ): Promise<ExecuteActionResponse> {
26
+ return request<ExecuteActionResponse>(
27
+ client.config,
28
+ `${client.config.apiUrl}/executeAction`,
29
+ {
30
+ method: 'POST',
31
+ body: JSON.stringify({
32
+ provider: params.provider,
33
+ address: params.address,
34
+ signerAddress: params.signerAddress,
35
+ action: params.action,
36
+ actions: params.actions,
37
+ }),
38
+ },
39
+ options
40
+ )
41
+ }
@@ -6,32 +6,32 @@ import type {
6
6
  import { buildUrl, request } from '../utils/request.js'
7
7
 
8
8
  export interface GetAccountParams {
9
- /** DEX to get account from (e.g., 'hyperliquid') */
10
- dex: string
9
+ /** Provider to get account from (e.g., 'hyperliquid') */
10
+ provider: string
11
11
  /** Wallet address */
12
12
  address: Address
13
13
  }
14
14
 
15
15
  /**
16
- * Get account information including balances, positions, and open orders.
16
+ * Get account information including balances and margin details.
17
+ *
18
+ * Use {@link getPositions} and {@link getOrders} to fetch positions and orders separately.
17
19
  *
18
20
  * @param client - The SDK client instance
19
21
  * @param params - Request parameters
20
22
  * @param options - Request options (e.g., AbortSignal)
21
23
  * @returns Account details
22
- * @throws {HTTPError} On API error responses
24
+ * @throws {PerpsError} On API error responses
23
25
  * @throws {PerpsError} On network or parsing errors
24
26
  *
25
27
  * @example
26
28
  * ```ts
27
29
  * const client = createPerpsClient({ integrator: 'my-app' })
28
30
  * const account = await getAccount(client, {
29
- * dex: 'hyperliquid',
31
+ * provider: 'hyperliquid',
30
32
  * address: '0x1234...'
31
33
  * })
32
34
  * console.log(account.balances) // [{ currency: 'USDC', amount: '10000.00' }]
33
- * console.log(account.positions) // [{ symbol: 'BTC', side: 'LONG', ... }]
34
- * console.log(account.openOrders) // [{ id: '123', symbol: 'BTC', ... }]
35
35
  * ```
36
36
  */
37
37
  export async function getAccount(
@@ -40,7 +40,7 @@ export async function getAccount(
40
40
  options?: SDKRequestOptions
41
41
  ): Promise<AccountResponse> {
42
42
  const url = buildUrl(`${client.config.apiUrl}/account`, {
43
- dex: params.dex,
43
+ provider: params.provider,
44
44
  address: params.address,
45
45
  })
46
46
  return request<AccountResponse>(client.config, url, {}, options)
@@ -0,0 +1,77 @@
1
+ import type {
2
+ ActivitiesResponse,
3
+ ActivityType,
4
+ Address,
5
+ } from '@lifi/perps-types'
6
+ import type {
7
+ PerpsSDKClient,
8
+ SDKRequestOptions,
9
+ } from '../client/createPerpsClient.js'
10
+ import { buildUrl, request } from '../utils/request.js'
11
+
12
+ export interface GetActivityParams {
13
+ /** Provider to get activity from (e.g., 'hyperliquid') */
14
+ provider: string
15
+ /** Wallet address */
16
+ address: Address
17
+ /** Maximum number of items to return */
18
+ limit?: number
19
+ /** Cursor for pagination */
20
+ cursor?: string
21
+ /** Filter: activity after this timestamp (ms) */
22
+ startTime?: number
23
+ /** Filter: activity before this timestamp (ms) */
24
+ endTime?: number
25
+ /** Filter by activity type(s) */
26
+ type?: ActivityType[]
27
+ }
28
+
29
+ /**
30
+ * Get account activity (deposits, withdrawals, liquidations, funding payments).
31
+ *
32
+ * @param client - The SDK client instance
33
+ * @param params - Request parameters
34
+ * @param options - Request options (e.g., AbortSignal)
35
+ * @returns Activity items with pagination
36
+ * @throws {PerpsError} On API error responses
37
+ * @throws {PerpsError} On network or parsing errors
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const client = createPerpsClient({ integrator: 'my-app' })
42
+ * const { items, pagination } = await getActivity(client, {
43
+ * provider: 'hyperliquid',
44
+ * address: '0x1234...',
45
+ * limit: 50
46
+ * })
47
+ *
48
+ * // Fetch next page
49
+ * if (pagination.hasMore) {
50
+ * const nextPage = await getActivity(client, {
51
+ * provider: 'hyperliquid',
52
+ * address: '0x1234...',
53
+ * cursor: pagination.cursor
54
+ * })
55
+ * }
56
+ * ```
57
+ */
58
+ export async function getActivity(
59
+ client: PerpsSDKClient,
60
+ params: GetActivityParams,
61
+ options?: SDKRequestOptions
62
+ ): Promise<ActivitiesResponse> {
63
+ let url = buildUrl(`${client.config.apiUrl}/activity`, {
64
+ provider: params.provider,
65
+ address: params.address,
66
+ limit: params.limit,
67
+ cursor: params.cursor,
68
+ startTime: params.startTime,
69
+ endTime: params.endTime,
70
+ })
71
+ if (params.type?.length) {
72
+ const sep = url.includes('?') ? '&' : '?'
73
+ url +=
74
+ sep + params.type.map((t) => `type=${encodeURIComponent(t)}`).join('&')
75
+ }
76
+ return request<ActivitiesResponse>(client.config, url, {}, options)
77
+ }
@@ -0,0 +1,34 @@
1
+ import type { Asset } from '@lifi/perps-types'
2
+ import type {
3
+ PerpsSDKClient,
4
+ SDKRequestOptions,
5
+ } from '../client/createPerpsClient.js'
6
+ import { buildUrl, request } from '../utils/request.js'
7
+
8
+ export interface GetAssetParams {
9
+ /** Provider to get asset from (e.g., 'hyperliquid') */
10
+ provider: string
11
+ /** Asset symbol (e.g., 'BTC') */
12
+ symbol: string
13
+ }
14
+
15
+ /**
16
+ * Get a specific asset by symbol.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const client = createPerpsClient({ integrator: 'my-app' })
21
+ * const asset = await getAsset(client, { provider: 'hyperliquid', symbol: 'BTC' })
22
+ * console.log(asset) // { symbol: 'BTC', markPrice: '95000.00', ... }
23
+ * ```
24
+ */
25
+ export async function getAsset(
26
+ client: PerpsSDKClient,
27
+ params: GetAssetParams,
28
+ options?: SDKRequestOptions
29
+ ): Promise<Asset> {
30
+ const url = buildUrl(`${client.config.apiUrl}/assets/${params.symbol}`, {
31
+ provider: params.provider,
32
+ })
33
+ return request<Asset>(client.config, url, {}, options)
34
+ }
@@ -0,0 +1,32 @@
1
+ import type { AssetsResponse } from '@lifi/perps-types'
2
+ import type {
3
+ PerpsSDKClient,
4
+ SDKRequestOptions,
5
+ } from '../client/createPerpsClient.js'
6
+ import { buildUrl, request } from '../utils/request.js'
7
+
8
+ export interface GetAssetsParams {
9
+ /** Provider to get assets from (e.g., 'hyperliquid') */
10
+ provider: string
11
+ }
12
+
13
+ /**
14
+ * Get all available assets for a DEX, grouped by providerMarketId.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const client = createPerpsClient({ integrator: 'my-app' })
19
+ * const { assets } = await getAssets(client, { provider: 'hyperliquid' })
20
+ * console.log(assets) // { hyperliquid: [...], xyz: [...], spot: [...] }
21
+ * ```
22
+ */
23
+ export async function getAssets(
24
+ client: PerpsSDKClient,
25
+ params: GetAssetsParams,
26
+ options?: SDKRequestOptions
27
+ ): Promise<AssetsResponse> {
28
+ const url = buildUrl(`${client.config.apiUrl}/assets`, {
29
+ provider: params.provider,
30
+ })
31
+ return request<AssetsResponse>(client.config, url, {}, options)
32
+ }