@lifi/perps-sdk 20.1.1 → 21.1.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 (367) hide show
  1. package/README.md +81 -6
  2. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  3. package/dist/cjs/client/PerpsClient.js +4 -1
  4. package/dist/cjs/client/PerpsClient.js.map +1 -1
  5. package/dist/cjs/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
  6. package/dist/cjs/decimal/big.d.ts.map +1 -0
  7. package/dist/cjs/{utils/decimal.js → decimal/big.js} +1 -1
  8. package/dist/cjs/decimal/big.js.map +1 -0
  9. package/dist/cjs/decimal/convert.d.ts +11 -0
  10. package/dist/cjs/decimal/convert.d.ts.map +1 -0
  11. package/dist/cjs/decimal/convert.js +70 -0
  12. package/dist/cjs/decimal/convert.js.map +1 -0
  13. package/dist/cjs/decimal/format.d.ts.map +1 -0
  14. package/dist/cjs/decimal/format.js.map +1 -0
  15. package/dist/cjs/decimal/parse.d.ts +6 -0
  16. package/dist/cjs/decimal/parse.d.ts.map +1 -0
  17. package/dist/cjs/{utils → decimal}/parse.js +5 -4
  18. package/dist/cjs/decimal/parse.js.map +1 -0
  19. package/dist/cjs/index.d.ts +17 -15
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +75 -61
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/math/fills.d.ts +5 -0
  24. package/dist/cjs/math/fills.d.ts.map +1 -0
  25. package/dist/cjs/{utils/fillClassification.js → math/fills.js} +16 -1
  26. package/dist/cjs/math/fills.js.map +1 -0
  27. package/dist/cjs/math/order.d.ts +45 -0
  28. package/dist/cjs/math/order.d.ts.map +1 -0
  29. package/dist/cjs/math/order.js +256 -0
  30. package/dist/cjs/math/order.js.map +1 -0
  31. package/dist/cjs/math/position.d.ts +56 -0
  32. package/dist/cjs/math/position.d.ts.map +1 -0
  33. package/dist/cjs/math/position.js +160 -0
  34. package/dist/cjs/math/position.js.map +1 -0
  35. package/dist/cjs/services/getActivity.d.ts.map +1 -1
  36. package/dist/cjs/services/getActivity.js.map +1 -1
  37. package/dist/cjs/services/getFills.d.ts.map +1 -1
  38. package/dist/cjs/services/getFills.js.map +1 -1
  39. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  40. package/dist/cjs/services/getOrder.js.map +1 -1
  41. package/dist/cjs/services/getOrders.d.ts.map +1 -1
  42. package/dist/cjs/services/getOrders.js.map +1 -1
  43. package/dist/cjs/services/getPositions.d.ts.map +1 -1
  44. package/dist/cjs/services/getPositions.js.map +1 -1
  45. package/dist/cjs/services/resolveQuote.d.ts.map +1 -1
  46. package/dist/cjs/services/resolveQuote.js +2 -2
  47. package/dist/cjs/services/resolveQuote.js.map +1 -1
  48. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -1
  49. package/dist/cjs/services/resolveSubscribeQuote.js +2 -2
  50. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -1
  51. package/dist/cjs/types/provider.d.ts +3 -3
  52. package/dist/cjs/types/provider.d.ts.map +1 -1
  53. package/dist/cjs/types/withdrawal.d.ts +2 -0
  54. package/dist/cjs/types/withdrawal.d.ts.map +1 -1
  55. package/dist/cjs/utils/orderClassification.d.ts +1 -3
  56. package/dist/cjs/utils/orderClassification.d.ts.map +1 -1
  57. package/dist/cjs/utils/orderClassification.js +1 -15
  58. package/dist/cjs/utils/orderClassification.js.map +1 -1
  59. package/dist/cjs/version.d.ts +1 -1
  60. package/dist/cjs/version.js +1 -1
  61. package/dist/cjs/wire/orderAmounts.d.ts +18 -0
  62. package/dist/cjs/wire/orderAmounts.d.ts.map +1 -0
  63. package/dist/cjs/wire/orderAmounts.js +79 -0
  64. package/dist/cjs/wire/orderAmounts.js.map +1 -0
  65. package/dist/cjs/wire/refuel.d.ts +8 -0
  66. package/dist/cjs/wire/refuel.d.ts.map +1 -0
  67. package/dist/cjs/wire/refuel.js +23 -0
  68. package/dist/cjs/wire/refuel.js.map +1 -0
  69. package/dist/cjs/wire/requireDecimal.d.ts +4 -0
  70. package/dist/cjs/wire/requireDecimal.d.ts.map +1 -0
  71. package/dist/cjs/wire/requireDecimal.js +16 -0
  72. package/dist/cjs/wire/requireDecimal.js.map +1 -0
  73. package/dist/cjs/wire/snap.d.ts +5 -0
  74. package/dist/cjs/wire/snap.d.ts.map +1 -0
  75. package/dist/cjs/wire/snap.js +12 -0
  76. package/dist/cjs/wire/snap.js.map +1 -0
  77. package/dist/cjs/wire/transferable.d.ts +3 -0
  78. package/dist/cjs/wire/transferable.d.ts.map +1 -0
  79. package/dist/cjs/wire/transferable.js +13 -0
  80. package/dist/cjs/wire/transferable.js.map +1 -0
  81. package/dist/cjs/wire/withdraw.d.ts +4 -0
  82. package/dist/cjs/wire/withdraw.d.ts.map +1 -0
  83. package/dist/cjs/wire/withdraw.js +13 -0
  84. package/dist/cjs/wire/withdraw.js.map +1 -0
  85. package/dist/esm/client/PerpsClient.d.ts +37 -5
  86. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  87. package/dist/esm/client/PerpsClient.js +41 -6
  88. package/dist/esm/client/PerpsClient.js.map +1 -1
  89. package/dist/esm/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
  90. package/dist/esm/decimal/big.d.ts.map +1 -0
  91. package/dist/esm/{utils/decimal.js → decimal/big.js} +1 -1
  92. package/dist/esm/decimal/big.js.map +1 -0
  93. package/dist/esm/decimal/convert.d.ts +80 -0
  94. package/dist/esm/decimal/convert.d.ts.map +1 -0
  95. package/dist/esm/decimal/convert.js +118 -0
  96. package/dist/esm/decimal/convert.js.map +1 -0
  97. package/dist/esm/decimal/format.d.ts.map +1 -0
  98. package/dist/esm/decimal/format.js.map +1 -0
  99. package/dist/esm/decimal/parse.d.ts +29 -0
  100. package/dist/esm/decimal/parse.d.ts.map +1 -0
  101. package/dist/esm/{utils → decimal}/parse.js +9 -10
  102. package/dist/esm/decimal/parse.js.map +1 -0
  103. package/dist/esm/index.d.ts +17 -15
  104. package/dist/esm/index.d.ts.map +1 -1
  105. package/dist/esm/index.js +12 -12
  106. package/dist/esm/index.js.map +1 -1
  107. package/dist/esm/math/fills.d.ts +26 -0
  108. package/dist/esm/math/fills.d.ts.map +1 -0
  109. package/dist/esm/{utils/fillClassification.js → math/fills.js} +26 -2
  110. package/dist/esm/math/fills.js.map +1 -0
  111. package/dist/esm/{utils/calculations.d.ts → math/order.d.ts} +70 -75
  112. package/dist/esm/math/order.d.ts.map +1 -0
  113. package/dist/esm/{utils/calculations.js → math/order.js} +155 -111
  114. package/dist/esm/math/order.js.map +1 -0
  115. package/dist/esm/math/position.d.ts +211 -0
  116. package/dist/esm/math/position.d.ts.map +1 -0
  117. package/dist/esm/math/position.js +299 -0
  118. package/dist/esm/math/position.js.map +1 -0
  119. package/dist/esm/services/getActivity.d.ts +4 -0
  120. package/dist/esm/services/getActivity.d.ts.map +1 -1
  121. package/dist/esm/services/getActivity.js +4 -0
  122. package/dist/esm/services/getActivity.js.map +1 -1
  123. package/dist/esm/services/getFills.d.ts +4 -0
  124. package/dist/esm/services/getFills.d.ts.map +1 -1
  125. package/dist/esm/services/getFills.js +4 -0
  126. package/dist/esm/services/getFills.js.map +1 -1
  127. package/dist/esm/services/getOrder.d.ts +4 -0
  128. package/dist/esm/services/getOrder.d.ts.map +1 -1
  129. package/dist/esm/services/getOrder.js +4 -0
  130. package/dist/esm/services/getOrder.js.map +1 -1
  131. package/dist/esm/services/getOrders.d.ts +10 -1
  132. package/dist/esm/services/getOrders.d.ts.map +1 -1
  133. package/dist/esm/services/getOrders.js +10 -1
  134. package/dist/esm/services/getOrders.js.map +1 -1
  135. package/dist/esm/services/getPositions.d.ts +4 -0
  136. package/dist/esm/services/getPositions.d.ts.map +1 -1
  137. package/dist/esm/services/getPositions.js +4 -0
  138. package/dist/esm/services/getPositions.js.map +1 -1
  139. package/dist/esm/services/resolveQuote.d.ts.map +1 -1
  140. package/dist/esm/services/resolveQuote.js +1 -1
  141. package/dist/esm/services/resolveQuote.js.map +1 -1
  142. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -1
  143. package/dist/esm/services/resolveSubscribeQuote.js +1 -1
  144. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -1
  145. package/dist/esm/types/provider.d.ts +23 -11
  146. package/dist/esm/types/provider.d.ts.map +1 -1
  147. package/dist/esm/types/withdrawal.d.ts +12 -0
  148. package/dist/esm/types/withdrawal.d.ts.map +1 -1
  149. package/dist/esm/utils/orderClassification.d.ts +1 -14
  150. package/dist/esm/utils/orderClassification.d.ts.map +1 -1
  151. package/dist/esm/utils/orderClassification.js +1 -25
  152. package/dist/esm/utils/orderClassification.js.map +1 -1
  153. package/dist/esm/version.d.ts +1 -1
  154. package/dist/esm/version.js +1 -1
  155. package/dist/esm/wire/orderAmounts.d.ts +55 -0
  156. package/dist/esm/wire/orderAmounts.d.ts.map +1 -0
  157. package/dist/esm/wire/orderAmounts.js +114 -0
  158. package/dist/esm/wire/orderAmounts.js.map +1 -0
  159. package/dist/esm/wire/refuel.d.ts +28 -0
  160. package/dist/esm/wire/refuel.d.ts.map +1 -0
  161. package/dist/esm/wire/refuel.js +36 -0
  162. package/dist/esm/wire/refuel.js.map +1 -0
  163. package/dist/esm/wire/requireDecimal.d.ts +11 -0
  164. package/dist/esm/wire/requireDecimal.d.ts.map +1 -0
  165. package/dist/esm/wire/requireDecimal.js +17 -0
  166. package/dist/esm/wire/requireDecimal.js.map +1 -0
  167. package/dist/esm/wire/snap.d.ts +24 -0
  168. package/dist/esm/wire/snap.d.ts.map +1 -0
  169. package/dist/esm/wire/snap.js +27 -0
  170. package/dist/esm/wire/snap.js.map +1 -0
  171. package/dist/esm/wire/transferable.d.ts +15 -0
  172. package/dist/esm/wire/transferable.d.ts.map +1 -0
  173. package/dist/esm/wire/transferable.js +22 -0
  174. package/dist/esm/wire/transferable.js.map +1 -0
  175. package/dist/esm/wire/withdraw.d.ts +14 -0
  176. package/dist/esm/wire/withdraw.d.ts.map +1 -0
  177. package/dist/esm/wire/withdraw.js +20 -0
  178. package/dist/esm/wire/withdraw.js.map +1 -0
  179. package/dist/types/client/PerpsClient.d.ts +37 -5
  180. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  181. package/dist/types/{utils/decimal.d.ts → decimal/big.d.ts} +1 -1
  182. package/dist/types/decimal/big.d.ts.map +1 -0
  183. package/dist/types/decimal/convert.d.ts +80 -0
  184. package/dist/types/decimal/convert.d.ts.map +1 -0
  185. package/dist/types/decimal/format.d.ts.map +1 -0
  186. package/dist/types/decimal/parse.d.ts +29 -0
  187. package/dist/types/decimal/parse.d.ts.map +1 -0
  188. package/dist/types/index.d.ts +17 -15
  189. package/dist/types/index.d.ts.map +1 -1
  190. package/dist/types/math/fills.d.ts +26 -0
  191. package/dist/types/math/fills.d.ts.map +1 -0
  192. package/dist/types/{utils/calculations.d.ts → math/order.d.ts} +70 -75
  193. package/dist/types/math/order.d.ts.map +1 -0
  194. package/dist/types/math/position.d.ts +211 -0
  195. package/dist/types/math/position.d.ts.map +1 -0
  196. package/dist/types/services/getActivity.d.ts +4 -0
  197. package/dist/types/services/getActivity.d.ts.map +1 -1
  198. package/dist/types/services/getFills.d.ts +4 -0
  199. package/dist/types/services/getFills.d.ts.map +1 -1
  200. package/dist/types/services/getOrder.d.ts +4 -0
  201. package/dist/types/services/getOrder.d.ts.map +1 -1
  202. package/dist/types/services/getOrders.d.ts +10 -1
  203. package/dist/types/services/getOrders.d.ts.map +1 -1
  204. package/dist/types/services/getPositions.d.ts +4 -0
  205. package/dist/types/services/getPositions.d.ts.map +1 -1
  206. package/dist/types/services/resolveQuote.d.ts.map +1 -1
  207. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -1
  208. package/dist/types/types/provider.d.ts +23 -11
  209. package/dist/types/types/provider.d.ts.map +1 -1
  210. package/dist/types/types/withdrawal.d.ts +12 -0
  211. package/dist/types/types/withdrawal.d.ts.map +1 -1
  212. package/dist/types/utils/orderClassification.d.ts +1 -14
  213. package/dist/types/utils/orderClassification.d.ts.map +1 -1
  214. package/dist/types/version.d.ts +1 -1
  215. package/dist/types/wire/orderAmounts.d.ts +55 -0
  216. package/dist/types/wire/orderAmounts.d.ts.map +1 -0
  217. package/dist/types/wire/refuel.d.ts +28 -0
  218. package/dist/types/wire/refuel.d.ts.map +1 -0
  219. package/dist/types/wire/requireDecimal.d.ts +11 -0
  220. package/dist/types/wire/requireDecimal.d.ts.map +1 -0
  221. package/dist/types/wire/snap.d.ts +24 -0
  222. package/dist/types/wire/snap.d.ts.map +1 -0
  223. package/dist/types/wire/transferable.d.ts +15 -0
  224. package/dist/types/wire/transferable.d.ts.map +1 -0
  225. package/dist/types/wire/withdraw.d.ts +14 -0
  226. package/dist/types/wire/withdraw.d.ts.map +1 -0
  227. package/package.json +2 -2
  228. package/src/client/PerpsClient.ts +41 -6
  229. package/src/decimal/convert.ts +164 -0
  230. package/src/{utils → decimal}/parse.ts +13 -11
  231. package/src/index.ts +80 -57
  232. package/src/{utils/fillClassification.ts → math/fills.ts} +30 -1
  233. package/src/{utils/calculations.ts → math/order.ts} +205 -127
  234. package/src/{utils/positionMath.ts → math/position.ts} +173 -21
  235. package/src/services/getActivity.ts +4 -0
  236. package/src/services/getFills.ts +4 -0
  237. package/src/services/getOrder.ts +4 -0
  238. package/src/services/getOrders.ts +10 -1
  239. package/src/services/getPositions.ts +4 -0
  240. package/src/services/resolveQuote.ts +1 -1
  241. package/src/services/resolveSubscribeQuote.ts +1 -1
  242. package/src/types/provider.ts +23 -10
  243. package/src/types/withdrawal.ts +12 -0
  244. package/src/utils/orderClassification.ts +0 -30
  245. package/src/version.ts +1 -1
  246. package/src/wire/orderAmounts.ts +172 -0
  247. package/src/wire/refuel.ts +51 -0
  248. package/src/wire/requireDecimal.ts +24 -0
  249. package/src/wire/snap.ts +38 -0
  250. package/src/wire/transferable.ts +26 -0
  251. package/src/wire/withdraw.ts +29 -0
  252. package/dist/cjs/utils/calculations.d.ts +0 -47
  253. package/dist/cjs/utils/calculations.d.ts.map +0 -1
  254. package/dist/cjs/utils/calculations.js +0 -214
  255. package/dist/cjs/utils/calculations.js.map +0 -1
  256. package/dist/cjs/utils/decimal.d.ts.map +0 -1
  257. package/dist/cjs/utils/decimal.js.map +0 -1
  258. package/dist/cjs/utils/fillClassification.d.ts +0 -3
  259. package/dist/cjs/utils/fillClassification.d.ts.map +0 -1
  260. package/dist/cjs/utils/fillClassification.js.map +0 -1
  261. package/dist/cjs/utils/format.d.ts.map +0 -1
  262. package/dist/cjs/utils/format.js.map +0 -1
  263. package/dist/cjs/utils/math.d.ts +0 -4
  264. package/dist/cjs/utils/math.d.ts.map +0 -1
  265. package/dist/cjs/utils/math.js +0 -8
  266. package/dist/cjs/utils/math.js.map +0 -1
  267. package/dist/cjs/utils/orderEntry.d.ts +0 -6
  268. package/dist/cjs/utils/orderEntry.d.ts.map +0 -1
  269. package/dist/cjs/utils/orderEntry.js +0 -20
  270. package/dist/cjs/utils/orderEntry.js.map +0 -1
  271. package/dist/cjs/utils/orderMath.d.ts +0 -6
  272. package/dist/cjs/utils/orderMath.d.ts.map +0 -1
  273. package/dist/cjs/utils/orderMath.js +0 -85
  274. package/dist/cjs/utils/orderMath.js.map +0 -1
  275. package/dist/cjs/utils/parse.d.ts +0 -3
  276. package/dist/cjs/utils/parse.d.ts.map +0 -1
  277. package/dist/cjs/utils/parse.js.map +0 -1
  278. package/dist/cjs/utils/positionMath.d.ts +0 -37
  279. package/dist/cjs/utils/positionMath.d.ts.map +0 -1
  280. package/dist/cjs/utils/positionMath.js +0 -99
  281. package/dist/cjs/utils/positionMath.js.map +0 -1
  282. package/dist/cjs/utils/scaleToInteger.d.ts +0 -3
  283. package/dist/cjs/utils/scaleToInteger.d.ts.map +0 -1
  284. package/dist/cjs/utils/scaleToInteger.js +0 -30
  285. package/dist/cjs/utils/scaleToInteger.js.map +0 -1
  286. package/dist/cjs/utils/units.d.ts +0 -3
  287. package/dist/cjs/utils/units.d.ts.map +0 -1
  288. package/dist/cjs/utils/units.js +0 -18
  289. package/dist/cjs/utils/units.js.map +0 -1
  290. package/dist/cjs/utils/validation.d.ts +0 -2
  291. package/dist/cjs/utils/validation.d.ts.map +0 -1
  292. package/dist/cjs/utils/validation.js +0 -16
  293. package/dist/cjs/utils/validation.js.map +0 -1
  294. package/dist/esm/utils/calculations.d.ts.map +0 -1
  295. package/dist/esm/utils/calculations.js.map +0 -1
  296. package/dist/esm/utils/decimal.d.ts.map +0 -1
  297. package/dist/esm/utils/decimal.js.map +0 -1
  298. package/dist/esm/utils/fillClassification.d.ts +0 -13
  299. package/dist/esm/utils/fillClassification.d.ts.map +0 -1
  300. package/dist/esm/utils/fillClassification.js.map +0 -1
  301. package/dist/esm/utils/format.d.ts.map +0 -1
  302. package/dist/esm/utils/format.js.map +0 -1
  303. package/dist/esm/utils/math.d.ts +0 -6
  304. package/dist/esm/utils/math.d.ts.map +0 -1
  305. package/dist/esm/utils/math.js +0 -5
  306. package/dist/esm/utils/math.js.map +0 -1
  307. package/dist/esm/utils/orderEntry.d.ts +0 -26
  308. package/dist/esm/utils/orderEntry.d.ts.map +0 -1
  309. package/dist/esm/utils/orderEntry.js +0 -34
  310. package/dist/esm/utils/orderEntry.js.map +0 -1
  311. package/dist/esm/utils/orderMath.d.ts +0 -37
  312. package/dist/esm/utils/orderMath.d.ts.map +0 -1
  313. package/dist/esm/utils/orderMath.js +0 -113
  314. package/dist/esm/utils/orderMath.js.map +0 -1
  315. package/dist/esm/utils/parse.d.ts +0 -28
  316. package/dist/esm/utils/parse.d.ts.map +0 -1
  317. package/dist/esm/utils/parse.js.map +0 -1
  318. package/dist/esm/utils/positionMath.d.ts +0 -120
  319. package/dist/esm/utils/positionMath.d.ts.map +0 -1
  320. package/dist/esm/utils/positionMath.js +0 -173
  321. package/dist/esm/utils/positionMath.js.map +0 -1
  322. package/dist/esm/utils/scaleToInteger.d.ts +0 -22
  323. package/dist/esm/utils/scaleToInteger.d.ts.map +0 -1
  324. package/dist/esm/utils/scaleToInteger.js +0 -34
  325. package/dist/esm/utils/scaleToInteger.js.map +0 -1
  326. package/dist/esm/utils/units.d.ts +0 -27
  327. package/dist/esm/utils/units.d.ts.map +0 -1
  328. package/dist/esm/utils/units.js +0 -38
  329. package/dist/esm/utils/units.js.map +0 -1
  330. package/dist/esm/utils/validation.d.ts +0 -18
  331. package/dist/esm/utils/validation.d.ts.map +0 -1
  332. package/dist/esm/utils/validation.js +0 -29
  333. package/dist/esm/utils/validation.js.map +0 -1
  334. package/dist/types/utils/calculations.d.ts.map +0 -1
  335. package/dist/types/utils/decimal.d.ts.map +0 -1
  336. package/dist/types/utils/fillClassification.d.ts +0 -13
  337. package/dist/types/utils/fillClassification.d.ts.map +0 -1
  338. package/dist/types/utils/format.d.ts.map +0 -1
  339. package/dist/types/utils/math.d.ts +0 -6
  340. package/dist/types/utils/math.d.ts.map +0 -1
  341. package/dist/types/utils/orderEntry.d.ts +0 -26
  342. package/dist/types/utils/orderEntry.d.ts.map +0 -1
  343. package/dist/types/utils/orderMath.d.ts +0 -37
  344. package/dist/types/utils/orderMath.d.ts.map +0 -1
  345. package/dist/types/utils/parse.d.ts +0 -28
  346. package/dist/types/utils/parse.d.ts.map +0 -1
  347. package/dist/types/utils/positionMath.d.ts +0 -120
  348. package/dist/types/utils/positionMath.d.ts.map +0 -1
  349. package/dist/types/utils/scaleToInteger.d.ts +0 -22
  350. package/dist/types/utils/scaleToInteger.d.ts.map +0 -1
  351. package/dist/types/utils/units.d.ts +0 -27
  352. package/dist/types/utils/units.d.ts.map +0 -1
  353. package/dist/types/utils/validation.d.ts +0 -18
  354. package/dist/types/utils/validation.d.ts.map +0 -1
  355. package/src/utils/math.ts +0 -7
  356. package/src/utils/orderEntry.ts +0 -38
  357. package/src/utils/orderMath.ts +0 -152
  358. package/src/utils/scaleToInteger.ts +0 -56
  359. package/src/utils/units.ts +0 -39
  360. package/src/utils/validation.ts +0 -38
  361. /package/dist/cjs/{utils → decimal}/format.d.ts +0 -0
  362. /package/dist/cjs/{utils → decimal}/format.js +0 -0
  363. /package/dist/esm/{utils → decimal}/format.d.ts +0 -0
  364. /package/dist/esm/{utils → decimal}/format.js +0 -0
  365. /package/dist/types/{utils → decimal}/format.d.ts +0 -0
  366. /package/src/{utils/decimal.ts → decimal/big.ts} +0 -0
  367. /package/src/{utils → decimal}/format.ts +0 -0
@@ -1,11 +1,8 @@
1
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.
2
+ * Display-tier order formulas. Every function takes and gives `number`;
3
+ * exact decimal arithmetic happens internally with `DivBig`.
7
4
  */
8
- import { type FeeTier, type Market, type MarketContext, type OrderbookLevel, type Quote, type QuoteSide, type TradeType } from '@lifi/perps-types';
5
+ import { type FeeTier, type Market, type MarketContext, type Order, type OrderbookLevel, type Position, type Quote, type QuoteSide, type RegularOrder, type TradeType, type TriggerOrder } from '@lifi/perps-types';
9
6
  /**
10
7
  * Calculate position size in asset units from margin.
11
8
  *
@@ -15,48 +12,15 @@ import { type FeeTier, type Market, type MarketContext, type OrderbookLevel, typ
15
12
  * @returns Position size in asset units
16
13
  * @example
17
14
  * ```ts
18
- * calculatePositionSize(100, 10, 2000) // 0.5 (ETH at $2000)
15
+ * calculateSize(100, 10, 2000) // 0.5 (ETH at $2000)
19
16
  * ```
20
17
  * @public
21
18
  */
22
- export declare function calculatePositionSize(marginUsd: number, leverage: number, price: number): number;
19
+ export declare function calculateSize(marginUsd: number, leverage: number, price: number): number;
23
20
  /**
24
- * Calculate notional value of a position.
25
- *
26
- * @param size - Position size in asset units
27
- * @param price - Current asset price
28
- * @returns Notional value in USD
29
- * @public
30
- */
31
- export declare function calculateNotionalValue(size: number, price: number): number;
32
- /**
33
- * Calculate unrealized PnL.
34
- *
35
- * @param entryPrice - Position entry price
36
- * @param currentPrice - Current market price
37
- * @param size - Position size (positive for long, negative for short)
38
- * @returns Unrealized PnL in USD
39
- * @public
40
- */
41
- export declare function calculateUnrealizedPnl(entryPrice: number, currentPrice: number, size: number): number;
42
- /**
43
- * Calculate return on equity (ROE) percentage.
44
- *
45
- * @param pnl - Profit/loss in USD
46
- * @param margin - Initial margin in USD
47
- * @returns ROE as percentage (e.g., 10 for 10%)
48
- * @public
21
+ * @deprecated Use `calculateSize`. Removed in the next major.
49
22
  */
50
- export declare function calculateRoe(pnl: number, margin: number): number;
51
- /**
52
- * Calculate required margin for a position.
53
- *
54
- * @param notionalValue - Position notional value in USD
55
- * @param leverage - Position leverage
56
- * @returns Required margin in USD
57
- * @public
58
- */
59
- export declare function calculateRequiredMargin(notionalValue: number, leverage: number): number;
23
+ export declare const calculatePositionSize: typeof calculateSize;
60
24
  /**
61
25
  * Estimate trading fees.
62
26
  *
@@ -76,33 +40,6 @@ export declare function estimateFees(sizeUsd: number, feeRate: number): number;
76
40
  * @public
77
41
  */
78
42
  export declare function applySlippage(price: number, slippagePercent: number, isBuy: boolean): number;
79
- /**
80
- * Distance from the current price to the liquidation price, as a percentage of
81
- * the current price.
82
- *
83
- * @param liquidationPrice - The position's liquidation price
84
- * @param currentPrice - Current market price
85
- * @returns Absolute distance as a percentage, or 0 when current price is zero
86
- * @public
87
- */
88
- export declare function liquidationDistancePercent(params: {
89
- liquidationPrice: number;
90
- currentPrice: number;
91
- }): number;
92
- /**
93
- * Effective leverage of an open position.
94
- *
95
- * leverage = positionValueUsd / marginUsd
96
- *
97
- * @param positionValueUsd - Position notional value in USD
98
- * @param marginUsd - Margin backing the position in USD
99
- * @returns Effective leverage, or 0 when margin is zero
100
- * @public
101
- */
102
- export declare function effectiveLeverage(params: {
103
- positionValueUsd: number;
104
- marginUsd: number;
105
- }): number;
106
43
  /**
107
44
  * Signed expected PnL for a trigger price — see {@link calculateExpectedPnl}.
108
45
  *
@@ -127,7 +64,7 @@ export interface ExpectedPnl {
127
64
  */
128
65
  export declare function calculateExpectedPnl(triggerPrice: number, entryPrice: number, leverage: number, isLong: boolean, margin: number): ExpectedPnl | null;
129
66
  /**
130
- * Convert a percentage gain/loss to a target price.
67
+ * Calculate the trigger price that realises a percentage gain/loss.
131
68
  *
132
69
  * @param percent - Target gain/loss percentage (positive = profitable direction)
133
70
  * @param entryPrice - Position entry price
@@ -135,9 +72,13 @@ export declare function calculateExpectedPnl(triggerPrice: number, entryPrice: n
135
72
  * @param isLong - True for long positions, false for short
136
73
  * @public
137
74
  */
138
- export declare function priceFromPercent(percent: number, entryPrice: number, leverage: number, isLong: boolean): number;
75
+ export declare function calculateTriggerPrice(percent: number, entryPrice: number, leverage: number, isLong: boolean): number;
76
+ /**
77
+ * @deprecated Use `calculateTriggerPrice`. Removed in the next major.
78
+ */
79
+ export declare const priceFromPercent: typeof calculateTriggerPrice;
139
80
  /**
140
- * Convert a target price to a percentage gain/loss.
81
+ * Calculate the percentage gain/loss a trigger price realises.
141
82
  *
142
83
  * @param price - Target price
143
84
  * @param entryPrice - Position entry price
@@ -145,7 +86,11 @@ export declare function priceFromPercent(percent: number, entryPrice: number, le
145
86
  * @param isLong - True for long positions, false for short
146
87
  * @public
147
88
  */
148
- export declare function percentFromPrice(price: number, entryPrice: number, leverage: number, isLong: boolean): number;
89
+ export declare function calculateTriggerPercent(price: number, entryPrice: number, leverage: number, isLong: boolean): number;
90
+ /**
91
+ * @deprecated Use `calculateTriggerPercent`. Removed in the next major.
92
+ */
93
+ export declare const percentFromPrice: typeof calculateTriggerPercent;
149
94
  /**
150
95
  * Calculate realized PnL as a percentage of position value at close.
151
96
  *
@@ -208,5 +153,55 @@ interface BuildQuoteInput {
208
153
  * @public
209
154
  */
210
155
  export declare function buildQuote(input: BuildQuoteInput): Quote;
156
+ /**
157
+ * Pick the matching open position for an order's market, if any.
158
+ *
159
+ * @param marketId - The order's `market.id`.
160
+ * @param positions - Open positions list (any market).
161
+ * @public
162
+ */
163
+ export declare function findMatchingPosition(marketId: string, positions: readonly Position[]): Position | undefined;
164
+ /**
165
+ * Resolve the close-size against a position, applying the spec's cap rules:
166
+ * - `orderSize === 0` is the Hyperliquid convention for "close entire
167
+ * position" → close the full position size.
168
+ * - Otherwise cap at the absolute position size; an order larger than the
169
+ * position can only close what's open.
170
+ *
171
+ * Inputs are non-negative magnitudes.
172
+ * @public
173
+ */
174
+ export declare function resolveCloseSize(orderSize: number, positionSize: number): number;
175
+ /**
176
+ * Expected rPnL for a resting limit order against a matching position.
177
+ *
178
+ * Reducing requires opposite sides (long position + SELL, short position +
179
+ * BUY). Same-side orders add to the position and have no rPnL → `null`.
180
+ * Projects `remainingSize`, because an already-filled quantity has realised
181
+ * its PnL at the fill price rather than at this order's limit price. A
182
+ * `remainingSize` of zero leaves nothing to project.
183
+ */
184
+ declare function regularOrderRealizedPnl(order: RegularOrder, position: Position | undefined): number | null;
185
+ /** Project the unfilled closing quantity of an active trigger at its trigger price. */
186
+ declare function triggerOrderRealizedPnl(order: TriggerOrder, position: Position | undefined): number | null;
187
+ /**
188
+ * Expected rPnL an unfilled order would realise against a matching position:
189
+ * a resting limit order prices off its limit, an armed trigger off its trigger
190
+ * price. A TWAP parent carries no single execution price, so it projects
191
+ * nothing.
192
+ *
193
+ * @returns Realised PnL if the order would reduce the position, otherwise
194
+ * `null`.
195
+ * @public
196
+ */
197
+ export declare function estimateRealizedPnl(order: Order, position: Position | undefined): number | null;
198
+ /**
199
+ * @deprecated Use `estimateRealizedPnl`. Removed in the next major.
200
+ */
201
+ export declare const expectedRealizedPnlForOpenOrder: typeof regularOrderRealizedPnl;
202
+ /**
203
+ * @deprecated Use `estimateRealizedPnl`. Removed in the next major.
204
+ */
205
+ export declare const expectedRealizedPnlForTriggerOrder: typeof triggerOrderRealizedPnl;
211
206
  export {};
212
- //# sourceMappingURL=calculations.d.ts.map
207
+ //# sourceMappingURL=order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,KAAK,cAAc,EAInB,KAAK,QAAQ,EAEb,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAA;AAW1B;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,MAAM,CAQR;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,sBAAgB,CAAA;AAElD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,OAAO,GACb,MAAM,CAYR;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GACb,WAAW,GAAG,IAAI,CAapB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAYR;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,8BAAwB,CAAA;AAErD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,MAAM,CAWR;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,gCAA0B,CAAA;AAEvD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAED,mFAAmF;AACnF,UAAU,QAAQ;IAChB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,2FAA2F;IAC3F,cAAc,EAAE,MAAM,CAAA;IACtB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAA;IACZ,mGAAmG;IACnG,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,EAAE,MAAM,GACd,QAAQ,CAgCV;AAaD,uGAAuG;AACvG,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,aAAa,CAAA;IACpB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,IAAI,EAAE,cAAc,EAAE,CAAA;IACtB,kFAAkF;IAClF,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CA+BxD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,QAAQ,GAAG,SAAS,CAEtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR;AAED;;;;;;;;GAQG;AACH,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,GAAG,IAAI,CAyCf;AAED,uFAAuF;AACvF,iBAAS,uBAAuB,CAC9B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,GAAG,IAAI,CA2Cf;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAC7B,MAAM,GAAG,IAAI,CAQf;AAED;;GAEG;AACH,eAAO,MAAM,+BAA+B,gCAA0B,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,kCAAkC,gCAA0B,CAAA"}
@@ -1,13 +1,12 @@
1
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.
2
+ * Display-tier order formulas. Every function takes and gives `number`;
3
+ * exact decimal arithmetic happens internally with `DivBig`.
7
4
  */
8
- import { PerpsErrorCode, } from '@lifi/perps-types';
5
+ import { OrderSide, OrderStatus, PerpsErrorCode, PositionSide, } from '@lifi/perps-types';
6
+ import { areFinite, DivBig } from '../decimal/big.js';
9
7
  import { PerpsError } from '../errors/PerpsError.js';
10
- import { areFinite, DivBig } from './decimal.js';
8
+ import { isActiveOrderStatus, isRegularOrder, isTriggerOrder, } from '../utils/orderClassification.js';
9
+ import { calculateRealizedPnl } from './position.js';
11
10
  /**
12
11
  * Calculate position size in asset units from margin.
13
12
  *
@@ -17,11 +16,11 @@ import { areFinite, DivBig } from './decimal.js';
17
16
  * @returns Position size in asset units
18
17
  * @example
19
18
  * ```ts
20
- * calculatePositionSize(100, 10, 2000) // 0.5 (ETH at $2000)
19
+ * calculateSize(100, 10, 2000) // 0.5 (ETH at $2000)
21
20
  * ```
22
21
  * @public
23
22
  */
24
- export function calculatePositionSize(marginUsd, leverage, price) {
23
+ export function calculateSize(marginUsd, leverage, price) {
25
24
  if (price === 0) {
26
25
  return (marginUsd * leverage) / price;
27
26
  }
@@ -31,68 +30,9 @@ export function calculatePositionSize(marginUsd, leverage, price) {
31
30
  return new DivBig(marginUsd).times(leverage).div(price).toNumber();
32
31
  }
33
32
  /**
34
- * Calculate notional value of a position.
35
- *
36
- * @param size - Position size in asset units
37
- * @param price - Current asset price
38
- * @returns Notional value in USD
39
- * @public
33
+ * @deprecated Use `calculateSize`. Removed in the next major.
40
34
  */
41
- export function calculateNotionalValue(size, price) {
42
- if (!areFinite(size, price)) {
43
- return Number.NaN;
44
- }
45
- return new DivBig(size).abs().times(price).toNumber();
46
- }
47
- /**
48
- * Calculate unrealized PnL.
49
- *
50
- * @param entryPrice - Position entry price
51
- * @param currentPrice - Current market price
52
- * @param size - Position size (positive for long, negative for short)
53
- * @returns Unrealized PnL in USD
54
- * @public
55
- */
56
- export function calculateUnrealizedPnl(entryPrice, currentPrice, size) {
57
- if (!areFinite(entryPrice, currentPrice, size)) {
58
- return Number.NaN;
59
- }
60
- return new DivBig(currentPrice).minus(entryPrice).times(size).toNumber();
61
- }
62
- /**
63
- * Calculate return on equity (ROE) percentage.
64
- *
65
- * @param pnl - Profit/loss in USD
66
- * @param margin - Initial margin in USD
67
- * @returns ROE as percentage (e.g., 10 for 10%)
68
- * @public
69
- */
70
- export function calculateRoe(pnl, margin) {
71
- if (margin === 0) {
72
- return 0;
73
- }
74
- if (!areFinite(pnl, margin)) {
75
- return Number.NaN;
76
- }
77
- return new DivBig(pnl).div(margin).times(100).toNumber();
78
- }
79
- /**
80
- * Calculate required margin for a position.
81
- *
82
- * @param notionalValue - Position notional value in USD
83
- * @param leverage - Position leverage
84
- * @returns Required margin in USD
85
- * @public
86
- */
87
- export function calculateRequiredMargin(notionalValue, leverage) {
88
- if (leverage === 0) {
89
- return notionalValue / leverage;
90
- }
91
- if (!areFinite(notionalValue, leverage)) {
92
- return Number.NaN;
93
- }
94
- return new DivBig(notionalValue).div(leverage).toNumber();
95
- }
35
+ export const calculatePositionSize = calculateSize;
96
36
  /**
97
37
  * Estimate trading fees.
98
38
  *
@@ -129,42 +69,6 @@ export function applySlippage(price, slippagePercent, isBuy) {
129
69
  }
130
70
  return new DivBig(price).div(multiplier).toNumber();
131
71
  }
132
- /**
133
- * Distance from the current price to the liquidation price, as a percentage of
134
- * the current price.
135
- *
136
- * @param liquidationPrice - The position's liquidation price
137
- * @param currentPrice - Current market price
138
- * @returns Absolute distance as a percentage, or 0 when current price is zero
139
- * @public
140
- */
141
- export function liquidationDistancePercent(params) {
142
- const { liquidationPrice, currentPrice } = params;
143
- if (currentPrice === 0) {
144
- return 0;
145
- }
146
- return Math.abs((liquidationPrice - currentPrice) / currentPrice) * 100;
147
- }
148
- /**
149
- * Effective leverage of an open position.
150
- *
151
- * leverage = positionValueUsd / marginUsd
152
- *
153
- * @param positionValueUsd - Position notional value in USD
154
- * @param marginUsd - Margin backing the position in USD
155
- * @returns Effective leverage, or 0 when margin is zero
156
- * @public
157
- */
158
- export function effectiveLeverage(params) {
159
- const { positionValueUsd, marginUsd } = params;
160
- if (marginUsd === 0) {
161
- return 0;
162
- }
163
- if (!areFinite(positionValueUsd, marginUsd)) {
164
- return Number.NaN;
165
- }
166
- return new DivBig(positionValueUsd).div(marginUsd).toNumber();
167
- }
168
72
  /**
169
73
  * Calculate expected gain/loss for a TP or SL trigger price.
170
74
  * Returns signed values — positive means profit, negative means loss.
@@ -191,7 +95,7 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
191
95
  return { amount: amount.toNumber(), percent: percent.toNumber() };
192
96
  }
193
97
  /**
194
- * Convert a percentage gain/loss to a target price.
98
+ * Calculate the trigger price that realises a percentage gain/loss.
195
99
  *
196
100
  * @param percent - Target gain/loss percentage (positive = profitable direction)
197
101
  * @param entryPrice - Position entry price
@@ -199,7 +103,7 @@ export function calculateExpectedPnl(triggerPrice, entryPrice, leverage, isLong,
199
103
  * @param isLong - True for long positions, false for short
200
104
  * @public
201
105
  */
202
- export function priceFromPercent(percent, entryPrice, leverage, isLong) {
106
+ export function calculateTriggerPrice(percent, entryPrice, leverage, isLong) {
203
107
  if (entryPrice === 0 || leverage === 0) {
204
108
  return 0;
205
109
  }
@@ -213,7 +117,11 @@ export function priceFromPercent(percent, entryPrice, leverage, isLong) {
213
117
  return (isLong ? entry.plus(priceDelta) : entry.minus(priceDelta)).toNumber();
214
118
  }
215
119
  /**
216
- * Convert a target price to a percentage gain/loss.
120
+ * @deprecated Use `calculateTriggerPrice`. Removed in the next major.
121
+ */
122
+ export const priceFromPercent = calculateTriggerPrice;
123
+ /**
124
+ * Calculate the percentage gain/loss a trigger price realises.
217
125
  *
218
126
  * @param price - Target price
219
127
  * @param entryPrice - Position entry price
@@ -221,7 +129,7 @@ export function priceFromPercent(percent, entryPrice, leverage, isLong) {
221
129
  * @param isLong - True for long positions, false for short
222
130
  * @public
223
131
  */
224
- export function percentFromPrice(price, entryPrice, leverage, isLong) {
132
+ export function calculateTriggerPercent(price, entryPrice, leverage, isLong) {
225
133
  if (entryPrice === 0 || leverage === 0) {
226
134
  return 0;
227
135
  }
@@ -233,6 +141,10 @@ export function percentFromPrice(price, entryPrice, leverage, isLong) {
233
141
  : new DivBig(entryPrice).minus(price);
234
142
  return priceDiff.div(entryPrice).times(leverage).times(100).toNumber();
235
143
  }
144
+ /**
145
+ * @deprecated Use `calculateTriggerPercent`. Removed in the next major.
146
+ */
147
+ export const percentFromPrice = calculateTriggerPercent;
236
148
  /**
237
149
  * Calculate realized PnL as a percentage of position value at close.
238
150
  *
@@ -345,4 +257,136 @@ export function buildQuote(input) {
345
257
  timestamp: input.timestamp,
346
258
  };
347
259
  }
348
- //# sourceMappingURL=calculations.js.map
260
+ /**
261
+ * Pick the matching open position for an order's market, if any.
262
+ *
263
+ * @param marketId - The order's `market.id`.
264
+ * @param positions - Open positions list (any market).
265
+ * @public
266
+ */
267
+ export function findMatchingPosition(marketId, positions) {
268
+ return positions.find((p) => p.market.id === marketId);
269
+ }
270
+ /**
271
+ * Resolve the close-size against a position, applying the spec's cap rules:
272
+ * - `orderSize === 0` is the Hyperliquid convention for "close entire
273
+ * position" → close the full position size.
274
+ * - Otherwise cap at the absolute position size; an order larger than the
275
+ * position can only close what's open.
276
+ *
277
+ * Inputs are non-negative magnitudes.
278
+ * @public
279
+ */
280
+ export function resolveCloseSize(orderSize, positionSize) {
281
+ if (orderSize === 0) {
282
+ return positionSize;
283
+ }
284
+ return Math.min(orderSize, positionSize);
285
+ }
286
+ /**
287
+ * Expected rPnL for a resting limit order against a matching position.
288
+ *
289
+ * Reducing requires opposite sides (long position + SELL, short position +
290
+ * BUY). Same-side orders add to the position and have no rPnL → `null`.
291
+ * Projects `remainingSize`, because an already-filled quantity has realised
292
+ * its PnL at the fill price rather than at this order's limit price. A
293
+ * `remainingSize` of zero leaves nothing to project.
294
+ */
295
+ function regularOrderRealizedPnl(order, position) {
296
+ if (!position || !isActiveOrderStatus(order.status)) {
297
+ return null;
298
+ }
299
+ const isLong = position.side === PositionSide.LONG;
300
+ const reducesPosition = (isLong && order.side === OrderSide.SELL) ||
301
+ (!isLong && order.side === OrderSide.BUY);
302
+ if (!reducesPosition) {
303
+ return null;
304
+ }
305
+ const limitPrice = Number.parseFloat(order.price ?? '');
306
+ const entryPrice = Number.parseFloat(position.entryPrice);
307
+ const orderSize = Math.abs(Number.parseFloat(order.remainingSize));
308
+ const positionSize = Math.abs(Number.parseFloat(position.size));
309
+ if (!Number.isFinite(limitPrice) ||
310
+ !Number.isFinite(entryPrice) ||
311
+ !Number.isFinite(orderSize) ||
312
+ !Number.isFinite(positionSize) ||
313
+ positionSize <= 0) {
314
+ return null;
315
+ }
316
+ // `resolveCloseSize` reads a zero size as "close the whole position", a
317
+ // convention that belongs to an order's submitted size. `remainingSize` is
318
+ // the unfilled quantity, so zero means nothing is left to fill.
319
+ if (orderSize === 0) {
320
+ return null;
321
+ }
322
+ const closeSize = resolveCloseSize(orderSize, positionSize);
323
+ return calculateRealizedPnl({
324
+ entryPrice,
325
+ closePrice: limitPrice,
326
+ closeSize,
327
+ isLong,
328
+ });
329
+ }
330
+ /** Project the unfilled closing quantity of an active trigger at its trigger price. */
331
+ function triggerOrderRealizedPnl(order, position) {
332
+ if (!position ||
333
+ !isActiveOrderStatus(order.status) ||
334
+ order.status === OrderStatus.PENDING) {
335
+ return null;
336
+ }
337
+ const isLong = position.side === PositionSide.LONG;
338
+ if ((isLong && order.side !== OrderSide.SELL) ||
339
+ (!isLong && order.side !== OrderSide.BUY)) {
340
+ return null;
341
+ }
342
+ const triggerPrice = Number.parseFloat(order.triggerPrice);
343
+ const entryPrice = Number.parseFloat(position.entryPrice);
344
+ const orderSize = Math.abs(Number.parseFloat(order.remainingSize));
345
+ const positionSize = Math.abs(Number.parseFloat(position.size));
346
+ if (!Number.isFinite(triggerPrice) ||
347
+ !Number.isFinite(entryPrice) ||
348
+ !Number.isFinite(orderSize) ||
349
+ !Number.isFinite(positionSize) ||
350
+ positionSize <= 0) {
351
+ return null;
352
+ }
353
+ if (orderSize === 0 &&
354
+ (Number.parseFloat(order.originalSize) !== 0 || !order.reduceOnly)) {
355
+ return null;
356
+ }
357
+ const closeSize = resolveCloseSize(orderSize, positionSize);
358
+ return calculateRealizedPnl({
359
+ entryPrice,
360
+ closePrice: triggerPrice,
361
+ closeSize,
362
+ isLong,
363
+ });
364
+ }
365
+ /**
366
+ * Expected rPnL an unfilled order would realise against a matching position:
367
+ * a resting limit order prices off its limit, an armed trigger off its trigger
368
+ * price. A TWAP parent carries no single execution price, so it projects
369
+ * nothing.
370
+ *
371
+ * @returns Realised PnL if the order would reduce the position, otherwise
372
+ * `null`.
373
+ * @public
374
+ */
375
+ export function estimateRealizedPnl(order, position) {
376
+ if (isTriggerOrder(order)) {
377
+ return triggerOrderRealizedPnl(order, position);
378
+ }
379
+ if (isRegularOrder(order)) {
380
+ return regularOrderRealizedPnl(order, position);
381
+ }
382
+ return null;
383
+ }
384
+ /**
385
+ * @deprecated Use `estimateRealizedPnl`. Removed in the next major.
386
+ */
387
+ export const expectedRealizedPnlForOpenOrder = regularOrderRealizedPnl;
388
+ /**
389
+ * @deprecated Use `estimateRealizedPnl`. Removed in the next major.
390
+ */
391
+ export const expectedRealizedPnlForTriggerOrder = triggerOrderRealizedPnl;
392
+ //# sourceMappingURL=order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../../src/math/order.ts"],"names":[],"mappings":"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"}