@lifi/perps-sdk-provider-hyperliquid 0.2.0-alpha.0

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 (434) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +174 -0
  3. package/dist/cjs/HyperliquidProvider.d.ts +15 -0
  4. package/dist/cjs/HyperliquidProvider.d.ts.map +1 -0
  5. package/dist/cjs/HyperliquidProvider.js +135 -0
  6. package/dist/cjs/HyperliquidProvider.js.map +1 -0
  7. package/dist/cjs/accountConfig.d.ts +3 -0
  8. package/dist/cjs/accountConfig.d.ts.map +1 -0
  9. package/dist/cjs/accountConfig.js +45 -0
  10. package/dist/cjs/accountConfig.js.map +1 -0
  11. package/dist/cjs/accountSummary.d.ts +3 -0
  12. package/dist/cjs/accountSummary.d.ts.map +1 -0
  13. package/dist/cjs/accountSummary.js +12 -0
  14. package/dist/cjs/accountSummary.js.map +1 -0
  15. package/dist/cjs/constants.d.ts +11 -0
  16. package/dist/cjs/constants.d.ts.map +1 -0
  17. package/dist/cjs/constants.js +16 -0
  18. package/dist/cjs/constants.js.map +1 -0
  19. package/dist/cjs/context.d.ts +13 -0
  20. package/dist/cjs/context.d.ts.map +1 -0
  21. package/dist/cjs/context.js +24 -0
  22. package/dist/cjs/context.js.map +1 -0
  23. package/dist/cjs/index.d.ts +22 -0
  24. package/dist/cjs/index.d.ts.map +1 -0
  25. package/dist/cjs/index.js +47 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/cjs/package.json +1 -0
  28. package/dist/cjs/services/getAccount.d.ts +6 -0
  29. package/dist/cjs/services/getAccount.d.ts.map +1 -0
  30. package/dist/cjs/services/getAccount.js +109 -0
  31. package/dist/cjs/services/getAccount.js.map +1 -0
  32. package/dist/cjs/services/getActivity.d.ts +15 -0
  33. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  34. package/dist/cjs/services/getActivity.js +65 -0
  35. package/dist/cjs/services/getActivity.js.map +1 -0
  36. package/dist/cjs/services/getFills.d.ts +13 -0
  37. package/dist/cjs/services/getFills.d.ts.map +1 -0
  38. package/dist/cjs/services/getFills.js +40 -0
  39. package/dist/cjs/services/getFills.js.map +1 -0
  40. package/dist/cjs/services/getOrder.d.ts +6 -0
  41. package/dist/cjs/services/getOrder.d.ts.map +1 -0
  42. package/dist/cjs/services/getOrder.js +27 -0
  43. package/dist/cjs/services/getOrder.js.map +1 -0
  44. package/dist/cjs/services/getOrders.d.ts +11 -0
  45. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  46. package/dist/cjs/services/getOrders.js +51 -0
  47. package/dist/cjs/services/getOrders.js.map +1 -0
  48. package/dist/cjs/services/getPositions.d.ts +11 -0
  49. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  50. package/dist/cjs/services/getPositions.js +33 -0
  51. package/dist/cjs/services/getPositions.js.map +1 -0
  52. package/dist/cjs/signers/HyperliquidAgentStore.d.ts +19 -0
  53. package/dist/cjs/signers/HyperliquidAgentStore.d.ts.map +1 -0
  54. package/dist/cjs/signers/HyperliquidAgentStore.js +110 -0
  55. package/dist/cjs/signers/HyperliquidAgentStore.js.map +1 -0
  56. package/dist/cjs/signers/index.d.ts +4 -0
  57. package/dist/cjs/signers/index.d.ts.map +1 -0
  58. package/dist/cjs/signers/index.js +8 -0
  59. package/dist/cjs/signers/index.js.map +1 -0
  60. package/dist/cjs/signers/signActions.d.ts +7 -0
  61. package/dist/cjs/signers/signActions.d.ts.map +1 -0
  62. package/dist/cjs/signers/signActions.js +33 -0
  63. package/dist/cjs/signers/signActions.js.map +1 -0
  64. package/dist/cjs/types/account.d.ts +51 -0
  65. package/dist/cjs/types/account.d.ts.map +1 -0
  66. package/dist/cjs/types/account.js +10 -0
  67. package/dist/cjs/types/account.js.map +1 -0
  68. package/dist/cjs/types/action.d.ts +51 -0
  69. package/dist/cjs/types/action.d.ts.map +1 -0
  70. package/dist/cjs/types/action.js +11 -0
  71. package/dist/cjs/types/action.js.map +1 -0
  72. package/dist/cjs/types/asset.d.ts +66 -0
  73. package/dist/cjs/types/asset.d.ts.map +1 -0
  74. package/dist/cjs/types/asset.js +3 -0
  75. package/dist/cjs/types/asset.js.map +1 -0
  76. package/dist/cjs/types/fill.d.ts +18 -0
  77. package/dist/cjs/types/fill.d.ts.map +1 -0
  78. package/dist/cjs/types/fill.js +3 -0
  79. package/dist/cjs/types/fill.js.map +1 -0
  80. package/dist/cjs/types/index.d.ts +8 -0
  81. package/dist/cjs/types/index.d.ts.map +1 -0
  82. package/dist/cjs/types/index.js +24 -0
  83. package/dist/cjs/types/index.js.map +1 -0
  84. package/dist/cjs/types/ledger.d.ts +53 -0
  85. package/dist/cjs/types/ledger.d.ts.map +1 -0
  86. package/dist/cjs/types/ledger.js +8 -0
  87. package/dist/cjs/types/ledger.js.map +1 -0
  88. package/dist/cjs/types/order.d.ts +46 -0
  89. package/dist/cjs/types/order.d.ts.map +1 -0
  90. package/dist/cjs/types/order.js +3 -0
  91. package/dist/cjs/types/order.js.map +1 -0
  92. package/dist/cjs/types/ws.d.ts +36 -0
  93. package/dist/cjs/types/ws.d.ts.map +1 -0
  94. package/dist/cjs/types/ws.js +3 -0
  95. package/dist/cjs/types/ws.js.map +1 -0
  96. package/dist/cjs/utils/assetId.d.ts +4 -0
  97. package/dist/cjs/utils/assetId.d.ts.map +1 -0
  98. package/dist/cjs/utils/assetId.js +21 -0
  99. package/dist/cjs/utils/assetId.js.map +1 -0
  100. package/dist/cjs/utils/index.d.ts +15 -0
  101. package/dist/cjs/utils/index.d.ts.map +1 -0
  102. package/dist/cjs/utils/index.js +49 -0
  103. package/dist/cjs/utils/index.js.map +1 -0
  104. package/dist/cjs/utils/infoClient.d.ts +10 -0
  105. package/dist/cjs/utils/infoClient.d.ts.map +1 -0
  106. package/dist/cjs/utils/infoClient.js +58 -0
  107. package/dist/cjs/utils/infoClient.js.map +1 -0
  108. package/dist/cjs/utils/liquidation.d.ts +3 -0
  109. package/dist/cjs/utils/liquidation.d.ts.map +1 -0
  110. package/dist/cjs/utils/liquidation.js +24 -0
  111. package/dist/cjs/utils/liquidation.js.map +1 -0
  112. package/dist/cjs/utils/mapActivity.d.ts +5 -0
  113. package/dist/cjs/utils/mapActivity.d.ts.map +1 -0
  114. package/dist/cjs/utils/mapActivity.js +133 -0
  115. package/dist/cjs/utils/mapActivity.js.map +1 -0
  116. package/dist/cjs/utils/mapFill.d.ts +6 -0
  117. package/dist/cjs/utils/mapFill.d.ts.map +1 -0
  118. package/dist/cjs/utils/mapFill.js +33 -0
  119. package/dist/cjs/utils/mapFill.js.map +1 -0
  120. package/dist/cjs/utils/mapMarket.d.ts +4 -0
  121. package/dist/cjs/utils/mapMarket.d.ts.map +1 -0
  122. package/dist/cjs/utils/mapMarket.js +22 -0
  123. package/dist/cjs/utils/mapMarket.js.map +1 -0
  124. package/dist/cjs/utils/mapMarketPrice.d.ts +4 -0
  125. package/dist/cjs/utils/mapMarketPrice.d.ts.map +1 -0
  126. package/dist/cjs/utils/mapMarketPrice.js +22 -0
  127. package/dist/cjs/utils/mapMarketPrice.js.map +1 -0
  128. package/dist/cjs/utils/mapOrder.d.ts +12 -0
  129. package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
  130. package/dist/cjs/utils/mapOrder.js +156 -0
  131. package/dist/cjs/utils/mapOrder.js.map +1 -0
  132. package/dist/cjs/utils/mapPosition.d.ts +5 -0
  133. package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
  134. package/dist/cjs/utils/mapPosition.js +28 -0
  135. package/dist/cjs/utils/mapPosition.js.map +1 -0
  136. package/dist/cjs/utils/marketDisplay.d.ts +4 -0
  137. package/dist/cjs/utils/marketDisplay.d.ts.map +1 -0
  138. package/dist/cjs/utils/marketDisplay.js +23 -0
  139. package/dist/cjs/utils/marketDisplay.js.map +1 -0
  140. package/dist/cjs/utils/orderFormatting.d.ts +4 -0
  141. package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
  142. package/dist/cjs/utils/orderFormatting.js +30 -0
  143. package/dist/cjs/utils/orderFormatting.js.map +1 -0
  144. package/dist/cjs/utils/priceStepToAggregation.d.ts +5 -0
  145. package/dist/cjs/utils/priceStepToAggregation.d.ts.map +1 -0
  146. package/dist/cjs/utils/priceStepToAggregation.js +36 -0
  147. package/dist/cjs/utils/priceStepToAggregation.js.map +1 -0
  148. package/dist/cjs/utils/spotBalance.d.ts +6 -0
  149. package/dist/cjs/utils/spotBalance.d.ts.map +1 -0
  150. package/dist/cjs/utils/spotBalance.js +34 -0
  151. package/dist/cjs/utils/spotBalance.js.map +1 -0
  152. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +29 -0
  153. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -0
  154. package/dist/cjs/websocket/HyperliquidWsProvider.js +359 -0
  155. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -0
  156. package/dist/cjs/websocket/index.d.ts +2 -0
  157. package/dist/cjs/websocket/index.d.ts.map +1 -0
  158. package/dist/cjs/websocket/index.js +6 -0
  159. package/dist/cjs/websocket/index.js.map +1 -0
  160. package/dist/esm/HyperliquidProvider.d.ts +64 -0
  161. package/dist/esm/HyperliquidProvider.d.ts.map +1 -0
  162. package/dist/esm/HyperliquidProvider.js +162 -0
  163. package/dist/esm/HyperliquidProvider.js.map +1 -0
  164. package/dist/esm/accountConfig.d.ts +10 -0
  165. package/dist/esm/accountConfig.d.ts.map +1 -0
  166. package/dist/esm/accountConfig.js +65 -0
  167. package/dist/esm/accountConfig.js.map +1 -0
  168. package/dist/esm/accountSummary.d.ts +10 -0
  169. package/dist/esm/accountSummary.d.ts.map +1 -0
  170. package/dist/esm/accountSummary.js +22 -0
  171. package/dist/esm/accountSummary.js.map +1 -0
  172. package/dist/esm/constants.d.ts +40 -0
  173. package/dist/esm/constants.d.ts.map +1 -0
  174. package/dist/esm/constants.js +42 -0
  175. package/dist/esm/constants.js.map +1 -0
  176. package/dist/esm/context.d.ts +26 -0
  177. package/dist/esm/context.d.ts.map +1 -0
  178. package/dist/esm/context.js +25 -0
  179. package/dist/esm/context.js.map +1 -0
  180. package/dist/esm/index.d.ts +31 -0
  181. package/dist/esm/index.d.ts.map +1 -0
  182. package/dist/esm/index.js +26 -0
  183. package/dist/esm/index.js.map +1 -0
  184. package/dist/esm/package.json +1 -0
  185. package/dist/esm/services/getAccount.d.ts +28 -0
  186. package/dist/esm/services/getAccount.d.ts.map +1 -0
  187. package/dist/esm/services/getAccount.js +134 -0
  188. package/dist/esm/services/getAccount.js.map +1 -0
  189. package/dist/esm/services/getActivity.d.ts +33 -0
  190. package/dist/esm/services/getActivity.d.ts.map +1 -0
  191. package/dist/esm/services/getActivity.js +75 -0
  192. package/dist/esm/services/getActivity.js.map +1 -0
  193. package/dist/esm/services/getFills.d.ts +34 -0
  194. package/dist/esm/services/getFills.d.ts.map +1 -0
  195. package/dist/esm/services/getFills.js +49 -0
  196. package/dist/esm/services/getFills.js.map +1 -0
  197. package/dist/esm/services/getOrder.d.ts +17 -0
  198. package/dist/esm/services/getOrder.d.ts.map +1 -0
  199. package/dist/esm/services/getOrder.js +29 -0
  200. package/dist/esm/services/getOrder.js.map +1 -0
  201. package/dist/esm/services/getOrders.d.ts +27 -0
  202. package/dist/esm/services/getOrders.d.ts.map +1 -0
  203. package/dist/esm/services/getOrders.js +57 -0
  204. package/dist/esm/services/getOrders.js.map +1 -0
  205. package/dist/esm/services/getPositions.d.ts +26 -0
  206. package/dist/esm/services/getPositions.d.ts.map +1 -0
  207. package/dist/esm/services/getPositions.js +37 -0
  208. package/dist/esm/services/getPositions.js.map +1 -0
  209. package/dist/esm/signers/HyperliquidAgentStore.d.ts +54 -0
  210. package/dist/esm/signers/HyperliquidAgentStore.d.ts.map +1 -0
  211. package/dist/esm/signers/HyperliquidAgentStore.js +134 -0
  212. package/dist/esm/signers/HyperliquidAgentStore.js.map +1 -0
  213. package/dist/esm/signers/index.d.ts +4 -0
  214. package/dist/esm/signers/index.d.ts.map +1 -0
  215. package/dist/esm/signers/index.js +4 -0
  216. package/dist/esm/signers/index.js.map +1 -0
  217. package/dist/esm/signers/signActions.d.ts +15 -0
  218. package/dist/esm/signers/signActions.d.ts.map +1 -0
  219. package/dist/esm/signers/signActions.js +38 -0
  220. package/dist/esm/signers/signActions.js.map +1 -0
  221. package/dist/esm/types/account.d.ts +64 -0
  222. package/dist/esm/types/account.d.ts.map +1 -0
  223. package/dist/esm/types/account.js +13 -0
  224. package/dist/esm/types/account.js.map +1 -0
  225. package/dist/esm/types/action.d.ts +61 -0
  226. package/dist/esm/types/action.d.ts.map +1 -0
  227. package/dist/esm/types/action.js +16 -0
  228. package/dist/esm/types/action.js.map +1 -0
  229. package/dist/esm/types/asset.d.ts +82 -0
  230. package/dist/esm/types/asset.d.ts.map +1 -0
  231. package/dist/esm/types/asset.js +3 -0
  232. package/dist/esm/types/asset.js.map +1 -0
  233. package/dist/esm/types/fill.d.ts +21 -0
  234. package/dist/esm/types/fill.d.ts.map +1 -0
  235. package/dist/esm/types/fill.js +3 -0
  236. package/dist/esm/types/fill.js.map +1 -0
  237. package/dist/esm/types/index.d.ts +8 -0
  238. package/dist/esm/types/index.d.ts.map +1 -0
  239. package/dist/esm/types/index.js +11 -0
  240. package/dist/esm/types/index.js.map +1 -0
  241. package/dist/esm/types/ledger.d.ts +93 -0
  242. package/dist/esm/types/ledger.d.ts.map +1 -0
  243. package/dist/esm/types/ledger.js +16 -0
  244. package/dist/esm/types/ledger.js.map +1 -0
  245. package/dist/esm/types/order.d.ts +51 -0
  246. package/dist/esm/types/order.d.ts.map +1 -0
  247. package/dist/esm/types/order.js +3 -0
  248. package/dist/esm/types/order.js.map +1 -0
  249. package/dist/esm/types/ws.d.ts +43 -0
  250. package/dist/esm/types/ws.d.ts.map +1 -0
  251. package/dist/esm/types/ws.js +3 -0
  252. package/dist/esm/types/ws.js.map +1 -0
  253. package/dist/esm/utils/assetId.d.ts +20 -0
  254. package/dist/esm/utils/assetId.d.ts.map +1 -0
  255. package/dist/esm/utils/assetId.js +31 -0
  256. package/dist/esm/utils/assetId.js.map +1 -0
  257. package/dist/esm/utils/index.d.ts +15 -0
  258. package/dist/esm/utils/index.d.ts.map +1 -0
  259. package/dist/esm/utils/index.js +17 -0
  260. package/dist/esm/utils/index.js.map +1 -0
  261. package/dist/esm/utils/infoClient.d.ts +28 -0
  262. package/dist/esm/utils/infoClient.d.ts.map +1 -0
  263. package/dist/esm/utils/infoClient.js +70 -0
  264. package/dist/esm/utils/infoClient.js.map +1 -0
  265. package/dist/esm/utils/liquidation.d.ts +48 -0
  266. package/dist/esm/utils/liquidation.d.ts.map +1 -0
  267. package/dist/esm/utils/liquidation.js +65 -0
  268. package/dist/esm/utils/liquidation.js.map +1 -0
  269. package/dist/esm/utils/mapActivity.d.ts +15 -0
  270. package/dist/esm/utils/mapActivity.d.ts.map +1 -0
  271. package/dist/esm/utils/mapActivity.js +148 -0
  272. package/dist/esm/utils/mapActivity.js.map +1 -0
  273. package/dist/esm/utils/mapFill.d.ts +11 -0
  274. package/dist/esm/utils/mapFill.d.ts.map +1 -0
  275. package/dist/esm/utils/mapFill.js +34 -0
  276. package/dist/esm/utils/mapFill.js.map +1 -0
  277. package/dist/esm/utils/mapMarket.d.ts +12 -0
  278. package/dist/esm/utils/mapMarket.d.ts.map +1 -0
  279. package/dist/esm/utils/mapMarket.js +27 -0
  280. package/dist/esm/utils/mapMarket.js.map +1 -0
  281. package/dist/esm/utils/mapMarketPrice.d.ts +10 -0
  282. package/dist/esm/utils/mapMarketPrice.d.ts.map +1 -0
  283. package/dist/esm/utils/mapMarketPrice.js +24 -0
  284. package/dist/esm/utils/mapMarketPrice.js.map +1 -0
  285. package/dist/esm/utils/mapOrder.d.ts +49 -0
  286. package/dist/esm/utils/mapOrder.d.ts.map +1 -0
  287. package/dist/esm/utils/mapOrder.js +182 -0
  288. package/dist/esm/utils/mapOrder.js.map +1 -0
  289. package/dist/esm/utils/mapPosition.d.ts +12 -0
  290. package/dist/esm/utils/mapPosition.d.ts.map +1 -0
  291. package/dist/esm/utils/mapPosition.js +30 -0
  292. package/dist/esm/utils/mapPosition.js.map +1 -0
  293. package/dist/esm/utils/marketDisplay.d.ts +17 -0
  294. package/dist/esm/utils/marketDisplay.d.ts.map +1 -0
  295. package/dist/esm/utils/marketDisplay.js +31 -0
  296. package/dist/esm/utils/marketDisplay.js.map +1 -0
  297. package/dist/esm/utils/orderFormatting.d.ts +50 -0
  298. package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
  299. package/dist/esm/utils/orderFormatting.js +78 -0
  300. package/dist/esm/utils/orderFormatting.js.map +1 -0
  301. package/dist/esm/utils/priceStepToAggregation.d.ts +20 -0
  302. package/dist/esm/utils/priceStepToAggregation.d.ts.map +1 -0
  303. package/dist/esm/utils/priceStepToAggregation.js +51 -0
  304. package/dist/esm/utils/priceStepToAggregation.js.map +1 -0
  305. package/dist/esm/utils/spotBalance.d.ts +18 -0
  306. package/dist/esm/utils/spotBalance.d.ts.map +1 -0
  307. package/dist/esm/utils/spotBalance.js +40 -0
  308. package/dist/esm/utils/spotBalance.js.map +1 -0
  309. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +61 -0
  310. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -0
  311. package/dist/esm/websocket/HyperliquidWsProvider.js +406 -0
  312. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -0
  313. package/dist/esm/websocket/index.d.ts +2 -0
  314. package/dist/esm/websocket/index.d.ts.map +1 -0
  315. package/dist/esm/websocket/index.js +3 -0
  316. package/dist/esm/websocket/index.js.map +1 -0
  317. package/dist/types/HyperliquidProvider.d.ts +64 -0
  318. package/dist/types/HyperliquidProvider.d.ts.map +1 -0
  319. package/dist/types/accountConfig.d.ts +10 -0
  320. package/dist/types/accountConfig.d.ts.map +1 -0
  321. package/dist/types/accountSummary.d.ts +10 -0
  322. package/dist/types/accountSummary.d.ts.map +1 -0
  323. package/dist/types/constants.d.ts +40 -0
  324. package/dist/types/constants.d.ts.map +1 -0
  325. package/dist/types/context.d.ts +26 -0
  326. package/dist/types/context.d.ts.map +1 -0
  327. package/dist/types/index.d.ts +31 -0
  328. package/dist/types/index.d.ts.map +1 -0
  329. package/dist/types/services/getAccount.d.ts +28 -0
  330. package/dist/types/services/getAccount.d.ts.map +1 -0
  331. package/dist/types/services/getActivity.d.ts +33 -0
  332. package/dist/types/services/getActivity.d.ts.map +1 -0
  333. package/dist/types/services/getFills.d.ts +34 -0
  334. package/dist/types/services/getFills.d.ts.map +1 -0
  335. package/dist/types/services/getOrder.d.ts +17 -0
  336. package/dist/types/services/getOrder.d.ts.map +1 -0
  337. package/dist/types/services/getOrders.d.ts +27 -0
  338. package/dist/types/services/getOrders.d.ts.map +1 -0
  339. package/dist/types/services/getPositions.d.ts +26 -0
  340. package/dist/types/services/getPositions.d.ts.map +1 -0
  341. package/dist/types/signers/HyperliquidAgentStore.d.ts +54 -0
  342. package/dist/types/signers/HyperliquidAgentStore.d.ts.map +1 -0
  343. package/dist/types/signers/index.d.ts +4 -0
  344. package/dist/types/signers/index.d.ts.map +1 -0
  345. package/dist/types/signers/signActions.d.ts +15 -0
  346. package/dist/types/signers/signActions.d.ts.map +1 -0
  347. package/dist/types/types/account.d.ts +64 -0
  348. package/dist/types/types/account.d.ts.map +1 -0
  349. package/dist/types/types/action.d.ts +61 -0
  350. package/dist/types/types/action.d.ts.map +1 -0
  351. package/dist/types/types/asset.d.ts +82 -0
  352. package/dist/types/types/asset.d.ts.map +1 -0
  353. package/dist/types/types/fill.d.ts +21 -0
  354. package/dist/types/types/fill.d.ts.map +1 -0
  355. package/dist/types/types/index.d.ts +8 -0
  356. package/dist/types/types/index.d.ts.map +1 -0
  357. package/dist/types/types/ledger.d.ts +93 -0
  358. package/dist/types/types/ledger.d.ts.map +1 -0
  359. package/dist/types/types/order.d.ts +51 -0
  360. package/dist/types/types/order.d.ts.map +1 -0
  361. package/dist/types/types/ws.d.ts +43 -0
  362. package/dist/types/types/ws.d.ts.map +1 -0
  363. package/dist/types/utils/assetId.d.ts +20 -0
  364. package/dist/types/utils/assetId.d.ts.map +1 -0
  365. package/dist/types/utils/index.d.ts +15 -0
  366. package/dist/types/utils/index.d.ts.map +1 -0
  367. package/dist/types/utils/infoClient.d.ts +28 -0
  368. package/dist/types/utils/infoClient.d.ts.map +1 -0
  369. package/dist/types/utils/liquidation.d.ts +48 -0
  370. package/dist/types/utils/liquidation.d.ts.map +1 -0
  371. package/dist/types/utils/mapActivity.d.ts +15 -0
  372. package/dist/types/utils/mapActivity.d.ts.map +1 -0
  373. package/dist/types/utils/mapFill.d.ts +11 -0
  374. package/dist/types/utils/mapFill.d.ts.map +1 -0
  375. package/dist/types/utils/mapMarket.d.ts +12 -0
  376. package/dist/types/utils/mapMarket.d.ts.map +1 -0
  377. package/dist/types/utils/mapMarketPrice.d.ts +10 -0
  378. package/dist/types/utils/mapMarketPrice.d.ts.map +1 -0
  379. package/dist/types/utils/mapOrder.d.ts +49 -0
  380. package/dist/types/utils/mapOrder.d.ts.map +1 -0
  381. package/dist/types/utils/mapPosition.d.ts +12 -0
  382. package/dist/types/utils/mapPosition.d.ts.map +1 -0
  383. package/dist/types/utils/marketDisplay.d.ts +17 -0
  384. package/dist/types/utils/marketDisplay.d.ts.map +1 -0
  385. package/dist/types/utils/orderFormatting.d.ts +50 -0
  386. package/dist/types/utils/orderFormatting.d.ts.map +1 -0
  387. package/dist/types/utils/priceStepToAggregation.d.ts +20 -0
  388. package/dist/types/utils/priceStepToAggregation.d.ts.map +1 -0
  389. package/dist/types/utils/spotBalance.d.ts +18 -0
  390. package/dist/types/utils/spotBalance.d.ts.map +1 -0
  391. package/dist/types/websocket/HyperliquidWsProvider.d.ts +61 -0
  392. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -0
  393. package/dist/types/websocket/index.d.ts +2 -0
  394. package/dist/types/websocket/index.d.ts.map +1 -0
  395. package/package.json +73 -0
  396. package/src/HyperliquidProvider.ts +381 -0
  397. package/src/accountConfig.ts +89 -0
  398. package/src/accountSummary.ts +32 -0
  399. package/src/constants.ts +47 -0
  400. package/src/context.ts +41 -0
  401. package/src/index.ts +45 -0
  402. package/src/services/getAccount.ts +263 -0
  403. package/src/services/getActivity.ts +162 -0
  404. package/src/services/getFills.ts +96 -0
  405. package/src/services/getOrder.ts +61 -0
  406. package/src/services/getOrders.ts +101 -0
  407. package/src/services/getPositions.ts +76 -0
  408. package/src/signers/HyperliquidAgentStore.ts +176 -0
  409. package/src/signers/index.ts +5 -0
  410. package/src/signers/signActions.ts +78 -0
  411. package/src/types/account.ts +74 -0
  412. package/src/types/action.ts +66 -0
  413. package/src/types/asset.ts +96 -0
  414. package/src/types/fill.ts +24 -0
  415. package/src/types/index.ts +11 -0
  416. package/src/types/ledger.ts +111 -0
  417. package/src/types/order.ts +56 -0
  418. package/src/types/ws.ts +47 -0
  419. package/src/utils/assetId.ts +38 -0
  420. package/src/utils/index.ts +38 -0
  421. package/src/utils/infoClient.ts +111 -0
  422. package/src/utils/liquidation.ts +74 -0
  423. package/src/utils/mapActivity.ts +182 -0
  424. package/src/utils/mapFill.ts +48 -0
  425. package/src/utils/mapMarket.ts +33 -0
  426. package/src/utils/mapMarketPrice.ts +33 -0
  427. package/src/utils/mapOrder.ts +218 -0
  428. package/src/utils/mapPosition.ts +40 -0
  429. package/src/utils/marketDisplay.ts +38 -0
  430. package/src/utils/orderFormatting.ts +93 -0
  431. package/src/utils/priceStepToAggregation.ts +58 -0
  432. package/src/utils/spotBalance.ts +51 -0
  433. package/src/websocket/HyperliquidWsProvider.ts +533 -0
  434. package/src/websocket/index.ts +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/types/order.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,EAAE,OAAO,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAA;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,EAAE,CAAA;AAGxD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,OAAO,EAAE,MAAM,CAAA;QACf,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,OAAO,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;QAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,gBAAgB,EAAE,MAAM,CAAA;QACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KACzB,CAAA;IACD,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAGD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,aAAa,CAAA;CACrB,CAAA;AAGD,MAAM,MAAM,qBAAqB,GAC7B,kBAAkB,GAClB;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/types/order.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import type { HlClearinghouseState, HlSpotBalance } from './account.js';
2
+ import type { HlAllMids, HlCandle, HlL2Book } from './asset.js';
3
+ import type { HlUserFill } from './fill.js';
4
+ export type HlWsMessage = {
5
+ channel: string;
6
+ data: unknown;
7
+ };
8
+ export type HlWsAllMidsData = {
9
+ mids: HlAllMids;
10
+ dex?: string;
11
+ };
12
+ export type HlWsL2BookData = HlL2Book & {
13
+ coin: string;
14
+ };
15
+ export type HlWsCandleData = HlCandle & {
16
+ T: number;
17
+ s: string;
18
+ i: string;
19
+ n: number;
20
+ };
21
+ export type HlWsUserFillsData = {
22
+ isSnapshot: boolean;
23
+ user: string;
24
+ fills: HlUserFill[];
25
+ };
26
+ export type HlWsAllDexsClearinghouseStateData = {
27
+ user: string;
28
+ clearinghouseStates: [string, Pick<HlClearinghouseState, 'assetPositions'>][];
29
+ };
30
+ export type HlWsSpotStateData = {
31
+ user: string;
32
+ spotState: {
33
+ balances: HlSpotBalance[];
34
+ };
35
+ };
36
+ //# sourceMappingURL=ws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAG3C,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAGD,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAGD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAGxD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG;IACtC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,OAAO,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAA;AAGD,MAAM,MAAM,iCAAiC,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAA;CAC9E,CAAA;AAGD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE;QAAE,QAAQ,EAAE,aAAa,EAAE,CAAA;KAAE,CAAA;CACzC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/types/ws.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare const assetIsSpot: (assetId: string) => boolean;
2
+ export declare const calculateAssetId: (providerIndex: number, indexInProvider: number) => number;
3
+ export declare const getProviderIndex: (provider: string, providerNames: string[]) => number;
4
+ //# sourceMappingURL=assetId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetId.d.ts","sourceRoot":"","sources":["../../../src/utils/assetId.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,KAAG,OAAkC,CAAA;AAShF,eAAO,MAAM,gBAAgB,GAC3B,eAAe,MAAM,EACrB,iBAAiB,MAAM,KACtB,MAKF,CAAA;AAMD,eAAO,MAAM,gBAAgB,GAC3B,UAAU,MAAM,EAChB,eAAe,MAAM,EAAE,KACtB,MAMF,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = void 0;
4
+ const assetIsSpot = (assetId) => assetId.startsWith('@');
5
+ exports.assetIsSpot = assetIsSpot;
6
+ const calculateAssetId = (providerIndex, indexInProvider) => {
7
+ if (providerIndex === 0) {
8
+ return indexInProvider;
9
+ }
10
+ return 100_000 + providerIndex * 10_000 + indexInProvider;
11
+ };
12
+ exports.calculateAssetId = calculateAssetId;
13
+ const getProviderIndex = (provider, providerNames) => {
14
+ const index = providerNames.indexOf(provider);
15
+ if (index === -1) {
16
+ throw new Error(`Unknown sub-provider: ${provider}`);
17
+ }
18
+ return index;
19
+ };
20
+ exports.getProviderIndex = getProviderIndex;
21
+ //# sourceMappingURL=assetId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetId.js","sourceRoot":"","sources":["../../../src/utils/assetId.ts"],"names":[],"mappings":";;;AAKO,MAAM,WAAW,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAAnE,QAAA,WAAW,eAAwD;AASzE,MAAM,gBAAgB,GAAG,CAC9B,aAAqB,EACrB,eAAuB,EACf,EAAE;IACV,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,eAAe,CAAA;IACxB,CAAC;IACD,OAAO,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,eAAe,CAAA;AAC3D,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B;AAMM,MAAM,gBAAgB,GAAG,CAC9B,QAAgB,EAChB,aAAuB,EACf,EAAE;IACV,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AATY,QAAA,gBAAgB,oBAS5B"}
@@ -0,0 +1,15 @@
1
+ export { assetIsSpot, calculateAssetId, getProviderIndex } from './assetId.js';
2
+ export type { InfoRequestOptions } from './infoClient.js';
3
+ export { hlInfoOptions, infoRequest } from './infoClient.js';
4
+ export { calculateLiquidationPrice, calculateMaintenanceMarginRate, } from './liquidation.js';
5
+ export { mapFundingActivity, mapLedgerEntry } from './mapActivity.js';
6
+ export { classifyFillFromPosition, mapFill } from './mapFill.js';
7
+ export { mapMarket } from './mapMarket.js';
8
+ export { mapMarketPrice } from './mapMarketPrice.js';
9
+ export { isTriggerOrder, isTriggerType, mapOpenOrder, mapOrder, mapOrderStatus, mapOrderType, mapStatusReason, mapTriggerOrder, } from './mapOrder.js';
10
+ export { isOpenAssetPosition, mapPosition } from './mapPosition.js';
11
+ export { coinAsset, perpsDexNames } from './marketDisplay.js';
12
+ export { formatOrderPrice, formatOrderSize, getMaxPriceDecimals, } from './orderFormatting.js';
13
+ export { priceStepToAggregation } from './priceStepToAggregation.js';
14
+ export { spotAssetFromToken, spotBalance, spotPriceById, } from './spotBalance.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC9E,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC5D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.spotPriceById = exports.spotBalance = exports.spotAssetFromToken = exports.priceStepToAggregation = exports.getMaxPriceDecimals = exports.formatOrderSize = exports.formatOrderPrice = exports.perpsDexNames = exports.coinAsset = exports.mapPosition = exports.isOpenAssetPosition = exports.mapTriggerOrder = exports.mapStatusReason = exports.mapOrderType = exports.mapOrderStatus = exports.mapOrder = exports.mapOpenOrder = exports.isTriggerType = exports.isTriggerOrder = exports.mapMarketPrice = exports.mapMarket = exports.mapFill = exports.classifyFillFromPosition = exports.mapLedgerEntry = exports.mapFundingActivity = exports.calculateMaintenanceMarginRate = exports.calculateLiquidationPrice = exports.infoRequest = exports.hlInfoOptions = exports.getProviderIndex = exports.calculateAssetId = exports.assetIsSpot = void 0;
4
+ var assetId_js_1 = require("./assetId.js");
5
+ Object.defineProperty(exports, "assetIsSpot", { enumerable: true, get: function () { return assetId_js_1.assetIsSpot; } });
6
+ Object.defineProperty(exports, "calculateAssetId", { enumerable: true, get: function () { return assetId_js_1.calculateAssetId; } });
7
+ Object.defineProperty(exports, "getProviderIndex", { enumerable: true, get: function () { return assetId_js_1.getProviderIndex; } });
8
+ var infoClient_js_1 = require("./infoClient.js");
9
+ Object.defineProperty(exports, "hlInfoOptions", { enumerable: true, get: function () { return infoClient_js_1.hlInfoOptions; } });
10
+ Object.defineProperty(exports, "infoRequest", { enumerable: true, get: function () { return infoClient_js_1.infoRequest; } });
11
+ var liquidation_js_1 = require("./liquidation.js");
12
+ Object.defineProperty(exports, "calculateLiquidationPrice", { enumerable: true, get: function () { return liquidation_js_1.calculateLiquidationPrice; } });
13
+ Object.defineProperty(exports, "calculateMaintenanceMarginRate", { enumerable: true, get: function () { return liquidation_js_1.calculateMaintenanceMarginRate; } });
14
+ var mapActivity_js_1 = require("./mapActivity.js");
15
+ Object.defineProperty(exports, "mapFundingActivity", { enumerable: true, get: function () { return mapActivity_js_1.mapFundingActivity; } });
16
+ Object.defineProperty(exports, "mapLedgerEntry", { enumerable: true, get: function () { return mapActivity_js_1.mapLedgerEntry; } });
17
+ var mapFill_js_1 = require("./mapFill.js");
18
+ Object.defineProperty(exports, "classifyFillFromPosition", { enumerable: true, get: function () { return mapFill_js_1.classifyFillFromPosition; } });
19
+ Object.defineProperty(exports, "mapFill", { enumerable: true, get: function () { return mapFill_js_1.mapFill; } });
20
+ var mapMarket_js_1 = require("./mapMarket.js");
21
+ Object.defineProperty(exports, "mapMarket", { enumerable: true, get: function () { return mapMarket_js_1.mapMarket; } });
22
+ var mapMarketPrice_js_1 = require("./mapMarketPrice.js");
23
+ Object.defineProperty(exports, "mapMarketPrice", { enumerable: true, get: function () { return mapMarketPrice_js_1.mapMarketPrice; } });
24
+ var mapOrder_js_1 = require("./mapOrder.js");
25
+ Object.defineProperty(exports, "isTriggerOrder", { enumerable: true, get: function () { return mapOrder_js_1.isTriggerOrder; } });
26
+ Object.defineProperty(exports, "isTriggerType", { enumerable: true, get: function () { return mapOrder_js_1.isTriggerType; } });
27
+ Object.defineProperty(exports, "mapOpenOrder", { enumerable: true, get: function () { return mapOrder_js_1.mapOpenOrder; } });
28
+ Object.defineProperty(exports, "mapOrder", { enumerable: true, get: function () { return mapOrder_js_1.mapOrder; } });
29
+ Object.defineProperty(exports, "mapOrderStatus", { enumerable: true, get: function () { return mapOrder_js_1.mapOrderStatus; } });
30
+ Object.defineProperty(exports, "mapOrderType", { enumerable: true, get: function () { return mapOrder_js_1.mapOrderType; } });
31
+ Object.defineProperty(exports, "mapStatusReason", { enumerable: true, get: function () { return mapOrder_js_1.mapStatusReason; } });
32
+ Object.defineProperty(exports, "mapTriggerOrder", { enumerable: true, get: function () { return mapOrder_js_1.mapTriggerOrder; } });
33
+ var mapPosition_js_1 = require("./mapPosition.js");
34
+ Object.defineProperty(exports, "isOpenAssetPosition", { enumerable: true, get: function () { return mapPosition_js_1.isOpenAssetPosition; } });
35
+ Object.defineProperty(exports, "mapPosition", { enumerable: true, get: function () { return mapPosition_js_1.mapPosition; } });
36
+ var marketDisplay_js_1 = require("./marketDisplay.js");
37
+ Object.defineProperty(exports, "coinAsset", { enumerable: true, get: function () { return marketDisplay_js_1.coinAsset; } });
38
+ Object.defineProperty(exports, "perpsDexNames", { enumerable: true, get: function () { return marketDisplay_js_1.perpsDexNames; } });
39
+ var orderFormatting_js_1 = require("./orderFormatting.js");
40
+ Object.defineProperty(exports, "formatOrderPrice", { enumerable: true, get: function () { return orderFormatting_js_1.formatOrderPrice; } });
41
+ Object.defineProperty(exports, "formatOrderSize", { enumerable: true, get: function () { return orderFormatting_js_1.formatOrderSize; } });
42
+ Object.defineProperty(exports, "getMaxPriceDecimals", { enumerable: true, get: function () { return orderFormatting_js_1.getMaxPriceDecimals; } });
43
+ var priceStepToAggregation_js_1 = require("./priceStepToAggregation.js");
44
+ Object.defineProperty(exports, "priceStepToAggregation", { enumerable: true, get: function () { return priceStepToAggregation_js_1.priceStepToAggregation; } });
45
+ var spotBalance_js_1 = require("./spotBalance.js");
46
+ Object.defineProperty(exports, "spotAssetFromToken", { enumerable: true, get: function () { return spotBalance_js_1.spotAssetFromToken; } });
47
+ Object.defineProperty(exports, "spotBalance", { enumerable: true, get: function () { return spotBalance_js_1.spotBalance; } });
48
+ Object.defineProperty(exports, "spotPriceById", { enumerable: true, get: function () { return spotBalance_js_1.spotPriceById; } });
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAIA,2CAA8E;AAArE,yGAAA,WAAW,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAExD,iDAA4D;AAAnD,8GAAA,aAAa,OAAA;AAAE,4GAAA,WAAW,OAAA;AACnC,mDAGyB;AAFvB,2HAAA,yBAAyB,OAAA;AACzB,gIAAA,8BAA8B,OAAA;AAEhC,mDAAqE;AAA5D,oHAAA,kBAAkB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAC3C,2CAAgE;AAAvD,sHAAA,wBAAwB,OAAA;AAAE,qGAAA,OAAO,OAAA;AAC1C,+CAA0C;AAAjC,yGAAA,SAAS,OAAA;AAClB,yDAAoD;AAA3C,mHAAA,cAAc,OAAA;AACvB,6CASsB;AARpB,6GAAA,cAAc,OAAA;AACd,4GAAA,aAAa,OAAA;AACb,2GAAA,YAAY,OAAA;AACZ,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,2GAAA,YAAY,OAAA;AACZ,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,mDAAmE;AAA1D,qHAAA,mBAAmB,OAAA;AAAE,6GAAA,WAAW,OAAA;AACzC,uDAA6D;AAApD,6GAAA,SAAS,OAAA;AAAE,iHAAA,aAAa,OAAA;AACjC,2DAI6B;AAH3B,sHAAA,gBAAgB,OAAA;AAChB,qHAAA,eAAe,OAAA;AACf,yHAAA,mBAAmB,OAAA;AAErB,yEAAoE;AAA3D,mIAAA,sBAAsB,OAAA;AAC/B,mDAIyB;AAHvB,oHAAA,kBAAkB,OAAA;AAClB,6GAAA,WAAW,OAAA;AACX,+GAAA,aAAa,OAAA"}
@@ -0,0 +1,10 @@
1
+ import { type PerpsSDKClient, type ResolvedRetryPolicy, type SDKRequestOptions } from '@lifi/perps-sdk';
2
+ export declare const HYPERLIQUID_RETRY_DEFAULTS: ResolvedRetryPolicy;
3
+ export interface InfoRequestOptions {
4
+ signal?: AbortSignal;
5
+ policy?: ResolvedRetryPolicy;
6
+ fetchImpl?: typeof fetch;
7
+ }
8
+ export declare const hlInfoOptions: (client: PerpsSDKClient, options?: SDKRequestOptions) => InfoRequestOptions;
9
+ export declare function infoRequest<T>(apiUrl: string, body: Record<string, unknown>, options?: InfoRequestOptions): Promise<T>;
10
+ //# sourceMappingURL=infoClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infoClient.d.ts","sourceRoot":"","sources":["../../../src/utils/infoClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AAKxB,eAAO,MAAM,0BAA0B,EAAE,mBAmBxC,CAAA;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAOD,eAAO,MAAM,aAAa,GACxB,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,kBAQD,CAAA;AAaF,wBAAsB,WAAW,CAAC,CAAC,EACjC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,CAAC,CAAC,CAqCZ"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hlInfoOptions = exports.HYPERLIQUID_RETRY_DEFAULTS = void 0;
4
+ exports.infoRequest = infoRequest;
5
+ const perps_sdk_1 = require("@lifi/perps-sdk");
6
+ const perps_types_1 = require("@lifi/perps-types");
7
+ const constants_js_1 = require("../constants.js");
8
+ exports.HYPERLIQUID_RETRY_DEFAULTS = {
9
+ enabled: true,
10
+ maxAttempts: 3,
11
+ baseDelayMs: 2_000,
12
+ maxDelayMs: 15_000,
13
+ respectRetryAfter: true,
14
+ classify: ({ response }) => {
15
+ if (response.status === 429) {
16
+ return 'retry-rate-limit';
17
+ }
18
+ if (response.status === 502 ||
19
+ response.status === 503 ||
20
+ response.status === 504) {
21
+ return 'retry-server';
22
+ }
23
+ return 'fail';
24
+ },
25
+ };
26
+ const hlInfoOptions = (client, options) => ({
27
+ signal: options?.signal,
28
+ policy: (0, perps_sdk_1.resolveRetryPolicy)(exports.HYPERLIQUID_RETRY_DEFAULTS, client.config.retry, constants_js_1.PROVIDER_KEY),
29
+ fetchImpl: client.config.fetch,
30
+ });
31
+ exports.hlInfoOptions = hlInfoOptions;
32
+ async function infoRequest(apiUrl, body, options) {
33
+ const policy = options?.policy ?? exports.HYPERLIQUID_RETRY_DEFAULTS;
34
+ let response;
35
+ try {
36
+ response = await (0, perps_sdk_1.fetchWithRetry)(`${apiUrl}/info`, {
37
+ method: 'POST',
38
+ headers: { 'Content-Type': 'application/json' },
39
+ body: JSON.stringify(body),
40
+ }, {
41
+ policy,
42
+ fetchImpl: options?.fetchImpl,
43
+ signal: options?.signal,
44
+ });
45
+ }
46
+ catch (error) {
47
+ const err = new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ServerError, error instanceof Error ? error.message : 'Hyperliquid info request failed');
48
+ err.tool = constants_js_1.PROVIDER_KEY;
49
+ throw err;
50
+ }
51
+ if (!response.ok) {
52
+ const err = new perps_sdk_1.PerpsError(perps_types_1.PerpsErrorCode.ThirdPartyError, `Hyperliquid info request failed: ${response.status}`);
53
+ err.tool = constants_js_1.PROVIDER_KEY;
54
+ throw err;
55
+ }
56
+ return (await response.json());
57
+ }
58
+ //# sourceMappingURL=infoClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infoClient.js","sourceRoot":"","sources":["../../../src/utils/infoClient.ts"],"names":[],"mappings":";;;AAqEA,kCAyCC;AA9GD,+CAOwB;AACxB,mDAAkD;AAClD,kDAA8C;AAGjC,QAAA,0BAA0B,GAAwB;IAC7D,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QACD,IACE,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,EACvB,CAAC;YACD,OAAO,cAAc,CAAA;QACvB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAcM,MAAM,aAAa,GAAG,CAC3B,MAAsB,EACtB,OAA2B,EACP,EAAE,CAAC,CAAC;IACxB,MAAM,EAAE,OAAO,EAAE,MAAM;IACvB,MAAM,EAAE,IAAA,8BAAkB,EACxB,kCAA0B,EAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,EACnB,2BAAY,CACb;IACD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;CAC/B,CAAC,CAAA;AAXW,QAAA,aAAa,iBAWxB;AAaK,KAAK,UAAU,WAAW,CAC/B,MAAc,EACd,IAA6B,EAC7B,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,kCAA0B,CAAA;IAE5D,IAAI,QAAkB,CAAA;IACtB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,IAAA,0BAAc,EAC7B,GAAG,MAAM,OAAO,EAChB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,EACD;YACE,MAAM;YACN,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,IAAI,sBAAU,CACxB,4BAAc,CAAC,WAAW,EAC1B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAC3E,CAAA;QACD,GAAG,CAAC,IAAI,GAAG,2BAAY,CAAA;QACvB,MAAM,GAAG,CAAA;IACX,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,sBAAU,CACxB,4BAAc,CAAC,eAAe,EAC9B,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CACtD,CAAA;QACD,GAAG,CAAC,IAAI,GAAG,2BAAY,CAAA;QACvB,MAAM,GAAG,CAAA;IACX,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAA;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function calculateMaintenanceMarginRate(maxLeverage: number): number | undefined;
2
+ export declare function calculateLiquidationPrice(entryPrice: number, leverage: number, isLong: boolean, maxLeverage: number): number | undefined;
3
+ //# sourceMappingURL=liquidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidation.d.ts","sourceRoot":"","sources":["../../../src/utils/liquidation.ts"],"names":[],"mappings":"AA0BA,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAKpB;AAwBD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAWpB"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateMaintenanceMarginRate = calculateMaintenanceMarginRate;
4
+ exports.calculateLiquidationPrice = calculateLiquidationPrice;
5
+ const perps_sdk_1 = require("@lifi/perps-sdk");
6
+ function calculateMaintenanceMarginRate(maxLeverage) {
7
+ if (maxLeverage === 0) {
8
+ return undefined;
9
+ }
10
+ return 1 / (2 * maxLeverage);
11
+ }
12
+ function calculateLiquidationPrice(entryPrice, leverage, isLong, maxLeverage) {
13
+ const mmr = calculateMaintenanceMarginRate(maxLeverage);
14
+ if (mmr === undefined) {
15
+ return undefined;
16
+ }
17
+ return (0, perps_sdk_1.estimateIsolatedLiquidationPrice)({
18
+ entryPrice,
19
+ leverage,
20
+ isLong,
21
+ maintenanceMarginRate: mmr,
22
+ });
23
+ }
24
+ //# sourceMappingURL=liquidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidation.js","sourceRoot":"","sources":["../../../src/utils/liquidation.ts"],"names":[],"mappings":";;AA0BA,wEAOC;AAwBD,8DAgBC;AA3DD,+CAAkE;AAYlE,SAAgB,8BAA8B,CAC5C,WAAmB;IAEnB,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAA;AAC9B,CAAC;AAwBD,SAAgB,yBAAyB,CACvC,UAAkB,EAClB,QAAgB,EAChB,MAAe,EACf,WAAmB;IAEnB,MAAM,GAAG,GAAG,8BAA8B,CAAC,WAAW,CAAC,CAAA;IACvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,IAAA,4CAAgC,EAAC;QACtC,UAAU;QACV,QAAQ;QACR,MAAM;QACN,qBAAqB,EAAE,GAAG;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ActivityItem, FundingActivity, MarketDisplay } from '@lifi/perps-types';
2
+ import type { HlFundingUpdate, HlLedgerUpdate } from '../types/index.js';
3
+ export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay) => ActivityItem | null;
4
+ export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay) => FundingActivity;
5
+ //# sourceMappingURL=mapActivity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYxE,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,KAC7C,YAAY,GAAG,IA0IjB,CAAA;AAGD,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,KAC7C,eASD,CAAA"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapFundingActivity = exports.mapLedgerEntry = void 0;
4
+ const perps_types_1 = require("@lifi/perps-types");
5
+ const index_js_1 = require("../types/index.js");
6
+ const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket) => {
7
+ const { delta } = entry;
8
+ const base = {
9
+ id: entry.hash,
10
+ provider: providerKey,
11
+ timestamp: new Date(entry.time).toISOString(),
12
+ };
13
+ if ((0, index_js_1.isSpotTransferDelta)(delta)) {
14
+ const queried = queriedAddress.toLowerCase();
15
+ const sender = delta.user.toLowerCase();
16
+ const recipient = delta.destination.toLowerCase();
17
+ const direction = queried === sender ? 'OUT' : 'IN';
18
+ const counterpartyAddress = direction === 'OUT' ? recipient : sender;
19
+ const meta = {
20
+ transferType: 'spotTransfer',
21
+ };
22
+ if (delta.usdcValue !== undefined) {
23
+ meta.usdcValue = delta.usdcValue;
24
+ }
25
+ if (delta.fee !== undefined) {
26
+ meta.fee = delta.fee;
27
+ }
28
+ if (delta.nativeTokenFee !== undefined) {
29
+ meta.nativeTokenFee = delta.nativeTokenFee;
30
+ }
31
+ if (delta.nonce !== undefined) {
32
+ meta.nonce = delta.nonce;
33
+ }
34
+ return {
35
+ ...base,
36
+ type: perps_types_1.ActivityType.TRANSFER,
37
+ direction,
38
+ counterpartyAddress,
39
+ asset: delta.token,
40
+ amount: delta.amount,
41
+ meta,
42
+ explorerLink: entry.hash
43
+ ? `https://app.hyperliquid.xyz/explorer/tx/${entry.hash}`
44
+ : undefined,
45
+ };
46
+ }
47
+ if ((0, index_js_1.isSendAssetDelta)(delta)) {
48
+ const queried = queriedAddress.toLowerCase();
49
+ const sender = delta.user.toLowerCase();
50
+ const recipient = delta.destination.toLowerCase();
51
+ if (sender === recipient && sender === queried) {
52
+ return null;
53
+ }
54
+ const direction = queried === sender ? 'OUT' : 'IN';
55
+ const counterpartyAddress = direction === 'OUT' ? recipient : sender;
56
+ const meta = {
57
+ transferType: 'sendAsset',
58
+ sourceDex: delta.sourceDex,
59
+ destinationDex: delta.destinationDex,
60
+ usdcValue: delta.usdcValue,
61
+ fee: delta.fee,
62
+ nativeTokenFee: delta.nativeTokenFee,
63
+ feeToken: delta.feeToken,
64
+ nonce: delta.nonce,
65
+ };
66
+ return {
67
+ ...base,
68
+ type: perps_types_1.ActivityType.TRANSFER,
69
+ direction,
70
+ counterpartyAddress,
71
+ asset: delta.token,
72
+ amount: delta.amount,
73
+ meta,
74
+ explorerLink: entry.hash
75
+ ? `https://app.hyperliquid.xyz/explorer/tx/${entry.hash}`
76
+ : undefined,
77
+ };
78
+ }
79
+ switch (delta.type) {
80
+ case 'deposit':
81
+ return {
82
+ ...base,
83
+ type: perps_types_1.ActivityType.DEPOSIT,
84
+ amount: delta.usdc ?? '0',
85
+ explorerLink: entry.hash
86
+ ? `https://scan.li.fi/tx/${entry.hash}`
87
+ : undefined,
88
+ };
89
+ case 'withdraw':
90
+ return {
91
+ ...base,
92
+ type: perps_types_1.ActivityType.WITHDRAWAL,
93
+ amount: delta.usdc ?? '0',
94
+ fee: delta.fee ?? '0',
95
+ explorerLink: entry.hash
96
+ ? `https://scan.li.fi/tx/${entry.hash}`
97
+ : undefined,
98
+ };
99
+ case 'liquidation': {
100
+ const d = delta;
101
+ const liquidatedPositions = (d.liquidatedPositions ?? []).map((p) => ({
102
+ market: resolveMarket(p.coin),
103
+ size: p.szi,
104
+ }));
105
+ if (liquidatedPositions.length === 0) {
106
+ return null;
107
+ }
108
+ return {
109
+ ...base,
110
+ type: perps_types_1.ActivityType.LIQUIDATION,
111
+ liquidatedNotionalPosition: d.liquidatedNtlPos,
112
+ accountValue: d.accountValue,
113
+ leverageType: d.leverageType,
114
+ liquidatedPositions,
115
+ };
116
+ }
117
+ default:
118
+ return null;
119
+ }
120
+ };
121
+ exports.mapLedgerEntry = mapLedgerEntry;
122
+ const mapFundingActivity = (entry, providerKey, resolveMarket) => ({
123
+ id: entry.hash,
124
+ provider: providerKey,
125
+ timestamp: new Date(entry.time).toISOString(),
126
+ type: perps_types_1.ActivityType.FUNDING,
127
+ market: resolveMarket(entry.delta.coin),
128
+ amount: entry.delta.usdc,
129
+ positionSize: entry.delta.szi,
130
+ fundingRate: entry.delta.fundingRate,
131
+ });
132
+ exports.mapFundingActivity = mapFundingActivity;
133
+ //# sourceMappingURL=mapActivity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { classifyFillFromPosition } from '@lifi/perps-sdk';
2
+ import type { Fill, MarketDisplay } from '@lifi/perps-types';
3
+ import type { HlUserFill } from '../types/index.js';
4
+ export { classifyFillFromPosition };
5
+ export declare const mapFill: (fill: HlUserFill, market: MarketDisplay) => Fill;
6
+ //# sourceMappingURL=mapFill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAGzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAOnC,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,QAAQ,aAAa,KAAG,IAwBhE,CAAA"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapFill = exports.classifyFillFromPosition = void 0;
4
+ const perps_sdk_1 = require("@lifi/perps-sdk");
5
+ Object.defineProperty(exports, "classifyFillFromPosition", { enumerable: true, get: function () { return perps_sdk_1.classifyFillFromPosition; } });
6
+ const perps_types_1 = require("@lifi/perps-types");
7
+ const constants_js_1 = require("../constants.js");
8
+ const mapFill = (fill, market) => ({
9
+ ...(market.categoryId === constants_js_1.SPOT_MARKET_ID
10
+ ? { realizedPnl: fill.closedPnl }
11
+ : { realizedPnl: fill.closedPnl === '0' ? null : fill.closedPnl }),
12
+ id: String(fill.tid),
13
+ orderId: String(fill.oid),
14
+ market,
15
+ side: fill.side === 'B' ? perps_types_1.OrderSide.BUY : perps_types_1.OrderSide.SELL,
16
+ type: fill.dir?.includes('Limit') ? perps_types_1.OrderType.LIMIT : perps_types_1.OrderType.MARKET,
17
+ size: fill.sz,
18
+ price: fill.px,
19
+ status: perps_types_1.FillStatus.FILLED,
20
+ liquidity: fill.crossed ? perps_types_1.LiquidityRole.TAKER : perps_types_1.LiquidityRole.MAKER,
21
+ filledSize: fill.sz,
22
+ fee: fill.fee,
23
+ startPosition: fill.startPosition,
24
+ explorerLink: (0, perps_sdk_1.explorerTxUrl)(perps_sdk_1.ExplorerChainId.HYPERLIQUID, fill.hash),
25
+ classification: market.categoryId === constants_js_1.SPOT_MARKET_ID
26
+ ? fill.side === 'B'
27
+ ? perps_types_1.FillClassification.SPOT_BUY
28
+ : perps_types_1.FillClassification.SPOT_SELL
29
+ : (0, perps_sdk_1.classifyFillFromPosition)(fill.startPosition, fill.side, fill.sz),
30
+ createdAt: new Date(fill.time).toISOString(),
31
+ });
32
+ exports.mapFill = mapFill;
33
+ //# sourceMappingURL=mapFill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":";;;AAAA,+CAIwB;AAYf,yGAfP,oCAAwB,OAeO;AAVjC,mDAM0B;AAC1B,kDAAgD;AAUzC,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,MAAqB,EAAQ,EAAE,CAAC,CAAC;IACzE,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,6BAAc;QACtC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;QACjC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACpE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB,MAAM;IACN,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,uBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAS,CAAC,IAAI;IACxD,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,uBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAS,CAAC,MAAM;IACtE,IAAI,EAAE,IAAI,CAAC,EAAE;IACb,KAAK,EAAE,IAAI,CAAC,EAAE;IACd,MAAM,EAAE,wBAAU,CAAC,MAAM;IACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,2BAAa,CAAC,KAAK,CAAC,CAAC,CAAC,2BAAa,CAAC,KAAK;IACnE,UAAU,EAAE,IAAI,CAAC,EAAE;IACnB,GAAG,EAAE,IAAI,CAAC,GAAG;IACb,aAAa,EAAE,IAAI,CAAC,aAAa;IACjC,YAAY,EAAE,IAAA,yBAAa,EAAC,2BAAe,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;IACnE,cAAc,EACZ,MAAM,CAAC,UAAU,KAAK,6BAAc;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;YACjB,CAAC,CAAC,gCAAkB,CAAC,QAAQ;YAC7B,CAAC,CAAC,gCAAkB,CAAC,SAAS;QAChC,CAAC,CAAC,IAAA,oCAAwB,EAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;IACtE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;CAC7C,CAAC,CAAA;AAxBW,QAAA,OAAO,WAwBlB"}
@@ -0,0 +1,4 @@
1
+ import type { PerpsMarket } from '@lifi/perps-types';
2
+ import type { HlUniverseItem } from '../types/index.js';
3
+ export declare const mapMarket: (universe: HlUniverseItem, categoryId: string) => PerpsMarket;
4
+ //# sourceMappingURL=mapMarket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapMarket.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAgBvD,eAAO,MAAM,SAAS,GACpB,UAAU,cAAc,EACxB,YAAY,MAAM,KACjB,WAWD,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapMarket = void 0;
4
+ const constants_js_1 = require("../constants.js");
5
+ const liquidation_js_1 = require("./liquidation.js");
6
+ const marketDisplay_js_1 = require("./marketDisplay.js");
7
+ const orderFormatting_js_1 = require("./orderFormatting.js");
8
+ const QUOTE_SYMBOL = 'USDC';
9
+ const mapMarket = (universe, categoryId) => ({
10
+ providerId: constants_js_1.PROVIDER_KEY,
11
+ id: universe.name,
12
+ categoryId,
13
+ baseAsset: (0, marketDisplay_js_1.coinAsset)(universe.name),
14
+ quoteAsset: (0, marketDisplay_js_1.coinAsset)(QUOTE_SYMBOL),
15
+ szDecimals: universe.szDecimals,
16
+ priceDecimals: (0, orderFormatting_js_1.getMaxPriceDecimals)(universe.szDecimals),
17
+ maxLeverage: universe.maxLeverage,
18
+ onlyIsolated: universe.onlyIsolated === true,
19
+ maintenanceMarginRate: (0, liquidation_js_1.calculateMaintenanceMarginRate)(universe.maxLeverage),
20
+ });
21
+ exports.mapMarket = mapMarket;
22
+ //# sourceMappingURL=mapMarket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapMarket.js","sourceRoot":"","sources":["../../../src/utils/mapMarket.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAE9C,qDAAiE;AACjE,yDAA8C;AAC9C,6DAA0D;AAG1D,MAAM,YAAY,GAAG,MAAM,CAAA;AAUpB,MAAM,SAAS,GAAG,CACvB,QAAwB,EACxB,UAAkB,EACL,EAAE,CAAC,CAAC;IACjB,UAAU,EAAE,2BAAY;IACxB,EAAE,EAAE,QAAQ,CAAC,IAAI;IACjB,UAAU;IACV,SAAS,EAAE,IAAA,4BAAS,EAAC,QAAQ,CAAC,IAAI,CAAC;IACnC,UAAU,EAAE,IAAA,4BAAS,EAAC,YAAY,CAAC;IACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;IAC/B,aAAa,EAAE,IAAA,wCAAmB,EAAC,QAAQ,CAAC,UAAU,CAAC;IACvD,WAAW,EAAE,QAAQ,CAAC,WAAW;IACjC,YAAY,EAAE,QAAQ,CAAC,YAAY,KAAK,IAAI;IAC5C,qBAAqB,EAAE,IAAA,+CAA8B,EAAC,QAAQ,CAAC,WAAW,CAAC;CAC5E,CAAC,CAAA;AAdW,QAAA,SAAS,aAcpB"}
@@ -0,0 +1,4 @@
1
+ import type { MarketPrice } from '@lifi/perps-types';
2
+ import type { HlAssetCtx } from '../types/index.js';
3
+ export declare const mapMarketPrice: (marketId: string, assetCtx: HlAssetCtx, mid: string) => MarketPrice;
4
+ //# sourceMappingURL=mapMarketPrice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapMarketPrice.d.ts","sourceRoot":"","sources":["../../../src/utils/mapMarketPrice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAUnD,eAAO,MAAM,cAAc,GACzB,UAAU,MAAM,EAChB,UAAU,UAAU,EACpB,KAAK,MAAM,KACV,WAiBF,CAAA"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapMarketPrice = void 0;
4
+ const NEXT_FUNDING_INTERVAL_MS = 60 * 60 * 1000;
5
+ const mapMarketPrice = (marketId, assetCtx, mid) => {
6
+ const now = Date.now();
7
+ const nextFundingTime = Math.ceil(now / NEXT_FUNDING_INTERVAL_MS) * NEXT_FUNDING_INTERVAL_MS;
8
+ return {
9
+ marketId,
10
+ price: mid,
11
+ markPrice: assetCtx.markPx,
12
+ prevDayPrice: assetCtx.prevDayPx,
13
+ volume24h: assetCtx.dayNtlVlm,
14
+ openInterest: assetCtx.openInterest,
15
+ funding: {
16
+ rate: assetCtx.funding,
17
+ nextFundingTime,
18
+ },
19
+ };
20
+ };
21
+ exports.mapMarketPrice = mapMarketPrice;
22
+ //# sourceMappingURL=mapMarketPrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapMarketPrice.js","sourceRoot":"","sources":["../../../src/utils/mapMarketPrice.ts"],"names":[],"mappings":";;;AAGA,MAAM,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAQxC,MAAM,cAAc,GAAG,CAC5B,QAAgB,EAChB,QAAoB,EACpB,GAAW,EACE,EAAE;IACf,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACtB,MAAM,eAAe,GACnB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,wBAAwB,CAAC,GAAG,wBAAwB,CAAA;IAEtE,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,GAAG;QACV,SAAS,EAAE,QAAQ,CAAC,MAAM;QAC1B,YAAY,EAAE,QAAQ,CAAC,SAAS;QAChC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ,CAAC,OAAO;YACtB,eAAe;SAChB;KACF,CAAA;AACH,CAAC,CAAA;AArBY,QAAA,cAAc,kBAqB1B"}
@@ -0,0 +1,12 @@
1
+ import type { MarketDisplay, OpenOrder, Order, TriggerOrder } from '@lifi/perps-types';
2
+ import { OrderStatus, OrderType } from '@lifi/perps-types';
3
+ import type { HlFrontendOpenOrder, HlOrderDetail } from '../types/index.js';
4
+ export declare const mapOrderType: (orderType: string) => OrderType;
5
+ export declare const isTriggerType: (type: OrderType) => boolean;
6
+ export declare const isTriggerOrder: (o: HlFrontendOpenOrder | HlOrderDetail["order"]) => boolean;
7
+ export declare const mapOpenOrder: (o: HlFrontendOpenOrder, market: MarketDisplay) => OpenOrder;
8
+ export declare const mapTriggerOrder: (o: HlFrontendOpenOrder, market: MarketDisplay) => TriggerOrder;
9
+ export declare const mapOrderStatus: (status: string) => OrderStatus;
10
+ export declare const mapStatusReason: (status: string) => string | undefined;
11
+ export declare const mapOrder: (detail: HlOrderDetail, market: MarketDisplay) => Order;
12
+ //# sourceMappingURL=mapOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,WAAW,EACX,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAO3E,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,KAAG,SAehD,CAAA;AAGD,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,KAAG,OAIjB,CAAA;AAsB/B,eAAO,MAAM,cAAc,GACzB,GAAG,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,KAC9C,OAkBF,CAAA;AAGD,eAAO,MAAM,YAAY,GACvB,GAAG,mBAAmB,EACtB,QAAQ,aAAa,KACpB,SAaD,CAAA;AAGF,eAAO,MAAM,eAAe,GAC1B,GAAG,mBAAmB,EACtB,QAAQ,aAAa,KACpB,YAcF,CAAA;AAGD,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,WAmB/C,CAAA;AASD,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SAuBzD,CAAA;AAgBD,eAAO,MAAM,QAAQ,GACnB,QAAQ,aAAa,EACrB,QAAQ,aAAa,KACpB,KAsBF,CAAA"}