@lifi/perps-sdk 0.1.1-alpha.9 → 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 (748) 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 +75 -21
  7. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  8. package/dist/cjs/client/PerpsClient.js +642 -173
  9. package/dist/cjs/client/PerpsClient.js.map +1 -1
  10. package/dist/cjs/client/createPerpsClient.d.ts +15 -2
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  12. package/dist/cjs/client/createPerpsClient.js +6 -3
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  14. package/dist/cjs/client/projectAccountConfigSettings.d.ts +3 -0
  15. package/dist/cjs/client/projectAccountConfigSettings.d.ts.map +1 -0
  16. package/dist/cjs/client/projectAccountConfigSettings.js +17 -0
  17. package/dist/cjs/client/projectAccountConfigSettings.js.map +1 -0
  18. package/dist/cjs/client/types.d.ts +49 -26
  19. package/dist/cjs/client/types.d.ts.map +1 -1
  20. package/dist/cjs/client/types.js +6 -0
  21. package/dist/cjs/client/types.js.map +1 -1
  22. package/dist/cjs/errors/PerpsError.d.ts +2 -3
  23. package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
  24. package/dist/cjs/errors/PerpsError.js +3 -15
  25. package/dist/cjs/errors/PerpsError.js.map +1 -1
  26. package/dist/cjs/errors/constants.d.ts +0 -10
  27. package/dist/cjs/errors/constants.d.ts.map +1 -1
  28. package/dist/cjs/errors/constants.js +1 -12
  29. package/dist/cjs/errors/constants.js.map +1 -1
  30. package/dist/cjs/index.d.ts +37 -31
  31. package/dist/cjs/index.d.ts.map +1 -1
  32. package/dist/cjs/index.js +87 -42
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/cjs/providers/hyperliquid/accountConfig.d.ts +3 -0
  35. package/dist/cjs/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  36. package/dist/cjs/providers/hyperliquid/accountConfig.js +41 -0
  37. package/dist/cjs/providers/hyperliquid/accountConfig.js.map +1 -0
  38. package/dist/cjs/providers/lighter/accountConfig.d.ts +3 -0
  39. package/dist/cjs/providers/lighter/accountConfig.d.ts.map +1 -0
  40. package/dist/cjs/providers/lighter/accountConfig.js +45 -0
  41. package/dist/cjs/providers/lighter/accountConfig.js.map +1 -0
  42. package/dist/cjs/realtime/PerpsWsClient.d.ts +7 -1
  43. package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
  44. package/dist/cjs/realtime/PerpsWsClient.js +36 -23
  45. package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
  46. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
  47. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  48. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +158 -52
  49. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  50. package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
  51. package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
  52. package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts +48 -0
  53. package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  54. package/dist/cjs/realtime/lighter/LighterWsProvider.js +424 -0
  55. package/dist/cjs/realtime/lighter/LighterWsProvider.js.map +1 -0
  56. package/dist/cjs/realtime/lighter/types.d.ts +84 -0
  57. package/dist/cjs/realtime/lighter/types.d.ts.map +1 -0
  58. package/dist/cjs/{dex → realtime/lighter}/types.js.map +1 -1
  59. package/dist/cjs/services/createAction.d.ts +11 -0
  60. package/dist/cjs/services/createAction.d.ts.map +1 -0
  61. package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
  62. package/dist/cjs/services/createAction.js.map +1 -0
  63. package/dist/cjs/services/executeAction.d.ts +11 -0
  64. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  65. package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
  66. package/dist/cjs/services/executeAction.js.map +1 -0
  67. package/dist/cjs/services/getAccount.d.ts +1 -1
  68. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  69. package/dist/cjs/services/getAccount.js +1 -1
  70. package/dist/cjs/services/getAccount.js.map +1 -1
  71. package/dist/cjs/services/getActivity.d.ts +13 -0
  72. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  73. package/dist/cjs/services/getActivity.js +21 -0
  74. package/dist/cjs/services/getActivity.js.map +1 -0
  75. package/dist/cjs/services/getAsset.d.ts +8 -0
  76. package/dist/cjs/services/getAsset.d.ts.map +1 -0
  77. package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
  78. package/dist/cjs/services/getAsset.js.map +1 -0
  79. package/dist/cjs/services/getAssets.d.ts +7 -0
  80. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  81. package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
  82. package/dist/cjs/services/getAssets.js.map +1 -0
  83. package/dist/cjs/services/getFills.d.ts +12 -0
  84. package/dist/cjs/services/getFills.d.ts.map +1 -0
  85. package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
  86. package/dist/cjs/services/getFills.js.map +1 -0
  87. package/dist/cjs/services/getOhlcv.d.ts +1 -1
  88. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  89. package/dist/cjs/services/getOhlcv.js +2 -2
  90. package/dist/cjs/services/getOhlcv.js.map +1 -1
  91. package/dist/cjs/services/getOrder.d.ts +1 -1
  92. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  93. package/dist/cjs/services/getOrder.js +2 -2
  94. package/dist/cjs/services/getOrder.js.map +1 -1
  95. package/dist/cjs/services/getOrderbook.d.ts +1 -1
  96. package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
  97. package/dist/cjs/services/getOrderbook.js +2 -2
  98. package/dist/cjs/services/getOrderbook.js.map +1 -1
  99. package/dist/cjs/services/getOrders.d.ts +11 -0
  100. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  101. package/dist/cjs/services/getOrders.js +15 -0
  102. package/dist/cjs/services/getOrders.js.map +1 -0
  103. package/dist/cjs/services/getPositions.d.ts +11 -0
  104. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  105. package/dist/cjs/services/getPositions.js +15 -0
  106. package/dist/cjs/services/getPositions.js.map +1 -0
  107. package/dist/cjs/services/getPrices.d.ts +1 -1
  108. package/dist/cjs/services/getPrices.d.ts.map +1 -1
  109. package/dist/cjs/services/getPrices.js +1 -1
  110. package/dist/cjs/services/getPrices.js.map +1 -1
  111. package/dist/cjs/services/getProviders.d.ts +4 -0
  112. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  113. package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
  114. package/dist/cjs/services/getProviders.js.map +1 -0
  115. package/dist/cjs/signers/lighter/LighterKeyStore.d.ts +20 -0
  116. package/dist/cjs/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  117. package/dist/cjs/signers/lighter/LighterKeyStore.js +42 -0
  118. package/dist/cjs/signers/lighter/LighterKeyStore.js.map +1 -0
  119. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts +66 -0
  120. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  121. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js +141 -0
  122. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
  123. package/dist/cjs/signers/lighter/LighterSigner.d.ts +41 -0
  124. package/dist/cjs/signers/lighter/LighterSigner.d.ts.map +1 -0
  125. package/dist/cjs/signers/lighter/LighterSigner.js +176 -0
  126. package/dist/cjs/signers/lighter/LighterSigner.js.map +1 -0
  127. package/dist/cjs/signers/lighter/index.d.ts +9 -0
  128. package/dist/cjs/signers/lighter/index.d.ts.map +1 -0
  129. package/dist/cjs/signers/lighter/index.js +20 -0
  130. package/dist/cjs/signers/lighter/index.js.map +1 -0
  131. package/dist/cjs/signers/lighter/wasmLoader.d.ts +42 -0
  132. package/dist/cjs/signers/lighter/wasmLoader.d.ts.map +1 -0
  133. package/dist/cjs/signers/lighter/wasmLoader.js +166 -0
  134. package/dist/cjs/signers/lighter/wasmLoader.js.map +1 -0
  135. package/dist/cjs/utils/accountSummary.d.ts +9 -0
  136. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  137. package/dist/cjs/utils/accountSummary.js +83 -0
  138. package/dist/cjs/utils/accountSummary.js.map +1 -0
  139. package/dist/cjs/utils/assertNever.d.ts +2 -0
  140. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  141. package/dist/cjs/utils/assertNever.js +7 -0
  142. package/dist/cjs/utils/assertNever.js.map +1 -0
  143. package/dist/cjs/utils/calculations.d.ts +16 -0
  144. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  145. package/dist/cjs/utils/calculations.js +71 -0
  146. package/dist/cjs/utils/calculations.js.map +1 -0
  147. package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
  148. package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
  149. package/dist/cjs/utils/hyperliquid/index.js +11 -0
  150. package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
  151. package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
  152. package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
  153. package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
  154. package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
  155. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
  156. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  157. package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
  158. package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
  159. package/dist/cjs/utils/orderClassification.d.ts +8 -0
  160. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  161. package/dist/cjs/utils/orderClassification.js +39 -0
  162. package/dist/cjs/utils/orderClassification.js.map +1 -0
  163. package/dist/cjs/utils/orderMath.d.ts +6 -0
  164. package/dist/cjs/utils/orderMath.d.ts.map +1 -0
  165. package/dist/cjs/utils/orderMath.js +71 -0
  166. package/dist/cjs/utils/orderMath.js.map +1 -0
  167. package/dist/cjs/utils/parse.d.ts +2 -0
  168. package/dist/cjs/utils/parse.d.ts.map +1 -0
  169. package/dist/cjs/utils/parse.js +14 -0
  170. package/dist/cjs/utils/parse.js.map +1 -0
  171. package/dist/cjs/utils/positionMath.d.ts +26 -0
  172. package/dist/cjs/utils/positionMath.d.ts.map +1 -0
  173. package/dist/cjs/utils/positionMath.js +38 -0
  174. package/dist/cjs/utils/positionMath.js.map +1 -0
  175. package/dist/cjs/utils/request.d.ts.map +1 -1
  176. package/dist/cjs/utils/request.js +19 -4
  177. package/dist/cjs/utils/request.js.map +1 -1
  178. package/dist/cjs/utils/signTypedData.d.ts +2 -0
  179. package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
  180. package/dist/cjs/utils/signTypedData.js +10 -3
  181. package/dist/cjs/utils/signTypedData.js.map +1 -1
  182. package/dist/cjs/utils/units.d.ts +3 -0
  183. package/dist/cjs/utils/units.d.ts.map +1 -0
  184. package/dist/cjs/utils/units.js +18 -0
  185. package/dist/cjs/utils/units.js.map +1 -0
  186. package/dist/cjs/utils/validation.d.ts +2 -0
  187. package/dist/cjs/utils/validation.d.ts.map +1 -0
  188. package/dist/cjs/utils/validation.js +16 -0
  189. package/dist/cjs/utils/validation.js.map +1 -0
  190. package/dist/cjs/version.d.ts +1 -1
  191. package/dist/cjs/version.js +1 -1
  192. package/dist/cjs/wasm/lighter-signer.wasm +0 -0
  193. package/dist/cjs/wasm/wasm_exec.js +575 -0
  194. package/dist/esm/agent/AgentManager.d.ts +9 -9
  195. package/dist/esm/agent/AgentManager.d.ts.map +1 -1
  196. package/dist/esm/agent/AgentManager.js +20 -18
  197. package/dist/esm/agent/AgentManager.js.map +1 -1
  198. package/dist/esm/agent/storage.d.ts +1 -1
  199. package/dist/esm/agent/storage.js +1 -1
  200. package/dist/esm/client/PerpsClient.d.ts +226 -144
  201. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  202. package/dist/esm/client/PerpsClient.js +869 -320
  203. package/dist/esm/client/PerpsClient.js.map +1 -1
  204. package/dist/esm/client/createPerpsClient.d.ts +30 -51
  205. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  206. package/dist/esm/client/createPerpsClient.js +6 -21
  207. package/dist/esm/client/createPerpsClient.js.map +1 -1
  208. package/dist/esm/client/projectAccountConfigSettings.d.ts +18 -0
  209. package/dist/esm/client/projectAccountConfigSettings.d.ts.map +1 -0
  210. package/dist/esm/client/projectAccountConfigSettings.js +29 -0
  211. package/dist/esm/client/projectAccountConfigSettings.js.map +1 -0
  212. package/dist/esm/client/types.d.ts +115 -49
  213. package/dist/esm/client/types.d.ts.map +1 -1
  214. package/dist/esm/client/types.js +11 -1
  215. package/dist/esm/client/types.js.map +1 -1
  216. package/dist/esm/errors/PerpsError.d.ts +2 -3
  217. package/dist/esm/errors/PerpsError.d.ts.map +1 -1
  218. package/dist/esm/errors/PerpsError.js +3 -15
  219. package/dist/esm/errors/PerpsError.js.map +1 -1
  220. package/dist/esm/errors/constants.d.ts +0 -10
  221. package/dist/esm/errors/constants.d.ts.map +1 -1
  222. package/dist/esm/errors/constants.js +0 -11
  223. package/dist/esm/errors/constants.js.map +1 -1
  224. package/dist/esm/index.d.ts +37 -31
  225. package/dist/esm/index.d.ts.map +1 -1
  226. package/dist/esm/index.js +27 -22
  227. package/dist/esm/index.js.map +1 -1
  228. package/dist/esm/providers/hyperliquid/accountConfig.d.ts +13 -0
  229. package/dist/esm/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  230. package/dist/esm/providers/hyperliquid/accountConfig.js +69 -0
  231. package/dist/esm/providers/hyperliquid/accountConfig.js.map +1 -0
  232. package/dist/esm/providers/lighter/accountConfig.d.ts +13 -0
  233. package/dist/esm/providers/lighter/accountConfig.d.ts.map +1 -0
  234. package/dist/esm/providers/lighter/accountConfig.js +79 -0
  235. package/dist/esm/providers/lighter/accountConfig.js.map +1 -0
  236. package/dist/esm/realtime/PerpsWsClient.d.ts +13 -1
  237. package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
  238. package/dist/esm/realtime/PerpsWsClient.js +36 -23
  239. package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
  240. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  241. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  242. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +170 -53
  243. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  244. package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
  245. package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
  246. package/dist/esm/realtime/lighter/LighterWsProvider.d.ts +68 -0
  247. package/dist/esm/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  248. package/dist/esm/realtime/lighter/LighterWsProvider.js +474 -0
  249. package/dist/esm/realtime/lighter/LighterWsProvider.js.map +1 -0
  250. package/dist/esm/realtime/lighter/types.d.ts +108 -0
  251. package/dist/esm/realtime/lighter/types.d.ts.map +1 -0
  252. package/dist/esm/realtime/lighter/types.js +14 -0
  253. package/dist/esm/realtime/lighter/types.js.map +1 -0
  254. package/dist/esm/services/createAction.d.ts +11 -0
  255. package/dist/esm/services/createAction.d.ts.map +1 -0
  256. package/dist/esm/services/createAction.js +14 -0
  257. package/dist/esm/services/createAction.js.map +1 -0
  258. package/dist/esm/services/executeAction.d.ts +11 -0
  259. package/dist/esm/services/executeAction.d.ts.map +1 -0
  260. package/dist/esm/services/executeAction.js +14 -0
  261. package/dist/esm/services/executeAction.js.map +1 -0
  262. package/dist/esm/services/getAccount.d.ts +7 -7
  263. package/dist/esm/services/getAccount.d.ts.map +1 -1
  264. package/dist/esm/services/getAccount.js +6 -6
  265. package/dist/esm/services/getAccount.js.map +1 -1
  266. package/dist/esm/services/getActivity.d.ts +49 -0
  267. package/dist/esm/services/getActivity.d.ts.map +1 -0
  268. package/dist/esm/services/getActivity.js +47 -0
  269. package/dist/esm/services/getActivity.js.map +1 -0
  270. package/dist/esm/services/getAsset.d.ts +20 -0
  271. package/dist/esm/services/getAsset.d.ts.map +1 -0
  272. package/dist/esm/services/getAsset.js +18 -0
  273. package/dist/esm/services/getAsset.js.map +1 -0
  274. package/dist/esm/services/getAssets.d.ts +18 -0
  275. package/dist/esm/services/getAssets.d.ts.map +1 -0
  276. package/dist/esm/services/getAssets.js +18 -0
  277. package/dist/esm/services/getAssets.js.map +1 -0
  278. package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
  279. package/dist/esm/services/getFills.d.ts.map +1 -0
  280. package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
  281. package/dist/esm/services/getFills.js.map +1 -0
  282. package/dist/esm/services/getOhlcv.d.ts +4 -4
  283. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  284. package/dist/esm/services/getOhlcv.js +4 -4
  285. package/dist/esm/services/getOhlcv.js.map +1 -1
  286. package/dist/esm/services/getOrder.d.ts +4 -4
  287. package/dist/esm/services/getOrder.d.ts.map +1 -1
  288. package/dist/esm/services/getOrder.js +4 -4
  289. package/dist/esm/services/getOrder.js.map +1 -1
  290. package/dist/esm/services/getOrderbook.d.ts +4 -4
  291. package/dist/esm/services/getOrderbook.d.ts.map +1 -1
  292. package/dist/esm/services/getOrderbook.js +4 -4
  293. package/dist/esm/services/getOrderbook.js.map +1 -1
  294. package/dist/esm/services/getOrders.d.ts +27 -0
  295. package/dist/esm/services/getOrders.d.ts.map +1 -0
  296. package/dist/esm/services/getOrders.js +23 -0
  297. package/dist/esm/services/getOrders.js.map +1 -0
  298. package/dist/esm/services/getPositions.d.ts +27 -0
  299. package/dist/esm/services/getPositions.d.ts.map +1 -0
  300. package/dist/esm/services/getPositions.js +23 -0
  301. package/dist/esm/services/getPositions.js.map +1 -0
  302. package/dist/esm/services/getPrices.d.ts +5 -5
  303. package/dist/esm/services/getPrices.d.ts.map +1 -1
  304. package/dist/esm/services/getPrices.js +4 -4
  305. package/dist/esm/services/getPrices.js.map +1 -1
  306. package/dist/esm/services/getProviders.d.ts +20 -0
  307. package/dist/esm/services/getProviders.d.ts.map +1 -0
  308. package/dist/esm/services/getProviders.js +21 -0
  309. package/dist/esm/services/getProviders.js.map +1 -0
  310. package/dist/esm/signers/lighter/LighterKeyStore.d.ts +29 -0
  311. package/dist/esm/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  312. package/dist/esm/signers/lighter/LighterKeyStore.js +53 -0
  313. package/dist/esm/signers/lighter/LighterKeyStore.js.map +1 -0
  314. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
  315. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  316. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js +214 -0
  317. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
  318. package/dist/esm/signers/lighter/LighterSigner.d.ts +88 -0
  319. package/dist/esm/signers/lighter/LighterSigner.d.ts.map +1 -0
  320. package/dist/esm/signers/lighter/LighterSigner.js +226 -0
  321. package/dist/esm/signers/lighter/LighterSigner.js.map +1 -0
  322. package/dist/esm/signers/lighter/index.d.ts +9 -0
  323. package/dist/esm/signers/lighter/index.d.ts.map +1 -0
  324. package/dist/esm/signers/lighter/index.js +5 -0
  325. package/dist/esm/signers/lighter/index.js.map +1 -0
  326. package/dist/esm/signers/lighter/wasmLoader.d.ts +71 -0
  327. package/dist/esm/signers/lighter/wasmLoader.d.ts.map +1 -0
  328. package/dist/esm/signers/lighter/wasmLoader.js +181 -0
  329. package/dist/esm/signers/lighter/wasmLoader.js.map +1 -0
  330. package/dist/esm/utils/accountSummary.d.ts +13 -0
  331. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  332. package/dist/esm/utils/accountSummary.js +97 -0
  333. package/dist/esm/utils/accountSummary.js.map +1 -0
  334. package/dist/esm/utils/assertNever.d.ts +19 -0
  335. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  336. package/dist/esm/utils/assertNever.js +21 -0
  337. package/dist/esm/utils/assertNever.js.map +1 -0
  338. package/dist/esm/utils/calculations.d.ts +109 -0
  339. package/dist/esm/utils/calculations.d.ts.map +1 -0
  340. package/dist/esm/utils/calculations.js +154 -0
  341. package/dist/esm/utils/calculations.js.map +1 -0
  342. package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
  343. package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
  344. package/dist/esm/utils/hyperliquid/index.js +3 -0
  345. package/dist/esm/utils/hyperliquid/index.js.map +1 -0
  346. package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
  347. package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
  348. package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
  349. package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
  350. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
  351. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  352. package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
  353. package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
  354. package/dist/esm/utils/orderClassification.d.ts +29 -0
  355. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  356. package/dist/esm/utils/orderClassification.js +53 -0
  357. package/dist/esm/utils/orderClassification.js.map +1 -0
  358. package/dist/esm/utils/orderMath.d.ts +40 -0
  359. package/dist/esm/utils/orderMath.d.ts.map +1 -0
  360. package/dist/esm/utils/orderMath.js +99 -0
  361. package/dist/esm/utils/orderMath.js.map +1 -0
  362. package/dist/esm/utils/parse.d.ts +18 -0
  363. package/dist/esm/utils/parse.d.ts.map +1 -0
  364. package/dist/esm/utils/parse.js +28 -0
  365. package/dist/esm/utils/parse.js.map +1 -0
  366. package/dist/esm/utils/positionMath.d.ts +78 -0
  367. package/dist/esm/utils/positionMath.d.ts.map +1 -0
  368. package/dist/esm/utils/positionMath.js +83 -0
  369. package/dist/esm/utils/positionMath.js.map +1 -0
  370. package/dist/esm/utils/request.d.ts +1 -2
  371. package/dist/esm/utils/request.d.ts.map +1 -1
  372. package/dist/esm/utils/request.js +23 -7
  373. package/dist/esm/utils/request.js.map +1 -1
  374. package/dist/esm/utils/signTypedData.d.ts +8 -10
  375. package/dist/esm/utils/signTypedData.d.ts.map +1 -1
  376. package/dist/esm/utils/signTypedData.js +15 -14
  377. package/dist/esm/utils/signTypedData.js.map +1 -1
  378. package/dist/esm/utils/units.d.ts +20 -0
  379. package/dist/esm/utils/units.d.ts.map +1 -0
  380. package/dist/esm/utils/units.js +31 -0
  381. package/dist/esm/utils/units.js.map +1 -0
  382. package/dist/esm/utils/validation.d.ts +15 -0
  383. package/dist/esm/utils/validation.d.ts.map +1 -0
  384. package/dist/esm/utils/validation.js +26 -0
  385. package/dist/esm/utils/validation.js.map +1 -0
  386. package/dist/esm/version.d.ts +1 -1
  387. package/dist/esm/version.js +1 -1
  388. package/dist/esm/wasm/lighter-signer.wasm +0 -0
  389. package/dist/esm/wasm/wasm_exec.js +575 -0
  390. package/dist/types/agent/AgentManager.d.ts +9 -9
  391. package/dist/types/agent/AgentManager.d.ts.map +1 -1
  392. package/dist/types/agent/storage.d.ts +1 -1
  393. package/dist/types/client/PerpsClient.d.ts +226 -144
  394. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  395. package/dist/types/client/createPerpsClient.d.ts +30 -51
  396. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  397. package/dist/types/client/projectAccountConfigSettings.d.ts +18 -0
  398. package/dist/types/client/projectAccountConfigSettings.d.ts.map +1 -0
  399. package/dist/types/client/types.d.ts +115 -49
  400. package/dist/types/client/types.d.ts.map +1 -1
  401. package/dist/types/errors/PerpsError.d.ts +2 -3
  402. package/dist/types/errors/PerpsError.d.ts.map +1 -1
  403. package/dist/types/errors/constants.d.ts +0 -10
  404. package/dist/types/errors/constants.d.ts.map +1 -1
  405. package/dist/types/index.d.ts +37 -31
  406. package/dist/types/index.d.ts.map +1 -1
  407. package/dist/types/providers/hyperliquid/accountConfig.d.ts +13 -0
  408. package/dist/types/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  409. package/dist/types/providers/lighter/accountConfig.d.ts +13 -0
  410. package/dist/types/providers/lighter/accountConfig.d.ts.map +1 -0
  411. package/dist/types/realtime/PerpsWsClient.d.ts +13 -1
  412. package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
  413. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  414. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  415. package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
  416. package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
  417. package/dist/types/realtime/lighter/LighterWsProvider.d.ts +68 -0
  418. package/dist/types/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  419. package/dist/types/realtime/lighter/types.d.ts +108 -0
  420. package/dist/types/realtime/lighter/types.d.ts.map +1 -0
  421. package/dist/types/services/createAction.d.ts +11 -0
  422. package/dist/types/services/createAction.d.ts.map +1 -0
  423. package/dist/types/services/executeAction.d.ts +11 -0
  424. package/dist/types/services/executeAction.d.ts.map +1 -0
  425. package/dist/types/services/getAccount.d.ts +7 -7
  426. package/dist/types/services/getAccount.d.ts.map +1 -1
  427. package/dist/types/services/getActivity.d.ts +49 -0
  428. package/dist/types/services/getActivity.d.ts.map +1 -0
  429. package/dist/types/services/getAsset.d.ts +20 -0
  430. package/dist/types/services/getAsset.d.ts.map +1 -0
  431. package/dist/types/services/getAssets.d.ts +18 -0
  432. package/dist/types/services/getAssets.d.ts.map +1 -0
  433. package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
  434. package/dist/types/services/getFills.d.ts.map +1 -0
  435. package/dist/types/services/getOhlcv.d.ts +4 -4
  436. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  437. package/dist/types/services/getOrder.d.ts +4 -4
  438. package/dist/types/services/getOrder.d.ts.map +1 -1
  439. package/dist/types/services/getOrderbook.d.ts +4 -4
  440. package/dist/types/services/getOrderbook.d.ts.map +1 -1
  441. package/dist/types/services/getOrders.d.ts +27 -0
  442. package/dist/types/services/getOrders.d.ts.map +1 -0
  443. package/dist/types/services/getPositions.d.ts +27 -0
  444. package/dist/types/services/getPositions.d.ts.map +1 -0
  445. package/dist/types/services/getPrices.d.ts +5 -5
  446. package/dist/types/services/getPrices.d.ts.map +1 -1
  447. package/dist/types/services/getProviders.d.ts +20 -0
  448. package/dist/types/services/getProviders.d.ts.map +1 -0
  449. package/dist/types/signers/lighter/LighterKeyStore.d.ts +29 -0
  450. package/dist/types/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  451. package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
  452. package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  453. package/dist/types/signers/lighter/LighterSigner.d.ts +88 -0
  454. package/dist/types/signers/lighter/LighterSigner.d.ts.map +1 -0
  455. package/dist/types/signers/lighter/index.d.ts +9 -0
  456. package/dist/types/signers/lighter/index.d.ts.map +1 -0
  457. package/dist/types/signers/lighter/wasmLoader.d.ts +71 -0
  458. package/dist/types/signers/lighter/wasmLoader.d.ts.map +1 -0
  459. package/dist/types/utils/accountSummary.d.ts +13 -0
  460. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  461. package/dist/types/utils/assertNever.d.ts +19 -0
  462. package/dist/types/utils/assertNever.d.ts.map +1 -0
  463. package/dist/types/utils/calculations.d.ts +109 -0
  464. package/dist/types/utils/calculations.d.ts.map +1 -0
  465. package/dist/types/utils/hyperliquid/index.d.ts +3 -0
  466. package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
  467. package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
  468. package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
  469. package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
  470. package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  471. package/dist/types/utils/orderClassification.d.ts +29 -0
  472. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  473. package/dist/types/utils/orderMath.d.ts +40 -0
  474. package/dist/types/utils/orderMath.d.ts.map +1 -0
  475. package/dist/types/utils/parse.d.ts +18 -0
  476. package/dist/types/utils/parse.d.ts.map +1 -0
  477. package/dist/types/utils/positionMath.d.ts +78 -0
  478. package/dist/types/utils/positionMath.d.ts.map +1 -0
  479. package/dist/types/utils/request.d.ts +1 -2
  480. package/dist/types/utils/request.d.ts.map +1 -1
  481. package/dist/types/utils/signTypedData.d.ts +8 -10
  482. package/dist/types/utils/signTypedData.d.ts.map +1 -1
  483. package/dist/types/utils/units.d.ts +20 -0
  484. package/dist/types/utils/units.d.ts.map +1 -0
  485. package/dist/types/utils/validation.d.ts +15 -0
  486. package/dist/types/utils/validation.d.ts.map +1 -0
  487. package/dist/types/version.d.ts +1 -1
  488. package/package.json +15 -6
  489. package/src/agent/AgentManager.ts +21 -19
  490. package/src/agent/storage.ts +1 -1
  491. package/src/client/PerpsClient.ts +1221 -396
  492. package/src/client/createPerpsClient.ts +39 -54
  493. package/src/client/projectAccountConfigSettings.ts +39 -0
  494. package/src/client/types.ts +130 -52
  495. package/src/errors/PerpsError.ts +3 -22
  496. package/src/errors/constants.ts +0 -11
  497. package/src/index.ts +115 -47
  498. package/src/providers/hyperliquid/accountConfig.ts +92 -0
  499. package/src/providers/lighter/accountConfig.ts +103 -0
  500. package/src/realtime/PerpsWsClient.ts +67 -32
  501. package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +199 -64
  502. package/src/realtime/hyperliquid/types.ts +8 -10
  503. package/src/realtime/lighter/LighterWsProvider.ts +682 -0
  504. package/src/realtime/lighter/types.ts +121 -0
  505. package/src/services/createAction.ts +41 -0
  506. package/src/services/executeAction.ts +41 -0
  507. package/src/services/getAccount.ts +8 -8
  508. package/src/services/getActivity.ts +77 -0
  509. package/src/services/getAsset.ts +37 -0
  510. package/src/services/getAssets.ts +32 -0
  511. package/src/services/{getHistory.ts → getFills.ts} +23 -17
  512. package/src/services/getOhlcv.ts +14 -11
  513. package/src/services/getOrder.ts +11 -8
  514. package/src/services/getOrderbook.ts +11 -8
  515. package/src/services/getOrders.ts +45 -0
  516. package/src/services/getPositions.ts +45 -0
  517. package/src/services/getPrices.ts +6 -6
  518. package/src/services/{getDexes.ts → getProviders.ts} +10 -10
  519. package/src/signers/lighter/LighterKeyStore.ts +74 -0
  520. package/src/signers/lighter/LighterReadOnlyTokenManager.ts +358 -0
  521. package/src/signers/lighter/LighterSigner.ts +396 -0
  522. package/src/signers/lighter/index.ts +36 -0
  523. package/src/signers/lighter/wasmLoader.ts +291 -0
  524. package/src/utils/accountSummary.ts +130 -0
  525. package/src/utils/assertNever.ts +22 -0
  526. package/src/utils/calculations.ts +209 -0
  527. package/src/utils/hyperliquid/index.ts +9 -0
  528. package/src/utils/hyperliquid/liquidation.ts +71 -0
  529. package/src/utils/hyperliquid/orderFormatting.ts +96 -0
  530. package/src/utils/orderClassification.ts +64 -0
  531. package/src/utils/orderMath.ts +130 -0
  532. package/src/utils/parse.ts +28 -0
  533. package/src/utils/positionMath.ts +107 -0
  534. package/src/utils/request.ts +26 -7
  535. package/src/utils/signTypedData.ts +19 -15
  536. package/src/utils/units.ts +32 -0
  537. package/src/utils/validation.ts +35 -0
  538. package/src/version.ts +1 -1
  539. package/wasm/lighter-signer.wasm +0 -0
  540. package/wasm/wasm_exec.js +575 -0
  541. package/dist/cjs/dex/hyperliquid.d.ts +0 -3
  542. package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
  543. package/dist/cjs/dex/hyperliquid.js +0 -21
  544. package/dist/cjs/dex/hyperliquid.js.map +0 -1
  545. package/dist/cjs/dex/registry.d.ts +0 -3
  546. package/dist/cjs/dex/registry.d.ts.map +0 -1
  547. package/dist/cjs/dex/registry.js +0 -16
  548. package/dist/cjs/dex/registry.js.map +0 -1
  549. package/dist/cjs/dex/types.d.ts +0 -13
  550. package/dist/cjs/dex/types.d.ts.map +0 -1
  551. package/dist/cjs/errors/AgentError.d.ts +0 -10
  552. package/dist/cjs/errors/AgentError.d.ts.map +0 -1
  553. package/dist/cjs/errors/AgentError.js +0 -23
  554. package/dist/cjs/errors/AgentError.js.map +0 -1
  555. package/dist/cjs/errors/HTTPError.d.ts +0 -11
  556. package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
  557. package/dist/cjs/errors/HTTPError.js +0 -62
  558. package/dist/cjs/errors/HTTPError.js.map +0 -1
  559. package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
  560. package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
  561. package/dist/cjs/errors/PerpsSDKError.js +0 -36
  562. package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
  563. package/dist/cjs/errors/ServerError.d.ts +0 -10
  564. package/dist/cjs/errors/ServerError.d.ts.map +0 -1
  565. package/dist/cjs/errors/ServerError.js +0 -24
  566. package/dist/cjs/errors/ServerError.js.map +0 -1
  567. package/dist/cjs/errors/ValidationError.d.ts +0 -9
  568. package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
  569. package/dist/cjs/errors/ValidationError.js +0 -23
  570. package/dist/cjs/errors/ValidationError.js.map +0 -1
  571. package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
  572. package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
  573. package/dist/cjs/errors/utils/rootCause.js +0 -41
  574. package/dist/cjs/errors/utils/rootCause.js.map +0 -1
  575. package/dist/cjs/services/cancelOrder.d.ts +0 -10
  576. package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
  577. package/dist/cjs/services/cancelOrder.js +0 -16
  578. package/dist/cjs/services/cancelOrder.js.map +0 -1
  579. package/dist/cjs/services/createAuthorization.d.ts +0 -10
  580. package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
  581. package/dist/cjs/services/createAuthorization.js +0 -16
  582. package/dist/cjs/services/createAuthorization.js.map +0 -1
  583. package/dist/cjs/services/createOrder.d.ts +0 -21
  584. package/dist/cjs/services/createOrder.d.ts.map +0 -1
  585. package/dist/cjs/services/createOrder.js +0 -27
  586. package/dist/cjs/services/createOrder.js.map +0 -1
  587. package/dist/cjs/services/createWithdrawal.d.ts +0 -9
  588. package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
  589. package/dist/cjs/services/createWithdrawal.js +0 -15
  590. package/dist/cjs/services/createWithdrawal.js.map +0 -1
  591. package/dist/cjs/services/getDexes.d.ts +0 -4
  592. package/dist/cjs/services/getDexes.d.ts.map +0 -1
  593. package/dist/cjs/services/getDexes.js.map +0 -1
  594. package/dist/cjs/services/getHistory.d.ts +0 -10
  595. package/dist/cjs/services/getHistory.d.ts.map +0 -1
  596. package/dist/cjs/services/getHistory.js.map +0 -1
  597. package/dist/cjs/services/getMarket.d.ts +0 -8
  598. package/dist/cjs/services/getMarket.d.ts.map +0 -1
  599. package/dist/cjs/services/getMarket.js.map +0 -1
  600. package/dist/cjs/services/getMarkets.d.ts +0 -7
  601. package/dist/cjs/services/getMarkets.d.ts.map +0 -1
  602. package/dist/cjs/services/getMarkets.js.map +0 -1
  603. package/dist/cjs/services/submitAuthorization.d.ts +0 -10
  604. package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
  605. package/dist/cjs/services/submitAuthorization.js.map +0 -1
  606. package/dist/cjs/services/submitOrder.d.ts +0 -10
  607. package/dist/cjs/services/submitOrder.d.ts.map +0 -1
  608. package/dist/cjs/services/submitOrder.js.map +0 -1
  609. package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
  610. package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
  611. package/dist/cjs/services/submitWithdrawal.js +0 -15
  612. package/dist/cjs/services/submitWithdrawal.js.map +0 -1
  613. package/dist/esm/dex/hyperliquid.d.ts +0 -3
  614. package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
  615. package/dist/esm/dex/hyperliquid.js +0 -19
  616. package/dist/esm/dex/hyperliquid.js.map +0 -1
  617. package/dist/esm/dex/registry.d.ts +0 -3
  618. package/dist/esm/dex/registry.d.ts.map +0 -1
  619. package/dist/esm/dex/registry.js +0 -13
  620. package/dist/esm/dex/registry.js.map +0 -1
  621. package/dist/esm/dex/types.d.ts +0 -15
  622. package/dist/esm/dex/types.d.ts.map +0 -1
  623. package/dist/esm/dex/types.js +0 -2
  624. package/dist/esm/dex/types.js.map +0 -1
  625. package/dist/esm/errors/AgentError.d.ts +0 -25
  626. package/dist/esm/errors/AgentError.d.ts.map +0 -1
  627. package/dist/esm/errors/AgentError.js +0 -35
  628. package/dist/esm/errors/AgentError.js.map +0 -1
  629. package/dist/esm/errors/HTTPError.d.ts +0 -11
  630. package/dist/esm/errors/HTTPError.d.ts.map +0 -1
  631. package/dist/esm/errors/HTTPError.js +0 -61
  632. package/dist/esm/errors/HTTPError.js.map +0 -1
  633. package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
  634. package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
  635. package/dist/esm/errors/PerpsSDKError.js +0 -67
  636. package/dist/esm/errors/PerpsSDKError.js.map +0 -1
  637. package/dist/esm/errors/ServerError.d.ts +0 -23
  638. package/dist/esm/errors/ServerError.d.ts.map +0 -1
  639. package/dist/esm/errors/ServerError.js +0 -34
  640. package/dist/esm/errors/ServerError.js.map +0 -1
  641. package/dist/esm/errors/ValidationError.d.ts +0 -23
  642. package/dist/esm/errors/ValidationError.d.ts.map +0 -1
  643. package/dist/esm/errors/ValidationError.js +0 -34
  644. package/dist/esm/errors/ValidationError.js.map +0 -1
  645. package/dist/esm/errors/utils/rootCause.d.ts +0 -71
  646. package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
  647. package/dist/esm/errors/utils/rootCause.js +0 -99
  648. package/dist/esm/errors/utils/rootCause.js.map +0 -1
  649. package/dist/esm/services/cancelOrder.d.ts +0 -51
  650. package/dist/esm/services/cancelOrder.d.ts.map +0 -1
  651. package/dist/esm/services/cancelOrder.js +0 -50
  652. package/dist/esm/services/cancelOrder.js.map +0 -1
  653. package/dist/esm/services/createAuthorization.d.ts +0 -51
  654. package/dist/esm/services/createAuthorization.d.ts.map +0 -1
  655. package/dist/esm/services/createAuthorization.js +0 -50
  656. package/dist/esm/services/createAuthorization.js.map +0 -1
  657. package/dist/esm/services/createOrder.d.ts +0 -74
  658. package/dist/esm/services/createOrder.d.ts.map +0 -1
  659. package/dist/esm/services/createOrder.js +0 -62
  660. package/dist/esm/services/createOrder.js.map +0 -1
  661. package/dist/esm/services/createWithdrawal.d.ts +0 -49
  662. package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
  663. package/dist/esm/services/createWithdrawal.js +0 -49
  664. package/dist/esm/services/createWithdrawal.js.map +0 -1
  665. package/dist/esm/services/getDexes.d.ts +0 -20
  666. package/dist/esm/services/getDexes.d.ts.map +0 -1
  667. package/dist/esm/services/getDexes.js +0 -21
  668. package/dist/esm/services/getDexes.js.map +0 -1
  669. package/dist/esm/services/getHistory.d.ts.map +0 -1
  670. package/dist/esm/services/getHistory.js.map +0 -1
  671. package/dist/esm/services/getMarket.d.ts +0 -27
  672. package/dist/esm/services/getMarket.d.ts.map +0 -1
  673. package/dist/esm/services/getMarket.js +0 -25
  674. package/dist/esm/services/getMarket.js.map +0 -1
  675. package/dist/esm/services/getMarkets.d.ts +0 -25
  676. package/dist/esm/services/getMarkets.d.ts.map +0 -1
  677. package/dist/esm/services/getMarkets.js +0 -23
  678. package/dist/esm/services/getMarkets.js.map +0 -1
  679. package/dist/esm/services/submitAuthorization.d.ts +0 -42
  680. package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
  681. package/dist/esm/services/submitAuthorization.js +0 -41
  682. package/dist/esm/services/submitAuthorization.js.map +0 -1
  683. package/dist/esm/services/submitOrder.d.ts +0 -44
  684. package/dist/esm/services/submitOrder.d.ts.map +0 -1
  685. package/dist/esm/services/submitOrder.js +0 -43
  686. package/dist/esm/services/submitOrder.js.map +0 -1
  687. package/dist/esm/services/submitWithdrawal.d.ts +0 -40
  688. package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
  689. package/dist/esm/services/submitWithdrawal.js +0 -40
  690. package/dist/esm/services/submitWithdrawal.js.map +0 -1
  691. package/dist/types/dex/hyperliquid.d.ts +0 -3
  692. package/dist/types/dex/hyperliquid.d.ts.map +0 -1
  693. package/dist/types/dex/registry.d.ts +0 -3
  694. package/dist/types/dex/registry.d.ts.map +0 -1
  695. package/dist/types/dex/types.d.ts +0 -15
  696. package/dist/types/dex/types.d.ts.map +0 -1
  697. package/dist/types/errors/AgentError.d.ts +0 -25
  698. package/dist/types/errors/AgentError.d.ts.map +0 -1
  699. package/dist/types/errors/HTTPError.d.ts +0 -11
  700. package/dist/types/errors/HTTPError.d.ts.map +0 -1
  701. package/dist/types/errors/PerpsSDKError.d.ts +0 -40
  702. package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
  703. package/dist/types/errors/ServerError.d.ts +0 -23
  704. package/dist/types/errors/ServerError.d.ts.map +0 -1
  705. package/dist/types/errors/ValidationError.d.ts +0 -23
  706. package/dist/types/errors/ValidationError.d.ts.map +0 -1
  707. package/dist/types/errors/utils/rootCause.d.ts +0 -71
  708. package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
  709. package/dist/types/services/cancelOrder.d.ts +0 -51
  710. package/dist/types/services/cancelOrder.d.ts.map +0 -1
  711. package/dist/types/services/createAuthorization.d.ts +0 -51
  712. package/dist/types/services/createAuthorization.d.ts.map +0 -1
  713. package/dist/types/services/createOrder.d.ts +0 -74
  714. package/dist/types/services/createOrder.d.ts.map +0 -1
  715. package/dist/types/services/createWithdrawal.d.ts +0 -49
  716. package/dist/types/services/createWithdrawal.d.ts.map +0 -1
  717. package/dist/types/services/getDexes.d.ts +0 -20
  718. package/dist/types/services/getDexes.d.ts.map +0 -1
  719. package/dist/types/services/getHistory.d.ts.map +0 -1
  720. package/dist/types/services/getMarket.d.ts +0 -27
  721. package/dist/types/services/getMarket.d.ts.map +0 -1
  722. package/dist/types/services/getMarkets.d.ts +0 -25
  723. package/dist/types/services/getMarkets.d.ts.map +0 -1
  724. package/dist/types/services/submitAuthorization.d.ts +0 -42
  725. package/dist/types/services/submitAuthorization.d.ts.map +0 -1
  726. package/dist/types/services/submitOrder.d.ts +0 -44
  727. package/dist/types/services/submitOrder.d.ts.map +0 -1
  728. package/dist/types/services/submitWithdrawal.d.ts +0 -40
  729. package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
  730. package/src/dex/hyperliquid.ts +0 -20
  731. package/src/dex/registry.ts +0 -15
  732. package/src/dex/types.ts +0 -16
  733. package/src/errors/AgentError.ts +0 -43
  734. package/src/errors/HTTPError.ts +0 -72
  735. package/src/errors/PerpsSDKError.ts +0 -79
  736. package/src/errors/ServerError.ts +0 -41
  737. package/src/errors/ValidationError.ts +0 -38
  738. package/src/errors/utils/rootCause.ts +0 -112
  739. package/src/services/cancelOrder.ts +0 -75
  740. package/src/services/createAuthorization.ts +0 -79
  741. package/src/services/createOrder.ts +0 -116
  742. package/src/services/createWithdrawal.ts +0 -76
  743. package/src/services/getMarket.ts +0 -41
  744. package/src/services/getMarkets.ts +0 -37
  745. package/src/services/submitAuthorization.ts +0 -70
  746. package/src/services/submitOrder.ts +0 -72
  747. package/src/services/submitWithdrawal.ts +0 -67
  748. /package/dist/cjs/{dex → realtime/lighter}/types.js +0 -0
@@ -0,0 +1,291 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Lighter WASM loader
3
+ //
4
+ // Loads the Go-compiled `lighter-signer.wasm` and its companion `wasm_exec.js`
5
+ // runtime. The Go runtime installs functions (SignCreateOrder, SignCancelOrder,
6
+ // etc.) onto `globalThis` when `go.run(instance)` starts the main goroutine.
7
+ //
8
+ // The default asset URLs resolve relative to this module's emitted JS file:
9
+ // src/signers/lighter/../../../wasm/lighter-signer.wasm → repo-root wasm/
10
+ // dist/{esm,cjs}/signers/lighter/../../../wasm/… → dist/{esm,cjs}/wasm/
11
+ //
12
+ // The build script copies the wasm assets into both dist subtrees so the same
13
+ // relative path resolves at runtime regardless of which bundle is loaded.
14
+ //
15
+ // To resolve the module's own URL in both ESM (where `__filename` is absent)
16
+ // and CJS (where `import.meta.url` is a syntax error), we parse a stack trace
17
+ // — `currentModuleUrl` always appears as the first frame, and V8 includes the
18
+ // emitting file path regardless of module system. Callers can override both
19
+ // asset URLs via {@link LoadLighterWasmOptions} to bypass this heuristic.
20
+ // ---------------------------------------------------------------------------
21
+
22
+ function currentModuleUrl(): string {
23
+ const cjsFilename = (globalThis as { __filename?: string }).__filename
24
+ if (typeof cjsFilename === 'string' && cjsFilename.length > 0) {
25
+ return `file://${cjsFilename}`
26
+ }
27
+ const stack = new Error().stack ?? ''
28
+ // Stack frames look like one of:
29
+ // " at currentModuleUrl (file:///abs/path/wasmLoader.js:29:10)"
30
+ // " at currentModuleUrl (/abs/path/wasmLoader.js:29:10)"
31
+ // " at currentModuleUrl (file:///abs/path/wasmLoader.ts:29:10)" (vitest)
32
+ // " at currentModuleUrl (http://localhost:5173/.../wasmLoader.ts?v=…:29:10)" (vite dev)
33
+ const match = stack.match(/\(([^)]+wasmLoader\.[tj]s[^)]*)\)/)
34
+ const frame = match?.[1] ?? ''
35
+ const withoutPos = frame.replace(/:\d+:\d+$/, '')
36
+ if (
37
+ withoutPos.startsWith('file://') ||
38
+ withoutPos.startsWith('http://') ||
39
+ withoutPos.startsWith('https://')
40
+ ) {
41
+ return withoutPos
42
+ }
43
+ if (withoutPos.length > 0) {
44
+ // Bare absolute path (Node CJS without `file://` prefix in some runners).
45
+ return `file://${withoutPos}`
46
+ }
47
+ throw new Error(
48
+ 'Could not resolve the Lighter WASM loader module URL. Pass an explicit ' +
49
+ '`wasmBinaryUrl` and `wasmExecJsUrl` to loadLighterWasm().'
50
+ )
51
+ }
52
+
53
+ function defaultAssetUrl(filename: string): URL {
54
+ return new URL(`../../../wasm/${filename}`, currentModuleUrl())
55
+ }
56
+
57
+ export interface LoadLighterWasmOptions {
58
+ /** Override URL for the `.wasm` binary (browser: fetch; Node: fs). */
59
+ wasmBinaryUrl?: string | URL
60
+ /** Override URL for Go's `wasm_exec.js` runtime. */
61
+ wasmExecJsUrl?: string | URL
62
+ /**
63
+ * Pre-fetched source of Go's `wasm_exec.js`. Preferred over
64
+ * `wasmExecJsUrl` for bundlers (Vite/webpack) that may transform a `.js`
65
+ * URL on serve, breaking the IIFE that installs `globalThis.Go`. Pass via
66
+ * a `?raw` import (Vite) or equivalent so the original source survives
67
+ * intact.
68
+ */
69
+ wasmExecJsSource?: string
70
+ }
71
+
72
+ export interface LighterWasmExports {
73
+ GenerateAPIKey: (seed?: string) => {
74
+ publicKey?: string
75
+ privateKey?: string
76
+ error?: string
77
+ }
78
+ CreateClient: (
79
+ url: string,
80
+ privateKey: string,
81
+ chainId: number,
82
+ apiKeyIndex: number,
83
+ accountIndex: number
84
+ ) => { error?: string }
85
+ CheckClient: (apiKeyIndex: number, accountIndex: number) => { error?: string }
86
+ /**
87
+ * Returns `{authToken}` on success — note the field name is `authToken`,
88
+ * NOT `token`. Reading the wrong field silently fails (Go sets nothing
89
+ * else on the result), which is why early code paths returned undefined
90
+ * tokens with no error.
91
+ */
92
+ CreateAuthToken: (
93
+ deadline: number,
94
+ apiKeyIndex: number,
95
+ accountIndex: number
96
+ ) => { authToken?: string; error?: string }
97
+ /**
98
+ * Signature mirrors lighter-python's `signer.SignChangePubKey(...)` call —
99
+ * 5 positional args including `skipNonce` (use 0 to embed our supplied
100
+ * nonce; 1 to leave it out for server-fill scenarios). Earlier versions
101
+ * here had only 4 args, which silently shifted all arguments by one and
102
+ * produced txInfo with garbage AccountIndex / ApiKeyIndex fields →
103
+ * Lighter rejected with code 20001 "invalid param".
104
+ */
105
+ SignChangePubKey: (
106
+ pubKeyHex: string,
107
+ skipNonce: number,
108
+ nonce: number,
109
+ apiKeyIndex: number,
110
+ accountIndex: number
111
+ ) => SignResult & { messageToSign?: string }
112
+ SignCreateOrder: (...args: unknown[]) => SignResult
113
+ SignCancelOrder: (...args: unknown[]) => SignResult
114
+ SignCancelAllOrders: (...args: unknown[]) => SignResult
115
+ SignTransfer: (...args: unknown[]) => SignResult
116
+ SignWithdraw: (...args: unknown[]) => SignResult
117
+ SignUpdateLeverage: (...args: unknown[]) => SignResult
118
+ SignModifyOrder: (...args: unknown[]) => SignResult
119
+ SignUpdateMargin: (...args: unknown[]) => SignResult
120
+ }
121
+
122
+ export interface SignResult {
123
+ txType?: number
124
+ txInfo?: string
125
+ txHash?: string
126
+ error?: string
127
+ }
128
+
129
+ const WASM_FUNCTION_NAMES = [
130
+ 'GenerateAPIKey',
131
+ 'CreateClient',
132
+ 'CheckClient',
133
+ 'CreateAuthToken',
134
+ 'SignChangePubKey',
135
+ 'SignCreateOrder',
136
+ 'SignCancelOrder',
137
+ 'SignCancelAllOrders',
138
+ 'SignTransfer',
139
+ 'SignWithdraw',
140
+ 'SignUpdateLeverage',
141
+ 'SignModifyOrder',
142
+ 'SignUpdateMargin',
143
+ ] as const
144
+
145
+ type GoClass = new () => {
146
+ importObject: WebAssembly.Imports
147
+ run(instance: WebAssembly.Instance): Promise<void>
148
+ }
149
+
150
+ let cachedExports: Promise<LighterWasmExports> | undefined
151
+
152
+ // `node:fs/promises` and `node:url` are Node-only. Static imports force browser
153
+ // bundlers (Vite/Rollup/esbuild) to resolve them up-front, which fails. Dynamic
154
+ // `import('node:...')` lets bundlers leave the branch unreachable in browsers
155
+ // while Node still resolves it at runtime when asked for a `file://` URL.
156
+ async function readNodeFile(url: URL): Promise<Uint8Array> {
157
+ const [{ readFile }, { fileURLToPath }] = await Promise.all([
158
+ import(/* @vite-ignore */ 'node:fs/promises'),
159
+ import(/* @vite-ignore */ 'node:url'),
160
+ ])
161
+ return readFile(fileURLToPath(url))
162
+ }
163
+
164
+ /**
165
+ * Resolve a possibly-relative URL string against the current document/page
166
+ * origin. Bundlers like Vite hand out absolute paths (e.g. `/node_modules/…`)
167
+ * for `?url` imports, which `new URL(string)` rejects without a base.
168
+ */
169
+ function toResolvedUrl(url: string | URL): URL {
170
+ if (url instanceof URL) {
171
+ return url
172
+ }
173
+ const base =
174
+ typeof globalThis !== 'undefined' &&
175
+ (globalThis as { location?: { href?: string } }).location?.href
176
+ ? (globalThis as { location: { href: string } }).location.href
177
+ : undefined
178
+ return new URL(url, base)
179
+ }
180
+
181
+ async function readUrlBytes(url: string | URL): Promise<ArrayBuffer> {
182
+ const u = toResolvedUrl(url)
183
+ if (u.protocol === 'file:') {
184
+ const buf = await readNodeFile(u)
185
+ // Copy the view into a fresh ArrayBuffer — `Buffer.buffer` is a shared
186
+ // ArrayBuffer in Node and the wasm instantiator expects a plain one.
187
+ return buf.slice().buffer as ArrayBuffer
188
+ }
189
+ const response = await fetch(u)
190
+ if (!response.ok) {
191
+ throw new Error(
192
+ `Failed to fetch ${u.href}: ${response.status} ${response.statusText}`
193
+ )
194
+ }
195
+ return response.arrayBuffer()
196
+ }
197
+
198
+ async function readUrlText(url: string | URL): Promise<string> {
199
+ const u = toResolvedUrl(url)
200
+ if (u.protocol === 'file:') {
201
+ const buf = await readNodeFile(u)
202
+ return new TextDecoder('utf-8').decode(buf)
203
+ }
204
+ const response = await fetch(u)
205
+ if (!response.ok) {
206
+ throw new Error(
207
+ `Failed to fetch ${u.href}: ${response.status} ${response.statusText}`
208
+ )
209
+ }
210
+ return response.text()
211
+ }
212
+
213
+ /**
214
+ * Load the Lighter WASM signer. Memoized per-process: subsequent calls return
215
+ * the cached exports. The Go runtime keeps a long-running goroutine to service
216
+ * JS calls — we start it once and never stop it.
217
+ */
218
+ export async function loadLighterWasm(
219
+ options?: LoadLighterWasmOptions
220
+ ): Promise<LighterWasmExports> {
221
+ if (!cachedExports) {
222
+ cachedExports = doLoad(options)
223
+ }
224
+ return cachedExports
225
+ }
226
+
227
+ async function doLoad(
228
+ options?: LoadLighterWasmOptions
229
+ ): Promise<LighterWasmExports> {
230
+ const wasmBinaryUrl =
231
+ options?.wasmBinaryUrl ?? defaultAssetUrl('lighter-signer.wasm')
232
+
233
+ // Prefer a pre-fetched source string (bundler `?raw` imports) over a URL —
234
+ // bundlers may transform a `.js` URL on serve, breaking the IIFE that sets
235
+ // `globalThis.Go`.
236
+ const wasmExecSourcePromise: Promise<string> =
237
+ options?.wasmExecJsSource !== undefined
238
+ ? Promise.resolve(options.wasmExecJsSource)
239
+ : readUrlText(options?.wasmExecJsUrl ?? defaultAssetUrl('wasm_exec.js'))
240
+
241
+ const [wasmExecSource, wasmBytes] = await Promise.all([
242
+ wasmExecSourcePromise,
243
+ readUrlBytes(wasmBinaryUrl),
244
+ ])
245
+
246
+ // wasm_exec.js is an IIFE that installs `globalThis.Go = class { ... }` plus
247
+ // fs/process/crypto polyfills. Evaluate it in a Function scope so the class
248
+ // attaches to globalThis and we read it back from there.
249
+ const installGo = new Function(`${wasmExecSource}; return globalThis.Go`)
250
+ const Go = installGo() as GoClass
251
+
252
+ const go = new Go()
253
+ const { instance } = await WebAssembly.instantiate(wasmBytes, go.importObject)
254
+ // Start the Go goroutine — this never resolves until the Go main() returns,
255
+ // which our signer never does. Intentionally not awaited.
256
+ void go.run(instance)
257
+
258
+ // Wait microtasks to let Go's init() register JS-bound functions.
259
+ await yieldToGoRuntime()
260
+
261
+ const exports: Partial<LighterWasmExports> = {}
262
+ for (const name of WASM_FUNCTION_NAMES) {
263
+ const fn = (globalThis as Record<string, unknown>)[name]
264
+ if (typeof fn !== 'function') {
265
+ throw new Error(
266
+ `Lighter WASM did not export expected function: ${name}. ` +
267
+ 'The .wasm binary may be stale or incompatible.'
268
+ )
269
+ }
270
+ ;(exports as Record<string, unknown>)[name] = fn
271
+ }
272
+
273
+ return exports as LighterWasmExports
274
+ }
275
+
276
+ async function yieldToGoRuntime(): Promise<void> {
277
+ for (let i = 0; i < 2; i++) {
278
+ await new Promise<void>((resolve) => {
279
+ if (typeof setImmediate === 'function') {
280
+ setImmediate(resolve)
281
+ } else {
282
+ setTimeout(resolve, 0)
283
+ }
284
+ })
285
+ }
286
+ }
287
+
288
+ /** Testing helper — drop the cached WASM instance so the next load reinitializes. */
289
+ export function resetLighterWasmCache(): void {
290
+ cachedExports = undefined
291
+ }
@@ -0,0 +1,130 @@
1
+ import type { AccountResponse, Asset, Position } from '@lifi/perps-types'
2
+ import { HlAbstractionMode } from '@lifi/perps-types/providers/hyperliquid'
3
+ import { stringToFloat } from './parse.js'
4
+
5
+ export interface AccountSummary {
6
+ /** Total portfolio value in USD */
7
+ portfolioValue: number
8
+ /** Collateral available for new positions */
9
+ availableMargin: number
10
+ /** Margin locked in open positions */
11
+ marginUsed: number
12
+ /** Unrealized PnL across all positions */
13
+ unrealizedPnl: number
14
+ }
15
+
16
+ /**
17
+ * Build a map of coin name → USD price from spot assets and allMids.
18
+ * Spot assets have displaySymbol "BASE/QUOTE" and assetId "@N" which keys into prices.
19
+ */
20
+ function buildSpotCoinPrices(
21
+ assets: Asset[],
22
+ prices: Record<string, string>
23
+ ): Map<string, number> {
24
+ const map = new Map<string, number>()
25
+ for (const asset of assets) {
26
+ if (asset.market !== 'spot') {
27
+ continue
28
+ }
29
+ const price = prices[asset.assetId]
30
+ if (!price) {
31
+ continue
32
+ }
33
+ const slashIdx = asset.displaySymbol.indexOf('/')
34
+ if (slashIdx < 0) {
35
+ continue
36
+ }
37
+ const base = asset.displaySymbol.slice(0, slashIdx)
38
+ map.set(base, stringToFloat(price))
39
+ }
40
+ return map
41
+ }
42
+
43
+ /**
44
+ * Resolve the USD price of a spot balance currency.
45
+ *
46
+ * Looks up the coin in the spot mid prices map first, then tries an exact
47
+ * match in allMids (e.g. a perps-listed stablecoin). Falls back to $1 for
48
+ * stablecoins with no market price entry.
49
+ */
50
+ function getSpotPrice(
51
+ currency: string,
52
+ prices: Record<string, string>,
53
+ spotCoinPrices: Map<string, number>
54
+ ): number {
55
+ const spotPrice = spotCoinPrices.get(currency)
56
+ if (spotPrice !== undefined) {
57
+ return spotPrice
58
+ }
59
+ if (prices[currency] !== undefined) {
60
+ return stringToFloat(prices[currency])
61
+ }
62
+ return 1
63
+ }
64
+
65
+ const UNIFIED_STATUSES: ReadonlySet<string> = new Set([
66
+ HlAbstractionMode.UNIFIED_ACCOUNT,
67
+ HlAbstractionMode.PORTFOLIO_MARGIN,
68
+ ])
69
+
70
+ export function calculateAccountSummary(
71
+ account: AccountResponse,
72
+ positions: Position[],
73
+ prices: Record<string, string>,
74
+ assets?: Asset[],
75
+ collateralCurrencies?: ReadonlySet<string>
76
+ ): AccountSummary {
77
+ let marginUsed = 0
78
+ let unrealizedPnl = 0
79
+ for (const p of positions) {
80
+ marginUsed += stringToFloat(p.marginUsed)
81
+ unrealizedPnl += stringToFloat(p.unrealizedPnl)
82
+ }
83
+
84
+ const spotCoinPrices = buildSpotCoinPrices(assets ?? [], prices)
85
+
86
+ // Split spot into margin-eligible (quote assets) and non-margin (HYPE, PURR etc.)
87
+ let spotMarginValue = 0
88
+ let spotNonMarginValue = 0
89
+ let perpsBalance = 0
90
+ for (const [key, entries] of Object.entries(account.balances)) {
91
+ if (key === 'spot') {
92
+ for (const b of entries) {
93
+ const value =
94
+ stringToFloat(b.amount) *
95
+ getSpotPrice(b.currency, prices, spotCoinPrices)
96
+ if (!collateralCurrencies || collateralCurrencies.has(b.currency)) {
97
+ spotMarginValue += value
98
+ } else {
99
+ spotNonMarginValue += value
100
+ }
101
+ }
102
+ } else {
103
+ for (const b of entries) {
104
+ perpsBalance += stringToFloat(b.amount)
105
+ }
106
+ }
107
+ }
108
+
109
+ // `abstractionMode` is HL-only; for any other provider variant (today
110
+ // Lighter) the unified-collateral semantics don't apply, so fall back
111
+ // to `undefined` and let the non-unified branch below run.
112
+ const status =
113
+ account.config.provider === 'hyperliquid'
114
+ ? (account.config.abstractionMode ?? undefined)
115
+ : undefined
116
+ const isUnified = UNIFIED_STATUSES.has(status ?? '')
117
+
118
+ // Unified: spot balances are total token holdings (margin is NOT subtracted).
119
+ // Disabled: perps venue balances are free margin (margin IS already subtracted).
120
+ const marginCollateral = isUnified
121
+ ? spotMarginValue + perpsBalance
122
+ : spotMarginValue + perpsBalance + marginUsed
123
+
124
+ return {
125
+ portfolioValue: marginCollateral + spotNonMarginValue + unrealizedPnl,
126
+ availableMargin: marginCollateral - marginUsed,
127
+ marginUsed,
128
+ unrealizedPnl,
129
+ }
130
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Exhaustiveness helper for discriminated-union switches.
3
+ *
4
+ * Use in the `default` arm of a `switch (discriminant)` block: TypeScript
5
+ * narrows the variable to `never` when every case is handled, so adding a
6
+ * new variant to the union without a corresponding `case` becomes a
7
+ * compile error here. At runtime — if reached — throw rather than return
8
+ * silently; the throw is unreachable in well-typed code but flags
9
+ * upstream-shape drift loudly.
10
+ *
11
+ * @example
12
+ * switch (config.provider) {
13
+ * case 'hyperliquid': return projectHyperliquid(config)
14
+ * case 'lighter': return projectLighter(config)
15
+ * default: return assertNever(config)
16
+ * }
17
+ */
18
+ export function assertNever(value: never): never {
19
+ throw new Error(
20
+ `Unreachable: exhaustiveness check failed for value ${JSON.stringify(value)}`
21
+ )
22
+ }
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Universal perpetual futures calculation utilities.
3
+ *
4
+ * Pure functions for computing position-related values that any consumer
5
+ * of the perps SDK would need. All parameters are required — no default
6
+ * values for critical financial parameters.
7
+ */
8
+
9
+ /**
10
+ * Calculate position size in asset units from margin.
11
+ *
12
+ * @param marginUsd - Margin amount in USD
13
+ * @param leverage - Position leverage
14
+ * @param price - Current asset price
15
+ * @returns Position size in asset units
16
+ */
17
+ export function calculatePositionSize(
18
+ marginUsd: number,
19
+ leverage: number,
20
+ price: number
21
+ ): number {
22
+ return (marginUsd * leverage) / price
23
+ }
24
+
25
+ /**
26
+ * Calculate notional value of a position.
27
+ *
28
+ * @param size - Position size in asset units
29
+ * @param price - Current asset price
30
+ * @returns Notional value in USD
31
+ */
32
+ export function calculateNotionalValue(size: number, price: number): number {
33
+ return Math.abs(size) * price
34
+ }
35
+
36
+ /**
37
+ * Calculate unrealized PnL.
38
+ *
39
+ * @param entryPrice - Position entry price
40
+ * @param currentPrice - Current market price
41
+ * @param size - Position size (positive for long, negative for short)
42
+ * @returns Unrealized PnL in USD
43
+ */
44
+ export function calculateUnrealizedPnl(
45
+ entryPrice: number,
46
+ currentPrice: number,
47
+ size: number
48
+ ): number {
49
+ return (currentPrice - entryPrice) * size
50
+ }
51
+
52
+ /**
53
+ * Calculate return on equity (ROE) percentage.
54
+ *
55
+ * @param pnl - Profit/loss in USD
56
+ * @param margin - Initial margin in USD
57
+ * @returns ROE as percentage (e.g., 10 for 10%)
58
+ */
59
+ export function calculateRoe(pnl: number, margin: number): number {
60
+ if (margin === 0) {
61
+ return 0
62
+ }
63
+ return (pnl / margin) * 100
64
+ }
65
+
66
+ /**
67
+ * Calculate required margin for a position.
68
+ *
69
+ * @param notionalValue - Position notional value in USD
70
+ * @param leverage - Position leverage
71
+ * @returns Required margin in USD
72
+ */
73
+ export function calculateRequiredMargin(
74
+ notionalValue: number,
75
+ leverage: number
76
+ ): number {
77
+ return notionalValue / leverage
78
+ }
79
+
80
+ /**
81
+ * Estimate trading fees.
82
+ *
83
+ * @param sizeUsd - Position size in USD (notional value)
84
+ * @param feeRate - Fee rate as decimal (e.g., 0.00035 for 0.035%)
85
+ * @returns Estimated fee in USD
86
+ */
87
+ export function estimateFees(sizeUsd: number, feeRate: number): number {
88
+ return sizeUsd * feeRate
89
+ }
90
+
91
+ /**
92
+ * Apply slippage to a price for order execution.
93
+ *
94
+ * @param price - Base price
95
+ * @param slippagePercent - Slippage tolerance as percentage (e.g., 0.5 for 0.5%)
96
+ * @param isBuy - True if buying (price goes up), false if selling (price goes down)
97
+ * @returns Price adjusted for slippage
98
+ */
99
+ export function applySlippage(
100
+ price: number,
101
+ slippagePercent: number,
102
+ isBuy: boolean
103
+ ): number {
104
+ const multiplier = 1 + slippagePercent / 100
105
+ return isBuy ? price * multiplier : price / multiplier
106
+ }
107
+
108
+ // ---------------------------------------------------------------------------
109
+ // TP/SL expected P&L calculations
110
+ // ---------------------------------------------------------------------------
111
+
112
+ export interface ExpectedPnl {
113
+ amount: number
114
+ percent: number
115
+ }
116
+
117
+ /**
118
+ * Calculate expected gain/loss for a TP or SL trigger price.
119
+ * Returns signed values — positive means profit, negative means loss.
120
+ *
121
+ * @param triggerPrice - The TP or SL target price
122
+ * @param entryPrice - Position entry / current market price
123
+ * @param leverage - Position leverage multiplier
124
+ * @param isLong - True for long positions, false for short
125
+ * @param margin - Margin amount in USD
126
+ */
127
+ export function calculateExpectedPnl(
128
+ triggerPrice: number,
129
+ entryPrice: number,
130
+ leverage: number,
131
+ isLong: boolean,
132
+ margin: number
133
+ ): ExpectedPnl | null {
134
+ if (!triggerPrice || entryPrice === 0 || margin === 0) {
135
+ return null
136
+ }
137
+ const priceDiff = isLong
138
+ ? triggerPrice - entryPrice
139
+ : entryPrice - triggerPrice
140
+ const percent = (priceDiff / entryPrice) * leverage * 100
141
+ const amount = margin * (percent / 100)
142
+ return { amount, percent }
143
+ }
144
+
145
+ /**
146
+ * Convert a percentage gain/loss to a target price.
147
+ *
148
+ * @param percent - Target gain/loss percentage (positive = profitable direction)
149
+ * @param entryPrice - Position entry price
150
+ * @param leverage - Position leverage multiplier
151
+ * @param isLong - True for long positions, false for short
152
+ */
153
+ export function priceFromPercent(
154
+ percent: number,
155
+ entryPrice: number,
156
+ leverage: number,
157
+ isLong: boolean
158
+ ): number {
159
+ if (entryPrice === 0 || leverage === 0) {
160
+ return 0
161
+ }
162
+ const priceDelta = (percent / 100 / leverage) * entryPrice
163
+ return isLong ? entryPrice + priceDelta : entryPrice - priceDelta
164
+ }
165
+
166
+ /**
167
+ * Convert a target price to a percentage gain/loss.
168
+ *
169
+ * @param price - Target price
170
+ * @param entryPrice - Position entry price
171
+ * @param leverage - Position leverage multiplier
172
+ * @param isLong - True for long positions, false for short
173
+ */
174
+ export function percentFromPrice(
175
+ price: number,
176
+ entryPrice: number,
177
+ leverage: number,
178
+ isLong: boolean
179
+ ): number {
180
+ if (entryPrice === 0 || leverage === 0) {
181
+ return 0
182
+ }
183
+ const priceDiff = isLong ? price - entryPrice : entryPrice - price
184
+ return (priceDiff / entryPrice) * leverage * 100
185
+ }
186
+
187
+ // ---------------------------------------------------------------------------
188
+ // Realized PnL percentage
189
+ // ---------------------------------------------------------------------------
190
+
191
+ /**
192
+ * Calculate realized PnL as a percentage of position value at close.
193
+ *
194
+ * @param realizedPnl - The realized profit/loss in USD
195
+ * @param size - Position size in asset units at close
196
+ * @param price - Price at close
197
+ * @returns PnL as a percentage of position value
198
+ */
199
+ export function calculateRealizedPnlPercent(
200
+ realizedPnl: number,
201
+ size: number,
202
+ price: number
203
+ ): number {
204
+ const positionValue = Math.abs(size) * price
205
+ if (positionValue === 0) {
206
+ return 0
207
+ }
208
+ return (realizedPnl / positionValue) * 100
209
+ }
@@ -0,0 +1,9 @@
1
+ export {
2
+ calculateLiquidationPrice,
3
+ calculateMaintenanceMarginRate,
4
+ } from './liquidation.js'
5
+ export {
6
+ formatOrderPrice,
7
+ formatOrderSize,
8
+ getMaxPriceDecimals,
9
+ } from './orderFormatting.js'