@lifi/perps-sdk 0.0.0-preview-64fca0d

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 (675) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/client/PerpsClient.d.ts +63 -0
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -0
  4. package/dist/cjs/client/PerpsClient.js +269 -0
  5. package/dist/cjs/client/PerpsClient.js.map +1 -0
  6. package/dist/cjs/client/bindProvider.d.ts +3 -0
  7. package/dist/cjs/client/bindProvider.d.ts.map +1 -0
  8. package/dist/cjs/client/bindProvider.js +9 -0
  9. package/dist/cjs/client/bindProvider.js.map +1 -0
  10. package/dist/cjs/client/createPerpsClient.d.ts +10 -0
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -0
  12. package/dist/cjs/client/createPerpsClient.js +54 -0
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -0
  14. package/dist/cjs/client/requireProvider.d.ts +3 -0
  15. package/dist/cjs/client/requireProvider.d.ts.map +1 -0
  16. package/dist/cjs/client/requireProvider.js +16 -0
  17. package/dist/cjs/client/requireProvider.js.map +1 -0
  18. package/dist/cjs/errors/PerpsError.d.ts +8 -0
  19. package/dist/cjs/errors/PerpsError.d.ts.map +1 -0
  20. package/dist/cjs/errors/PerpsError.js +15 -0
  21. package/dist/cjs/errors/PerpsError.js.map +1 -0
  22. package/dist/cjs/errors/constants.d.ts +5 -0
  23. package/dist/cjs/errors/constants.d.ts.map +1 -0
  24. package/dist/cjs/errors/constants.js +9 -0
  25. package/dist/cjs/errors/constants.js.map +1 -0
  26. package/dist/cjs/index.d.ts +78 -0
  27. package/dist/cjs/index.d.ts.map +1 -0
  28. package/dist/cjs/index.js +168 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/package.json +1 -0
  31. package/dist/cjs/registry/assetRegistry.d.ts +11 -0
  32. package/dist/cjs/registry/assetRegistry.d.ts.map +1 -0
  33. package/dist/cjs/registry/assetRegistry.js +39 -0
  34. package/dist/cjs/registry/assetRegistry.js.map +1 -0
  35. package/dist/cjs/registry/marketRegistry.d.ts +13 -0
  36. package/dist/cjs/registry/marketRegistry.d.ts.map +1 -0
  37. package/dist/cjs/registry/marketRegistry.js +58 -0
  38. package/dist/cjs/registry/marketRegistry.js.map +1 -0
  39. package/dist/cjs/registry/referenceDataRegistry.d.ts +20 -0
  40. package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -0
  41. package/dist/cjs/registry/referenceDataRegistry.js +59 -0
  42. package/dist/cjs/registry/referenceDataRegistry.js.map +1 -0
  43. package/dist/cjs/services/createAction.d.ts +13 -0
  44. package/dist/cjs/services/createAction.d.ts.map +1 -0
  45. package/dist/cjs/services/createAction.js +17 -0
  46. package/dist/cjs/services/createAction.js.map +1 -0
  47. package/dist/cjs/services/executeAction.d.ts +13 -0
  48. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  49. package/dist/cjs/services/executeAction.js +18 -0
  50. package/dist/cjs/services/executeAction.js.map +1 -0
  51. package/dist/cjs/services/getAccount.d.ts +10 -0
  52. package/dist/cjs/services/getAccount.d.ts.map +1 -0
  53. package/dist/cjs/services/getAccount.js +8 -0
  54. package/dist/cjs/services/getAccount.js.map +1 -0
  55. package/dist/cjs/services/getActivity.d.ts +15 -0
  56. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  57. package/dist/cjs/services/getActivity.js +15 -0
  58. package/dist/cjs/services/getActivity.js.map +1 -0
  59. package/dist/cjs/services/getAssets.d.ts +8 -0
  60. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  61. package/dist/cjs/services/getAssets.js +11 -0
  62. package/dist/cjs/services/getAssets.js.map +1 -0
  63. package/dist/cjs/services/getFills.d.ts +14 -0
  64. package/dist/cjs/services/getFills.d.ts.map +1 -0
  65. package/dist/cjs/services/getFills.js +14 -0
  66. package/dist/cjs/services/getFills.js.map +1 -0
  67. package/dist/cjs/services/getMarket.d.ts +9 -0
  68. package/dist/cjs/services/getMarket.d.ts.map +1 -0
  69. package/dist/cjs/services/getMarket.js +13 -0
  70. package/dist/cjs/services/getMarket.js.map +1 -0
  71. package/dist/cjs/services/getMarkets.d.ts +9 -0
  72. package/dist/cjs/services/getMarkets.d.ts.map +1 -0
  73. package/dist/cjs/services/getMarkets.js +12 -0
  74. package/dist/cjs/services/getMarkets.js.map +1 -0
  75. package/dist/cjs/services/getMeta.d.ts +5 -0
  76. package/dist/cjs/services/getMeta.d.ts.map +1 -0
  77. package/dist/cjs/services/getMeta.js +8 -0
  78. package/dist/cjs/services/getMeta.js.map +1 -0
  79. package/dist/cjs/services/getOhlcv.d.ts +13 -0
  80. package/dist/cjs/services/getOhlcv.d.ts.map +1 -0
  81. package/dist/cjs/services/getOhlcv.js +16 -0
  82. package/dist/cjs/services/getOhlcv.js.map +1 -0
  83. package/dist/cjs/services/getOrder.d.ts +11 -0
  84. package/dist/cjs/services/getOrder.d.ts.map +1 -0
  85. package/dist/cjs/services/getOrder.js +8 -0
  86. package/dist/cjs/services/getOrder.js.map +1 -0
  87. package/dist/cjs/services/getOrderbook.d.ts +10 -0
  88. package/dist/cjs/services/getOrderbook.d.ts.map +1 -0
  89. package/dist/cjs/services/getOrderbook.js +13 -0
  90. package/dist/cjs/services/getOrderbook.js.map +1 -0
  91. package/dist/cjs/services/getOrders.d.ts +13 -0
  92. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  93. package/dist/cjs/services/getOrders.js +13 -0
  94. package/dist/cjs/services/getOrders.js.map +1 -0
  95. package/dist/cjs/services/getPositions.d.ts +13 -0
  96. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  97. package/dist/cjs/services/getPositions.js +13 -0
  98. package/dist/cjs/services/getPositions.js.map +1 -0
  99. package/dist/cjs/services/getPrices.d.ts +9 -0
  100. package/dist/cjs/services/getPrices.d.ts.map +1 -0
  101. package/dist/cjs/services/getPrices.js +12 -0
  102. package/dist/cjs/services/getPrices.js.map +1 -0
  103. package/dist/cjs/services/getProviders.d.ts +5 -0
  104. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  105. package/dist/cjs/services/getProviders.js +8 -0
  106. package/dist/cjs/services/getProviders.js.map +1 -0
  107. package/dist/cjs/services/getQuote.d.ts +12 -0
  108. package/dist/cjs/services/getQuote.d.ts.map +1 -0
  109. package/dist/cjs/services/getQuote.js +13 -0
  110. package/dist/cjs/services/getQuote.js.map +1 -0
  111. package/dist/cjs/services/getTermsAcceptance.d.ts +6 -0
  112. package/dist/cjs/services/getTermsAcceptance.d.ts.map +1 -0
  113. package/dist/cjs/services/getTermsAcceptance.js +9 -0
  114. package/dist/cjs/services/getTermsAcceptance.js.map +1 -0
  115. package/dist/cjs/services/resolveQuote.d.ts +6 -0
  116. package/dist/cjs/services/resolveQuote.d.ts.map +1 -0
  117. package/dist/cjs/services/resolveQuote.js +36 -0
  118. package/dist/cjs/services/resolveQuote.js.map +1 -0
  119. package/dist/cjs/services/resolveSubscribeQuote.d.ts +6 -0
  120. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -0
  121. package/dist/cjs/services/resolveSubscribeQuote.js +63 -0
  122. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -0
  123. package/dist/cjs/storage/parseStoredRecord.d.ts +4 -0
  124. package/dist/cjs/storage/parseStoredRecord.d.ts.map +1 -0
  125. package/dist/cjs/storage/parseStoredRecord.js +26 -0
  126. package/dist/cjs/storage/parseStoredRecord.js.map +1 -0
  127. package/dist/cjs/storage/storage.d.ts +4 -0
  128. package/dist/cjs/storage/storage.d.ts.map +1 -0
  129. package/dist/cjs/storage/storage.js +47 -0
  130. package/dist/cjs/storage/storage.js.map +1 -0
  131. package/dist/cjs/storage/types.d.ts +6 -0
  132. package/dist/cjs/storage/types.d.ts.map +1 -0
  133. package/dist/cjs/storage/types.js +3 -0
  134. package/dist/cjs/storage/types.js.map +1 -0
  135. package/dist/cjs/transport/fetchWithRetry.d.ts +8 -0
  136. package/dist/cjs/transport/fetchWithRetry.d.ts.map +1 -0
  137. package/dist/cjs/transport/fetchWithRetry.js +81 -0
  138. package/dist/cjs/transport/fetchWithRetry.js.map +1 -0
  139. package/dist/cjs/transport/request.d.ts +8 -0
  140. package/dist/cjs/transport/request.d.ts.map +1 -0
  141. package/dist/cjs/transport/request.js +75 -0
  142. package/dist/cjs/transport/request.js.map +1 -0
  143. package/dist/cjs/transport/retryPolicy.d.ts +37 -0
  144. package/dist/cjs/transport/retryPolicy.d.ts.map +1 -0
  145. package/dist/cjs/transport/retryPolicy.js +79 -0
  146. package/dist/cjs/transport/retryPolicy.js.map +1 -0
  147. package/dist/cjs/types/api.d.ts +85 -0
  148. package/dist/cjs/types/api.d.ts.map +1 -0
  149. package/dist/cjs/types/api.js +3 -0
  150. package/dist/cjs/types/api.js.map +1 -0
  151. package/dist/cjs/types/config.d.ts +26 -0
  152. package/dist/cjs/types/config.d.ts.map +1 -0
  153. package/dist/cjs/types/config.js +3 -0
  154. package/dist/cjs/types/config.js.map +1 -0
  155. package/dist/cjs/types/provider.d.ts +84 -0
  156. package/dist/cjs/types/provider.d.ts.map +1 -0
  157. package/dist/cjs/types/provider.js +3 -0
  158. package/dist/cjs/types/provider.js.map +1 -0
  159. package/dist/cjs/utils/accountSummary.d.ts +3 -0
  160. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  161. package/dist/cjs/utils/accountSummary.js +25 -0
  162. package/dist/cjs/utils/accountSummary.js.map +1 -0
  163. package/dist/cjs/utils/assertNever.d.ts +2 -0
  164. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  165. package/dist/cjs/utils/assertNever.js +7 -0
  166. package/dist/cjs/utils/assertNever.js.map +1 -0
  167. package/dist/cjs/utils/calculations.d.ts +51 -0
  168. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  169. package/dist/cjs/utils/calculations.js +149 -0
  170. package/dist/cjs/utils/calculations.js.map +1 -0
  171. package/dist/cjs/utils/depositChain.d.ts +6 -0
  172. package/dist/cjs/utils/depositChain.d.ts.map +1 -0
  173. package/dist/cjs/utils/depositChain.js +13 -0
  174. package/dist/cjs/utils/depositChain.js.map +1 -0
  175. package/dist/cjs/utils/explorer.d.ts +9 -0
  176. package/dist/cjs/utils/explorer.d.ts.map +1 -0
  177. package/dist/cjs/utils/explorer.js +23 -0
  178. package/dist/cjs/utils/explorer.js.map +1 -0
  179. package/dist/cjs/utils/fillClassification.d.ts +3 -0
  180. package/dist/cjs/utils/fillClassification.d.ts.map +1 -0
  181. package/dist/cjs/utils/fillClassification.js +37 -0
  182. package/dist/cjs/utils/fillClassification.js.map +1 -0
  183. package/dist/cjs/utils/format.d.ts +13 -0
  184. package/dist/cjs/utils/format.d.ts.map +1 -0
  185. package/dist/cjs/utils/format.js +117 -0
  186. package/dist/cjs/utils/format.js.map +1 -0
  187. package/dist/cjs/utils/orderClassification.d.ts +10 -0
  188. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  189. package/dist/cjs/utils/orderClassification.js +49 -0
  190. package/dist/cjs/utils/orderClassification.js.map +1 -0
  191. package/dist/cjs/utils/orderMath.d.ts +6 -0
  192. package/dist/cjs/utils/orderMath.d.ts.map +1 -0
  193. package/dist/cjs/utils/orderMath.js +71 -0
  194. package/dist/cjs/utils/orderMath.js.map +1 -0
  195. package/dist/cjs/utils/parse.d.ts +2 -0
  196. package/dist/cjs/utils/parse.d.ts.map +1 -0
  197. package/dist/cjs/utils/parse.js +14 -0
  198. package/dist/cjs/utils/parse.js.map +1 -0
  199. package/dist/cjs/utils/positionMath.d.ts +32 -0
  200. package/dist/cjs/utils/positionMath.d.ts.map +1 -0
  201. package/dist/cjs/utils/positionMath.js +52 -0
  202. package/dist/cjs/utils/positionMath.js.map +1 -0
  203. package/dist/cjs/utils/signTypedData.d.ts +5 -0
  204. package/dist/cjs/utils/signTypedData.d.ts.map +1 -0
  205. package/dist/cjs/utils/signTypedData.js +23 -0
  206. package/dist/cjs/utils/signTypedData.js.map +1 -0
  207. package/dist/cjs/utils/sleep.d.ts +2 -0
  208. package/dist/cjs/utils/sleep.d.ts.map +1 -0
  209. package/dist/cjs/utils/sleep.js +6 -0
  210. package/dist/cjs/utils/sleep.js.map +1 -0
  211. package/dist/cjs/utils/units.d.ts +3 -0
  212. package/dist/cjs/utils/units.d.ts.map +1 -0
  213. package/dist/cjs/utils/units.js +18 -0
  214. package/dist/cjs/utils/units.js.map +1 -0
  215. package/dist/cjs/utils/validation.d.ts +2 -0
  216. package/dist/cjs/utils/validation.d.ts.map +1 -0
  217. package/dist/cjs/utils/validation.js +16 -0
  218. package/dist/cjs/utils/validation.js.map +1 -0
  219. package/dist/cjs/version.d.ts +3 -0
  220. package/dist/cjs/version.d.ts.map +1 -0
  221. package/dist/cjs/version.js +6 -0
  222. package/dist/cjs/version.js.map +1 -0
  223. package/dist/cjs/websocket/PerpsWsClient.d.ts +27 -0
  224. package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -0
  225. package/dist/cjs/websocket/PerpsWsClient.js +84 -0
  226. package/dist/cjs/websocket/PerpsWsClient.js.map +1 -0
  227. package/dist/cjs/websocket/ReconnectingWebSocket.d.ts +52 -0
  228. package/dist/cjs/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  229. package/dist/cjs/websocket/ReconnectingWebSocket.js +213 -0
  230. package/dist/cjs/websocket/ReconnectingWebSocket.js.map +1 -0
  231. package/dist/cjs/websocket/WsProviderBase.d.ts +31 -0
  232. package/dist/cjs/websocket/WsProviderBase.d.ts.map +1 -0
  233. package/dist/cjs/websocket/WsProviderBase.js +197 -0
  234. package/dist/cjs/websocket/WsProviderBase.js.map +1 -0
  235. package/dist/cjs/websocket/cachePromise.d.ts +2 -0
  236. package/dist/cjs/websocket/cachePromise.d.ts.map +1 -0
  237. package/dist/cjs/websocket/cachePromise.js +18 -0
  238. package/dist/cjs/websocket/cachePromise.js.map +1 -0
  239. package/dist/cjs/websocket/types.d.ts +15 -0
  240. package/dist/cjs/websocket/types.d.ts.map +1 -0
  241. package/dist/cjs/websocket/types.js +3 -0
  242. package/dist/cjs/websocket/types.js.map +1 -0
  243. package/dist/cjs/websocket/wsLog.d.ts +10 -0
  244. package/dist/cjs/websocket/wsLog.d.ts.map +1 -0
  245. package/dist/cjs/websocket/wsLog.js +31 -0
  246. package/dist/cjs/websocket/wsLog.js.map +1 -0
  247. package/dist/esm/client/PerpsClient.d.ts +285 -0
  248. package/dist/esm/client/PerpsClient.d.ts.map +1 -0
  249. package/dist/esm/client/PerpsClient.js +498 -0
  250. package/dist/esm/client/PerpsClient.js.map +1 -0
  251. package/dist/esm/client/bindProvider.d.ts +13 -0
  252. package/dist/esm/client/bindProvider.d.ts.map +1 -0
  253. package/dist/esm/client/bindProvider.js +16 -0
  254. package/dist/esm/client/bindProvider.js.map +1 -0
  255. package/dist/esm/client/createPerpsClient.d.ts +37 -0
  256. package/dist/esm/client/createPerpsClient.d.ts.map +1 -0
  257. package/dist/esm/client/createPerpsClient.js +76 -0
  258. package/dist/esm/client/createPerpsClient.js.map +1 -0
  259. package/dist/esm/client/requireProvider.d.ts +12 -0
  260. package/dist/esm/client/requireProvider.d.ts.map +1 -0
  261. package/dist/esm/client/requireProvider.js +22 -0
  262. package/dist/esm/client/requireProvider.js.map +1 -0
  263. package/dist/esm/errors/PerpsError.d.ts +16 -0
  264. package/dist/esm/errors/PerpsError.d.ts.map +1 -0
  265. package/dist/esm/errors/PerpsError.js +19 -0
  266. package/dist/esm/errors/PerpsError.js.map +1 -0
  267. package/dist/esm/errors/constants.d.ts +11 -0
  268. package/dist/esm/errors/constants.d.ts.map +1 -0
  269. package/dist/esm/errors/constants.js +12 -0
  270. package/dist/esm/errors/constants.js.map +1 -0
  271. package/dist/esm/index.d.ts +86 -0
  272. package/dist/esm/index.d.ts.map +1 -0
  273. package/dist/esm/index.js +63 -0
  274. package/dist/esm/index.js.map +1 -0
  275. package/dist/esm/package.json +1 -0
  276. package/dist/esm/registry/assetRegistry.d.ts +25 -0
  277. package/dist/esm/registry/assetRegistry.d.ts.map +1 -0
  278. package/dist/esm/registry/assetRegistry.js +48 -0
  279. package/dist/esm/registry/assetRegistry.js.map +1 -0
  280. package/dist/esm/registry/marketRegistry.d.ts +42 -0
  281. package/dist/esm/registry/marketRegistry.d.ts.map +1 -0
  282. package/dist/esm/registry/marketRegistry.js +81 -0
  283. package/dist/esm/registry/marketRegistry.js.map +1 -0
  284. package/dist/esm/registry/referenceDataRegistry.d.ts +44 -0
  285. package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -0
  286. package/dist/esm/registry/referenceDataRegistry.js +79 -0
  287. package/dist/esm/registry/referenceDataRegistry.js.map +1 -0
  288. package/dist/esm/services/createAction.d.ts +26 -0
  289. package/dist/esm/services/createAction.d.ts.map +1 -0
  290. package/dist/esm/services/createAction.js +22 -0
  291. package/dist/esm/services/createAction.js.map +1 -0
  292. package/dist/esm/services/executeAction.d.ts +26 -0
  293. package/dist/esm/services/executeAction.d.ts.map +1 -0
  294. package/dist/esm/services/executeAction.js +26 -0
  295. package/dist/esm/services/executeAction.js.map +1 -0
  296. package/dist/esm/services/getAccount.d.ts +35 -0
  297. package/dist/esm/services/getAccount.d.ts.map +1 -0
  298. package/dist/esm/services/getAccount.js +25 -0
  299. package/dist/esm/services/getAccount.js.map +1 -0
  300. package/dist/esm/services/getActivity.d.ts +39 -0
  301. package/dist/esm/services/getActivity.d.ts.map +1 -0
  302. package/dist/esm/services/getActivity.js +29 -0
  303. package/dist/esm/services/getActivity.js.map +1 -0
  304. package/dist/esm/services/getAssets.d.ts +27 -0
  305. package/dist/esm/services/getAssets.d.ts.map +1 -0
  306. package/dist/esm/services/getAssets.js +22 -0
  307. package/dist/esm/services/getAssets.js.map +1 -0
  308. package/dist/esm/services/getFills.d.ts +38 -0
  309. package/dist/esm/services/getFills.d.ts.map +1 -0
  310. package/dist/esm/services/getFills.js +28 -0
  311. package/dist/esm/services/getFills.js.map +1 -0
  312. package/dist/esm/services/getMarket.d.ts +34 -0
  313. package/dist/esm/services/getMarket.d.ts.map +1 -0
  314. package/dist/esm/services/getMarket.js +25 -0
  315. package/dist/esm/services/getMarket.js.map +1 -0
  316. package/dist/esm/services/getMarkets.d.ts +28 -0
  317. package/dist/esm/services/getMarkets.d.ts.map +1 -0
  318. package/dist/esm/services/getMarkets.js +22 -0
  319. package/dist/esm/services/getMarkets.js.map +1 -0
  320. package/dist/esm/services/getMeta.d.ts +21 -0
  321. package/dist/esm/services/getMeta.d.ts.map +1 -0
  322. package/dist/esm/services/getMeta.js +21 -0
  323. package/dist/esm/services/getMeta.js.map +1 -0
  324. package/dist/esm/services/getOhlcv.d.ts +36 -0
  325. package/dist/esm/services/getOhlcv.d.ts.map +1 -0
  326. package/dist/esm/services/getOhlcv.js +28 -0
  327. package/dist/esm/services/getOhlcv.js.map +1 -0
  328. package/dist/esm/services/getOrder.d.ts +33 -0
  329. package/dist/esm/services/getOrder.d.ts.map +1 -0
  330. package/dist/esm/services/getOrder.js +22 -0
  331. package/dist/esm/services/getOrder.js.map +1 -0
  332. package/dist/esm/services/getOrderbook.d.ts +24 -0
  333. package/dist/esm/services/getOrderbook.d.ts.map +1 -0
  334. package/dist/esm/services/getOrderbook.js +17 -0
  335. package/dist/esm/services/getOrderbook.js.map +1 -0
  336. package/dist/esm/services/getOrders.d.ts +35 -0
  337. package/dist/esm/services/getOrders.d.ts.map +1 -0
  338. package/dist/esm/services/getOrders.js +26 -0
  339. package/dist/esm/services/getOrders.js.map +1 -0
  340. package/dist/esm/services/getPositions.d.ts +35 -0
  341. package/dist/esm/services/getPositions.d.ts.map +1 -0
  342. package/dist/esm/services/getPositions.js +26 -0
  343. package/dist/esm/services/getPositions.js.map +1 -0
  344. package/dist/esm/services/getPrices.d.ts +21 -0
  345. package/dist/esm/services/getPrices.d.ts.map +1 -0
  346. package/dist/esm/services/getPrices.js +15 -0
  347. package/dist/esm/services/getPrices.js.map +1 -0
  348. package/dist/esm/services/getProviders.d.ts +22 -0
  349. package/dist/esm/services/getProviders.d.ts.map +1 -0
  350. package/dist/esm/services/getProviders.js +22 -0
  351. package/dist/esm/services/getProviders.js.map +1 -0
  352. package/dist/esm/services/getQuote.d.ts +42 -0
  353. package/dist/esm/services/getQuote.d.ts.map +1 -0
  354. package/dist/esm/services/getQuote.js +33 -0
  355. package/dist/esm/services/getQuote.js.map +1 -0
  356. package/dist/esm/services/getTermsAcceptance.d.ts +26 -0
  357. package/dist/esm/services/getTermsAcceptance.d.ts.map +1 -0
  358. package/dist/esm/services/getTermsAcceptance.js +26 -0
  359. package/dist/esm/services/getTermsAcceptance.js.map +1 -0
  360. package/dist/esm/services/resolveQuote.d.ts +26 -0
  361. package/dist/esm/services/resolveQuote.d.ts.map +1 -0
  362. package/dist/esm/services/resolveQuote.js +52 -0
  363. package/dist/esm/services/resolveQuote.js.map +1 -0
  364. package/dist/esm/services/resolveSubscribeQuote.d.ts +31 -0
  365. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -0
  366. package/dist/esm/services/resolveSubscribeQuote.js +84 -0
  367. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -0
  368. package/dist/esm/storage/parseStoredRecord.d.ts +29 -0
  369. package/dist/esm/storage/parseStoredRecord.d.ts.map +1 -0
  370. package/dist/esm/storage/parseStoredRecord.js +47 -0
  371. package/dist/esm/storage/parseStoredRecord.js.map +1 -0
  372. package/dist/esm/storage/storage.d.ts +15 -0
  373. package/dist/esm/storage/storage.d.ts.map +1 -0
  374. package/dist/esm/storage/storage.js +56 -0
  375. package/dist/esm/storage/storage.js.map +1 -0
  376. package/dist/esm/storage/types.d.ts +14 -0
  377. package/dist/esm/storage/types.d.ts.map +1 -0
  378. package/dist/esm/storage/types.js +2 -0
  379. package/dist/esm/storage/types.js.map +1 -0
  380. package/dist/esm/transport/fetchWithRetry.d.ts +22 -0
  381. package/dist/esm/transport/fetchWithRetry.d.ts.map +1 -0
  382. package/dist/esm/transport/fetchWithRetry.js +87 -0
  383. package/dist/esm/transport/fetchWithRetry.js.map +1 -0
  384. package/dist/esm/transport/request.d.ts +25 -0
  385. package/dist/esm/transport/request.d.ts.map +1 -0
  386. package/dist/esm/transport/request.js +82 -0
  387. package/dist/esm/transport/request.js.map +1 -0
  388. package/dist/esm/transport/retryPolicy.d.ts +106 -0
  389. package/dist/esm/transport/retryPolicy.d.ts.map +1 -0
  390. package/dist/esm/transport/retryPolicy.js +99 -0
  391. package/dist/esm/transport/retryPolicy.js.map +1 -0
  392. package/dist/esm/types/api.d.ts +214 -0
  393. package/dist/esm/types/api.d.ts.map +1 -0
  394. package/dist/esm/types/api.js +2 -0
  395. package/dist/esm/types/api.js.map +1 -0
  396. package/dist/esm/types/config.d.ts +70 -0
  397. package/dist/esm/types/config.d.ts.map +1 -0
  398. package/dist/esm/types/config.js +2 -0
  399. package/dist/esm/types/config.js.map +1 -0
  400. package/dist/esm/types/provider.d.ts +330 -0
  401. package/dist/esm/types/provider.d.ts.map +1 -0
  402. package/dist/esm/types/provider.js +2 -0
  403. package/dist/esm/types/provider.js.map +1 -0
  404. package/dist/esm/utils/accountSummary.d.ts +13 -0
  405. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  406. package/dist/esm/utils/accountSummary.js +32 -0
  407. package/dist/esm/utils/accountSummary.js.map +1 -0
  408. package/dist/esm/utils/assertNever.d.ts +20 -0
  409. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  410. package/dist/esm/utils/assertNever.js +22 -0
  411. package/dist/esm/utils/assertNever.js.map +1 -0
  412. package/dist/esm/utils/calculations.d.ts +223 -0
  413. package/dist/esm/utils/calculations.d.ts.map +1 -0
  414. package/dist/esm/utils/calculations.js +291 -0
  415. package/dist/esm/utils/calculations.js.map +1 -0
  416. package/dist/esm/utils/depositChain.d.ts +25 -0
  417. package/dist/esm/utils/depositChain.d.ts.map +1 -0
  418. package/dist/esm/utils/depositChain.js +23 -0
  419. package/dist/esm/utils/depositChain.js.map +1 -0
  420. package/dist/esm/utils/explorer.d.ts +33 -0
  421. package/dist/esm/utils/explorer.d.ts.map +1 -0
  422. package/dist/esm/utils/explorer.js +38 -0
  423. package/dist/esm/utils/explorer.js.map +1 -0
  424. package/dist/esm/utils/fillClassification.d.ts +13 -0
  425. package/dist/esm/utils/fillClassification.d.ts.map +1 -0
  426. package/dist/esm/utils/fillClassification.js +44 -0
  427. package/dist/esm/utils/fillClassification.js.map +1 -0
  428. package/dist/esm/utils/format.d.ts +66 -0
  429. package/dist/esm/utils/format.d.ts.map +1 -0
  430. package/dist/esm/utils/format.js +171 -0
  431. package/dist/esm/utils/format.js.map +1 -0
  432. package/dist/esm/utils/orderClassification.d.ts +47 -0
  433. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  434. package/dist/esm/utils/orderClassification.js +78 -0
  435. package/dist/esm/utils/orderClassification.js.map +1 -0
  436. package/dist/esm/utils/orderMath.d.ts +44 -0
  437. package/dist/esm/utils/orderMath.d.ts.map +1 -0
  438. package/dist/esm/utils/orderMath.js +103 -0
  439. package/dist/esm/utils/orderMath.js.map +1 -0
  440. package/dist/esm/utils/parse.d.ts +22 -0
  441. package/dist/esm/utils/parse.d.ts.map +1 -0
  442. package/dist/esm/utils/parse.js +31 -0
  443. package/dist/esm/utils/parse.js.map +1 -0
  444. package/dist/esm/utils/positionMath.d.ts +107 -0
  445. package/dist/esm/utils/positionMath.d.ts.map +1 -0
  446. package/dist/esm/utils/positionMath.js +119 -0
  447. package/dist/esm/utils/positionMath.js.map +1 -0
  448. package/dist/esm/utils/signTypedData.d.ts +18 -0
  449. package/dist/esm/utils/signTypedData.d.ts.map +1 -0
  450. package/dist/esm/utils/signTypedData.js +32 -0
  451. package/dist/esm/utils/signTypedData.js.map +1 -0
  452. package/dist/esm/utils/sleep.d.ts +7 -0
  453. package/dist/esm/utils/sleep.d.ts.map +1 -0
  454. package/dist/esm/utils/sleep.js +7 -0
  455. package/dist/esm/utils/sleep.js.map +1 -0
  456. package/dist/esm/utils/units.d.ts +27 -0
  457. package/dist/esm/utils/units.d.ts.map +1 -0
  458. package/dist/esm/utils/units.js +38 -0
  459. package/dist/esm/utils/units.js.map +1 -0
  460. package/dist/esm/utils/validation.d.ts +18 -0
  461. package/dist/esm/utils/validation.d.ts.map +1 -0
  462. package/dist/esm/utils/validation.js +29 -0
  463. package/dist/esm/utils/validation.js.map +1 -0
  464. package/dist/esm/version.d.ts +3 -0
  465. package/dist/esm/version.d.ts.map +1 -0
  466. package/dist/esm/version.js +3 -0
  467. package/dist/esm/version.js.map +1 -0
  468. package/dist/esm/websocket/PerpsWsClient.d.ts +100 -0
  469. package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -0
  470. package/dist/esm/websocket/PerpsWsClient.js +121 -0
  471. package/dist/esm/websocket/PerpsWsClient.js.map +1 -0
  472. package/dist/esm/websocket/ReconnectingWebSocket.d.ts +130 -0
  473. package/dist/esm/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  474. package/dist/esm/websocket/ReconnectingWebSocket.js +288 -0
  475. package/dist/esm/websocket/ReconnectingWebSocket.js.map +1 -0
  476. package/dist/esm/websocket/WsProviderBase.d.ts +89 -0
  477. package/dist/esm/websocket/WsProviderBase.d.ts.map +1 -0
  478. package/dist/esm/websocket/WsProviderBase.js +246 -0
  479. package/dist/esm/websocket/WsProviderBase.js.map +1 -0
  480. package/dist/esm/websocket/cachePromise.d.ts +14 -0
  481. package/dist/esm/websocket/cachePromise.d.ts.map +1 -0
  482. package/dist/esm/websocket/cachePromise.js +27 -0
  483. package/dist/esm/websocket/cachePromise.js.map +1 -0
  484. package/dist/esm/websocket/types.d.ts +60 -0
  485. package/dist/esm/websocket/types.d.ts.map +1 -0
  486. package/dist/esm/websocket/types.js +2 -0
  487. package/dist/esm/websocket/types.js.map +1 -0
  488. package/dist/esm/websocket/wsLog.d.ts +50 -0
  489. package/dist/esm/websocket/wsLog.d.ts.map +1 -0
  490. package/dist/esm/websocket/wsLog.js +68 -0
  491. package/dist/esm/websocket/wsLog.js.map +1 -0
  492. package/dist/types/client/PerpsClient.d.ts +285 -0
  493. package/dist/types/client/PerpsClient.d.ts.map +1 -0
  494. package/dist/types/client/bindProvider.d.ts +13 -0
  495. package/dist/types/client/bindProvider.d.ts.map +1 -0
  496. package/dist/types/client/createPerpsClient.d.ts +37 -0
  497. package/dist/types/client/createPerpsClient.d.ts.map +1 -0
  498. package/dist/types/client/requireProvider.d.ts +12 -0
  499. package/dist/types/client/requireProvider.d.ts.map +1 -0
  500. package/dist/types/errors/PerpsError.d.ts +16 -0
  501. package/dist/types/errors/PerpsError.d.ts.map +1 -0
  502. package/dist/types/errors/constants.d.ts +11 -0
  503. package/dist/types/errors/constants.d.ts.map +1 -0
  504. package/dist/types/index.d.ts +86 -0
  505. package/dist/types/index.d.ts.map +1 -0
  506. package/dist/types/registry/assetRegistry.d.ts +25 -0
  507. package/dist/types/registry/assetRegistry.d.ts.map +1 -0
  508. package/dist/types/registry/marketRegistry.d.ts +42 -0
  509. package/dist/types/registry/marketRegistry.d.ts.map +1 -0
  510. package/dist/types/registry/referenceDataRegistry.d.ts +44 -0
  511. package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -0
  512. package/dist/types/services/createAction.d.ts +26 -0
  513. package/dist/types/services/createAction.d.ts.map +1 -0
  514. package/dist/types/services/executeAction.d.ts +26 -0
  515. package/dist/types/services/executeAction.d.ts.map +1 -0
  516. package/dist/types/services/getAccount.d.ts +35 -0
  517. package/dist/types/services/getAccount.d.ts.map +1 -0
  518. package/dist/types/services/getActivity.d.ts +39 -0
  519. package/dist/types/services/getActivity.d.ts.map +1 -0
  520. package/dist/types/services/getAssets.d.ts +27 -0
  521. package/dist/types/services/getAssets.d.ts.map +1 -0
  522. package/dist/types/services/getFills.d.ts +38 -0
  523. package/dist/types/services/getFills.d.ts.map +1 -0
  524. package/dist/types/services/getMarket.d.ts +34 -0
  525. package/dist/types/services/getMarket.d.ts.map +1 -0
  526. package/dist/types/services/getMarkets.d.ts +28 -0
  527. package/dist/types/services/getMarkets.d.ts.map +1 -0
  528. package/dist/types/services/getMeta.d.ts +21 -0
  529. package/dist/types/services/getMeta.d.ts.map +1 -0
  530. package/dist/types/services/getOhlcv.d.ts +36 -0
  531. package/dist/types/services/getOhlcv.d.ts.map +1 -0
  532. package/dist/types/services/getOrder.d.ts +33 -0
  533. package/dist/types/services/getOrder.d.ts.map +1 -0
  534. package/dist/types/services/getOrderbook.d.ts +24 -0
  535. package/dist/types/services/getOrderbook.d.ts.map +1 -0
  536. package/dist/types/services/getOrders.d.ts +35 -0
  537. package/dist/types/services/getOrders.d.ts.map +1 -0
  538. package/dist/types/services/getPositions.d.ts +35 -0
  539. package/dist/types/services/getPositions.d.ts.map +1 -0
  540. package/dist/types/services/getPrices.d.ts +21 -0
  541. package/dist/types/services/getPrices.d.ts.map +1 -0
  542. package/dist/types/services/getProviders.d.ts +22 -0
  543. package/dist/types/services/getProviders.d.ts.map +1 -0
  544. package/dist/types/services/getQuote.d.ts +42 -0
  545. package/dist/types/services/getQuote.d.ts.map +1 -0
  546. package/dist/types/services/getTermsAcceptance.d.ts +26 -0
  547. package/dist/types/services/getTermsAcceptance.d.ts.map +1 -0
  548. package/dist/types/services/resolveQuote.d.ts +26 -0
  549. package/dist/types/services/resolveQuote.d.ts.map +1 -0
  550. package/dist/types/services/resolveSubscribeQuote.d.ts +31 -0
  551. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -0
  552. package/dist/types/storage/parseStoredRecord.d.ts +29 -0
  553. package/dist/types/storage/parseStoredRecord.d.ts.map +1 -0
  554. package/dist/types/storage/storage.d.ts +15 -0
  555. package/dist/types/storage/storage.d.ts.map +1 -0
  556. package/dist/types/storage/types.d.ts +14 -0
  557. package/dist/types/storage/types.d.ts.map +1 -0
  558. package/dist/types/transport/fetchWithRetry.d.ts +22 -0
  559. package/dist/types/transport/fetchWithRetry.d.ts.map +1 -0
  560. package/dist/types/transport/request.d.ts +25 -0
  561. package/dist/types/transport/request.d.ts.map +1 -0
  562. package/dist/types/transport/retryPolicy.d.ts +106 -0
  563. package/dist/types/transport/retryPolicy.d.ts.map +1 -0
  564. package/dist/types/types/api.d.ts +214 -0
  565. package/dist/types/types/api.d.ts.map +1 -0
  566. package/dist/types/types/config.d.ts +70 -0
  567. package/dist/types/types/config.d.ts.map +1 -0
  568. package/dist/types/types/provider.d.ts +330 -0
  569. package/dist/types/types/provider.d.ts.map +1 -0
  570. package/dist/types/utils/accountSummary.d.ts +13 -0
  571. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  572. package/dist/types/utils/assertNever.d.ts +20 -0
  573. package/dist/types/utils/assertNever.d.ts.map +1 -0
  574. package/dist/types/utils/calculations.d.ts +223 -0
  575. package/dist/types/utils/calculations.d.ts.map +1 -0
  576. package/dist/types/utils/depositChain.d.ts +25 -0
  577. package/dist/types/utils/depositChain.d.ts.map +1 -0
  578. package/dist/types/utils/explorer.d.ts +33 -0
  579. package/dist/types/utils/explorer.d.ts.map +1 -0
  580. package/dist/types/utils/fillClassification.d.ts +13 -0
  581. package/dist/types/utils/fillClassification.d.ts.map +1 -0
  582. package/dist/types/utils/format.d.ts +66 -0
  583. package/dist/types/utils/format.d.ts.map +1 -0
  584. package/dist/types/utils/orderClassification.d.ts +47 -0
  585. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  586. package/dist/types/utils/orderMath.d.ts +44 -0
  587. package/dist/types/utils/orderMath.d.ts.map +1 -0
  588. package/dist/types/utils/parse.d.ts +22 -0
  589. package/dist/types/utils/parse.d.ts.map +1 -0
  590. package/dist/types/utils/positionMath.d.ts +107 -0
  591. package/dist/types/utils/positionMath.d.ts.map +1 -0
  592. package/dist/types/utils/signTypedData.d.ts +18 -0
  593. package/dist/types/utils/signTypedData.d.ts.map +1 -0
  594. package/dist/types/utils/sleep.d.ts +7 -0
  595. package/dist/types/utils/sleep.d.ts.map +1 -0
  596. package/dist/types/utils/units.d.ts +27 -0
  597. package/dist/types/utils/units.d.ts.map +1 -0
  598. package/dist/types/utils/validation.d.ts +18 -0
  599. package/dist/types/utils/validation.d.ts.map +1 -0
  600. package/dist/types/version.d.ts +3 -0
  601. package/dist/types/version.d.ts.map +1 -0
  602. package/dist/types/websocket/PerpsWsClient.d.ts +100 -0
  603. package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -0
  604. package/dist/types/websocket/ReconnectingWebSocket.d.ts +130 -0
  605. package/dist/types/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  606. package/dist/types/websocket/WsProviderBase.d.ts +89 -0
  607. package/dist/types/websocket/WsProviderBase.d.ts.map +1 -0
  608. package/dist/types/websocket/cachePromise.d.ts +14 -0
  609. package/dist/types/websocket/cachePromise.d.ts.map +1 -0
  610. package/dist/types/websocket/types.d.ts +60 -0
  611. package/dist/types/websocket/types.d.ts.map +1 -0
  612. package/dist/types/websocket/wsLog.d.ts +50 -0
  613. package/dist/types/websocket/wsLog.d.ts.map +1 -0
  614. package/package.json +63 -0
  615. package/src/client/PerpsClient.ts +686 -0
  616. package/src/client/bindProvider.ts +24 -0
  617. package/src/client/createPerpsClient.ts +100 -0
  618. package/src/client/requireProvider.ts +29 -0
  619. package/src/errors/PerpsError.ts +23 -0
  620. package/src/errors/constants.ts +10 -0
  621. package/src/index.ts +215 -0
  622. package/src/registry/assetRegistry.ts +62 -0
  623. package/src/registry/marketRegistry.ts +100 -0
  624. package/src/registry/referenceDataRegistry.ts +95 -0
  625. package/src/services/createAction.ts +52 -0
  626. package/src/services/executeAction.ts +56 -0
  627. package/src/services/getAccount.ts +46 -0
  628. package/src/services/getActivity.ts +57 -0
  629. package/src/services/getAssets.ts +38 -0
  630. package/src/services/getFills.ts +55 -0
  631. package/src/services/getMarket.ts +52 -0
  632. package/src/services/getMarkets.ts +40 -0
  633. package/src/services/getMeta.ts +32 -0
  634. package/src/services/getOhlcv.ts +52 -0
  635. package/src/services/getOrder.ts +44 -0
  636. package/src/services/getOrderbook.ts +37 -0
  637. package/src/services/getOrders.ts +51 -0
  638. package/src/services/getPositions.ts +51 -0
  639. package/src/services/getPrices.ts +33 -0
  640. package/src/services/getProviders.ts +33 -0
  641. package/src/services/getQuote.ts +58 -0
  642. package/src/services/getTermsAcceptance.ts +34 -0
  643. package/src/services/resolveQuote.ts +90 -0
  644. package/src/services/resolveSubscribeQuote.ts +107 -0
  645. package/src/storage/parseStoredRecord.ts +55 -0
  646. package/src/storage/storage.ts +60 -0
  647. package/src/storage/types.ts +13 -0
  648. package/src/transport/fetchWithRetry.ts +116 -0
  649. package/src/transport/request.ts +123 -0
  650. package/src/transport/retryPolicy.ts +202 -0
  651. package/src/types/api.ts +239 -0
  652. package/src/types/config.ts +79 -0
  653. package/src/types/provider.ts +429 -0
  654. package/src/utils/accountSummary.ts +46 -0
  655. package/src/utils/assertNever.ts +23 -0
  656. package/src/utils/calculations.ts +407 -0
  657. package/src/utils/depositChain.ts +37 -0
  658. package/src/utils/explorer.ts +51 -0
  659. package/src/utils/fillClassification.ts +51 -0
  660. package/src/utils/format.ts +212 -0
  661. package/src/utils/orderClassification.ts +96 -0
  662. package/src/utils/orderMath.ts +134 -0
  663. package/src/utils/parse.ts +30 -0
  664. package/src/utils/positionMath.ts +149 -0
  665. package/src/utils/signTypedData.ts +41 -0
  666. package/src/utils/sleep.ts +7 -0
  667. package/src/utils/units.ts +39 -0
  668. package/src/utils/validation.ts +38 -0
  669. package/src/version.ts +2 -0
  670. package/src/websocket/PerpsWsClient.ts +204 -0
  671. package/src/websocket/ReconnectingWebSocket.ts +353 -0
  672. package/src/websocket/WsProviderBase.ts +333 -0
  673. package/src/websocket/cachePromise.ts +30 -0
  674. package/src/websocket/types.ts +75 -0
  675. package/src/websocket/wsLog.ts +82 -0
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Options shared by the human-facing display formatters.
3
+ *
4
+ * @public
5
+ */
6
+ export interface FormatOptions {
7
+ /** Fixed number of decimal places. Defaults are per-formatter. */
8
+ decimals?: number
9
+ /** Rendered when the value is null/undefined/NaN/non-finite. Defaults to `'—'`. */
10
+ placeholder?: string
11
+ /** BCP 47 locale controlling digit grouping and separators (e.g. `'en-US'`). */
12
+ locale?: string
13
+ }
14
+
15
+ const DEFAULT_PLACEHOLDER = '—'
16
+
17
+ type FormatInput = number | string | null | undefined
18
+
19
+ /**
20
+ * Tolerantly coerce a display input to a finite number.
21
+ *
22
+ * Strips `$`, `,`, and surrounding whitespace from strings. Returns `null`
23
+ * when the value is null/undefined/blank or does not resolve to a finite
24
+ * number, so callers can render a placeholder instead of `$0.00` or `$NaN`.
25
+ */
26
+ function toFiniteNumber(value: FormatInput): number | null {
27
+ let n: number
28
+ if (typeof value === 'string') {
29
+ const cleaned = value.replace(/[$,\s]/g, '')
30
+ if (!cleaned) {
31
+ return null
32
+ }
33
+ n = Number(cleaned)
34
+ } else if (typeof value === 'number') {
35
+ n = value
36
+ } else {
37
+ return null
38
+ }
39
+ return Number.isFinite(n) ? n : null
40
+ }
41
+
42
+ /**
43
+ * Round to `decimals` then split into a sign (`'-'` or `''`) and the
44
+ * locale-formatted absolute body. Deriving the sign from the rounded value
45
+ * avoids `-$0.00` for values that round to zero.
46
+ */
47
+ function signAndBody(
48
+ n: number,
49
+ decimals: number,
50
+ locale: string | undefined,
51
+ grouping: boolean
52
+ ): { sign: '-' | ''; body: string } {
53
+ const rounded = Number(n.toFixed(decimals))
54
+ const sign = rounded < 0 ? '-' : ''
55
+ const body = Math.abs(rounded).toLocaleString(locale, {
56
+ minimumFractionDigits: decimals,
57
+ maximumFractionDigits: decimals,
58
+ useGrouping: grouping,
59
+ })
60
+ return { sign, body }
61
+ }
62
+
63
+ /**
64
+ * Auto-detect a sensible number of decimal places from a value's magnitude:
65
+ * `>=1` → 2, `>=0.1` → 4, `>=0.01` → 5, otherwise 6.
66
+ */
67
+ function autoDecimals(abs: number): number {
68
+ if (abs >= 1) {
69
+ return 2
70
+ }
71
+ if (abs >= 0.1) {
72
+ return 4
73
+ }
74
+ if (abs >= 0.01) {
75
+ return 5
76
+ }
77
+ return 6
78
+ }
79
+
80
+ /**
81
+ * Format a USD value, unsigned: `$1,234.50`, `-$1,500.00`, `$0.00`.
82
+ *
83
+ * Two decimal places with locale digit grouping. Negatives place the `-`
84
+ * before the `$`. Null/undefined/non-finite input renders the placeholder.
85
+ *
86
+ * @public
87
+ */
88
+ export function formatUsd(
89
+ value: FormatInput,
90
+ options: FormatOptions = {}
91
+ ): string {
92
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options
93
+ const n = toFiniteNumber(value)
94
+ if (n === null) {
95
+ return placeholder
96
+ }
97
+ const { sign, body } = signAndBody(n, decimals, locale, true)
98
+ return `${sign}$${body}`
99
+ }
100
+
101
+ /**
102
+ * Format a USD value with an explicit sign: `+$1.43`, `-$1.43`, `$0.00`.
103
+ *
104
+ * The sign is derived after rounding, so sub-cent magnitudes render `$0.00`
105
+ * (no spurious `+`/`-`). Null/undefined/non-finite input renders the
106
+ * placeholder.
107
+ *
108
+ * @public
109
+ */
110
+ export function formatSignedUsd(
111
+ value: FormatInput,
112
+ options: FormatOptions = {}
113
+ ): string {
114
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options
115
+ const n = toFiniteNumber(value)
116
+ if (n === null) {
117
+ return placeholder
118
+ }
119
+ const rounded = Number(n.toFixed(decimals))
120
+ const sign = rounded > 0 ? '+' : rounded < 0 ? '-' : ''
121
+ const body = Math.abs(rounded).toLocaleString(locale, {
122
+ minimumFractionDigits: decimals,
123
+ maximumFractionDigits: decimals,
124
+ useGrouping: true,
125
+ })
126
+ return `${sign}$${body}`
127
+ }
128
+
129
+ /**
130
+ * Format a percentage with an explicit sign and no grouping: `+1.43%`,
131
+ * `-1.43%`, `0.00%`.
132
+ *
133
+ * The sign is derived after rounding, so sub-threshold magnitudes render
134
+ * `0.00%`. Null/undefined/non-finite input renders the placeholder.
135
+ *
136
+ * @public
137
+ */
138
+ export function formatSignedPercent(
139
+ value: FormatInput,
140
+ options: FormatOptions = {}
141
+ ): string {
142
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER, locale } = options
143
+ const n = toFiniteNumber(value)
144
+ if (n === null) {
145
+ return placeholder
146
+ }
147
+ const rounded = Number(n.toFixed(decimals))
148
+ const sign = rounded > 0 ? '+' : rounded < 0 ? '-' : ''
149
+ const body = Math.abs(rounded).toLocaleString(locale, {
150
+ minimumFractionDigits: decimals,
151
+ maximumFractionDigits: decimals,
152
+ useGrouping: false,
153
+ })
154
+ return `${sign}${body}%`
155
+ }
156
+
157
+ /**
158
+ * Format a price, unsigned, with decimals auto-detected from magnitude:
159
+ * `$1,234.50`, `$0.1234`, `-$1,500.00`.
160
+ *
161
+ * Decimals follow {@link autoDecimals} unless `options.decimals` is given.
162
+ * Grouping applies once the absolute value reaches 1000. Negatives place the
163
+ * `-` before the `$`. Null/undefined/non-finite input renders the placeholder.
164
+ *
165
+ * @public
166
+ */
167
+ export function formatPrice(
168
+ value: FormatInput,
169
+ options: FormatOptions = {}
170
+ ): string {
171
+ const { placeholder = DEFAULT_PLACEHOLDER, locale } = options
172
+ const n = toFiniteNumber(value)
173
+ if (n === null) {
174
+ return placeholder
175
+ }
176
+ const abs = Math.abs(n)
177
+ const decimals = options.decimals ?? autoDecimals(abs)
178
+ const { sign, body } = signAndBody(n, decimals, locale, abs >= 1000)
179
+ return `${sign}$${body}`
180
+ }
181
+
182
+ /**
183
+ * Format a USD value compactly with a `B`/`M`/`K` suffix: `$1.23B`, `$45.6M`,
184
+ * `$789.0K`, `$12.34`.
185
+ *
186
+ * Negatives place the `-` before the `$`. Null/undefined/non-finite input
187
+ * renders the placeholder.
188
+ *
189
+ * @public
190
+ */
191
+ export function formatCompactUsd(
192
+ value: FormatInput,
193
+ options: FormatOptions = {}
194
+ ): string {
195
+ const { decimals = 2, placeholder = DEFAULT_PLACEHOLDER } = options
196
+ const n = toFiniteNumber(value)
197
+ if (n === null) {
198
+ return placeholder
199
+ }
200
+ const sign = n < 0 ? '-' : ''
201
+ const abs = Math.abs(n)
202
+ if (abs >= 1_000_000_000) {
203
+ return `${sign}$${(abs / 1_000_000_000).toFixed(decimals)}B`
204
+ }
205
+ if (abs >= 1_000_000) {
206
+ return `${sign}$${(abs / 1_000_000).toFixed(decimals)}M`
207
+ }
208
+ if (abs >= 1_000) {
209
+ return `${sign}$${(abs / 1_000).toFixed(decimals)}K`
210
+ }
211
+ return `${sign}$${abs.toFixed(decimals)}`
212
+ }
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Order classification utilities.
3
+ *
4
+ * Type guards and classifiers that operate on SDK types to determine
5
+ * order categories (TP/SL, open/close). These use the OrderType enum
6
+ * for classification — no string matching.
7
+ */
8
+
9
+ import type { OpenOrder } from '@lifi/perps-types'
10
+ import {
11
+ FillClassification,
12
+ OrderSide,
13
+ OrderStatus,
14
+ OrderType,
15
+ } from '@lifi/perps-types'
16
+ import { stringToFloat } from './parse.js'
17
+
18
+ export { FillClassification }
19
+
20
+ const TP_TYPES = new Set<OrderType>([
21
+ OrderType.TAKE_PROFIT_MARKET,
22
+ OrderType.TAKE_PROFIT_LIMIT,
23
+ ])
24
+
25
+ const SL_TYPES = new Set<OrderType>([
26
+ OrderType.STOP_MARKET,
27
+ OrderType.STOP_LIMIT,
28
+ ])
29
+
30
+ /**
31
+ * Check if an open order is a Take Profit trigger order.
32
+ * @public
33
+ */
34
+ export function isTakeProfitOrder(order: Pick<OpenOrder, 'type'>): boolean {
35
+ return TP_TYPES.has(order.type)
36
+ }
37
+
38
+ /**
39
+ * Check if an open order is a Stop Loss trigger order.
40
+ * @public
41
+ */
42
+ export function isStopLossOrder(order: Pick<OpenOrder, 'type'>): boolean {
43
+ return SL_TYPES.has(order.type)
44
+ }
45
+
46
+ /**
47
+ * Check if an open order is a TP or SL trigger order.
48
+ * @public
49
+ */
50
+ export function isTpSlOrder(order: Pick<OpenOrder, 'type'>): boolean {
51
+ return TP_TYPES.has(order.type) || SL_TYPES.has(order.type)
52
+ }
53
+
54
+ /**
55
+ * Order statuses representing an order still resting on the book (visible
56
+ * in `openOrders` / `triggerOrders`). Anything not in this set is terminal —
57
+ * filled, cancelled, rejected, expired — and should be evicted from the
58
+ * cached orders list when seen in a WS update.
59
+ * @public
60
+ */
61
+ export const ACTIVE_ORDER_STATUSES: ReadonlySet<OrderStatus> = new Set([
62
+ OrderStatus.OPEN,
63
+ OrderStatus.PENDING,
64
+ OrderStatus.PARTIALLY_FILLED,
65
+ OrderStatus.TRIGGERED,
66
+ ])
67
+
68
+ /**
69
+ * Whether `status` is one of {@link ACTIVE_ORDER_STATUSES}.
70
+ *
71
+ * @public
72
+ */
73
+ export function isActiveOrderStatus(status: OrderStatus): boolean {
74
+ return ACTIVE_ORDER_STATUSES.has(status)
75
+ }
76
+
77
+ /**
78
+ * Classify a fill as open or close based on realizedPnl.
79
+ * @deprecated Use `Fill.classification` instead — it uses startPosition
80
+ * for accurate open/increase/reduce/close/reverse classification.
81
+ * @public
82
+ */
83
+ export function classifyFill(
84
+ side: OrderSide,
85
+ realizedPnl: string | null | undefined
86
+ ): FillClassification {
87
+ const isClose = realizedPnl != null && stringToFloat(realizedPnl) !== 0
88
+ if (side === OrderSide.BUY) {
89
+ return isClose
90
+ ? FillClassification.CLOSED_SHORT
91
+ : FillClassification.OPENED_LONG
92
+ }
93
+ return isClose
94
+ ? FillClassification.CLOSED_LONG
95
+ : FillClassification.OPENED_SHORT
96
+ }
@@ -0,0 +1,134 @@
1
+ import {
2
+ type OpenOrder,
3
+ OrderSide,
4
+ type Position,
5
+ PositionSide,
6
+ type TriggerOrder,
7
+ } from '@lifi/perps-types'
8
+ import { realizedPnlOnClose } from './positionMath.js'
9
+
10
+ /**
11
+ * Pick the matching open position for an order's market, if any.
12
+ *
13
+ * @param marketId - The order's `market.id`.
14
+ * @param positions - Open positions list (any market).
15
+ * @public
16
+ */
17
+ export function findMatchingPosition(
18
+ marketId: string,
19
+ positions: readonly Position[]
20
+ ): Position | undefined {
21
+ return positions.find((p) => p.market.id === marketId)
22
+ }
23
+
24
+ /**
25
+ * Resolve the close-size against a position, applying the spec's cap rules:
26
+ * - `orderSize === 0` is the Hyperliquid convention for "close entire
27
+ * position" → close the full position size.
28
+ * - Otherwise cap at the absolute position size; an order larger than the
29
+ * position can only close what's open.
30
+ *
31
+ * Inputs are non-negative magnitudes.
32
+ * @public
33
+ */
34
+ export function resolveCloseSize(
35
+ orderSize: number,
36
+ positionSize: number
37
+ ): number {
38
+ if (orderSize === 0) {
39
+ return positionSize
40
+ }
41
+ return Math.min(orderSize, positionSize)
42
+ }
43
+
44
+ /**
45
+ * Expected rPnL for a resting limit order against a matching position.
46
+ *
47
+ * Reducing requires opposite sides (long position + SELL, short position +
48
+ * BUY). Same-side orders add to the position and have no rPnL → `null`.
49
+ *
50
+ * @returns Realised PnL if the order would reduce the position, otherwise
51
+ * `null`.
52
+ * @public
53
+ */
54
+ export function expectedRealizedPnlForOpenOrder(
55
+ order: OpenOrder,
56
+ position: Position | undefined
57
+ ): number | null {
58
+ if (!position) {
59
+ return null
60
+ }
61
+
62
+ const isLong = position.side === PositionSide.LONG
63
+ const reducesPosition =
64
+ (isLong && order.side === OrderSide.SELL) ||
65
+ (!isLong && order.side === OrderSide.BUY)
66
+ if (!reducesPosition) {
67
+ return null
68
+ }
69
+
70
+ const limitPrice = Number.parseFloat(order.price)
71
+ const entryPrice = Number.parseFloat(position.entryPrice)
72
+ const orderSize = Math.abs(Number.parseFloat(order.size))
73
+ const positionSize = Math.abs(Number.parseFloat(position.size))
74
+ if (
75
+ !Number.isFinite(limitPrice) ||
76
+ !Number.isFinite(entryPrice) ||
77
+ !Number.isFinite(orderSize) ||
78
+ !Number.isFinite(positionSize) ||
79
+ positionSize <= 0
80
+ ) {
81
+ return null
82
+ }
83
+
84
+ const closeSize = resolveCloseSize(orderSize, positionSize)
85
+ return realizedPnlOnClose({
86
+ entryPrice,
87
+ closePrice: limitPrice,
88
+ closeSize,
89
+ isLong,
90
+ })
91
+ }
92
+
93
+ /**
94
+ * Expected rPnL for a TP/SL trigger order against a matching position.
95
+ *
96
+ * A trigger order is by construction a closing leg — its direction is the
97
+ * opposite of the position's. With no matching position there is nothing to
98
+ * close, so rPnL is `null`. The trigger price (always present on the SDK
99
+ * `TriggerOrder` shape) is used as the rPnL price; the optional `limitPrice`
100
+ * for STOP_LIMIT / TAKE_PROFIT_LIMIT is the post-trigger limit, not the rPnL
101
+ * price.
102
+ * @public
103
+ */
104
+ export function expectedRealizedPnlForTriggerOrder(
105
+ order: TriggerOrder,
106
+ position: Position | undefined
107
+ ): number | null {
108
+ if (!position) {
109
+ return null
110
+ }
111
+
112
+ const isLong = position.side === PositionSide.LONG
113
+ const triggerPrice = Number.parseFloat(order.triggerPrice)
114
+ const entryPrice = Number.parseFloat(position.entryPrice)
115
+ const orderSize = Math.abs(Number.parseFloat(order.size))
116
+ const positionSize = Math.abs(Number.parseFloat(position.size))
117
+ if (
118
+ !Number.isFinite(triggerPrice) ||
119
+ !Number.isFinite(entryPrice) ||
120
+ !Number.isFinite(orderSize) ||
121
+ !Number.isFinite(positionSize) ||
122
+ positionSize <= 0
123
+ ) {
124
+ return null
125
+ }
126
+
127
+ const closeSize = resolveCloseSize(orderSize, positionSize)
128
+ return realizedPnlOnClose({
129
+ entryPrice,
130
+ closePrice: triggerPrice,
131
+ closeSize,
132
+ isLong,
133
+ })
134
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Parse a string to a float, stripping common formatting artefacts.
3
+ *
4
+ * Handles:
5
+ * - Currency prefixes/suffixes ($, USD, etc.)
6
+ * - Explicit sign prefixes (+/-)
7
+ * - Thousands separators (commas)
8
+ * - Percentage suffixes (%)
9
+ * - Whitespace
10
+ *
11
+ * @param value - The string to parse
12
+ * @returns Parsed number; `0` for empty/blank input, `NaN` when a non-empty
13
+ * string contains no parseable number
14
+ * @example
15
+ * ```ts
16
+ * stringToFloat('$1,234.50') // 1234.5
17
+ * stringToFloat('') // 0
18
+ * ```
19
+ * @public
20
+ */
21
+ export function stringToFloat(value: string): number {
22
+ if (!value) {
23
+ return 0
24
+ }
25
+ const cleaned = value.trim().replace(/[$%]/g, '').replace(/,/g, '').trim()
26
+ if (!cleaned) {
27
+ return 0
28
+ }
29
+ return parseFloat(cleaned)
30
+ }
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Pure-function helpers for predicting how a perp position changes after a
3
+ * fill.
4
+ *
5
+ * Sign convention: long = +1, short = -1. Sizes passed to these helpers are
6
+ * always non-negative magnitudes; direction is carried by `isLong`.
7
+ */
8
+
9
+ /**
10
+ * Direction sign for a position.
11
+ *
12
+ * @param isLong - True for long positions, false for short.
13
+ * @returns +1 for long, -1 for short.
14
+ * @public
15
+ */
16
+ export function directionSign(isLong: boolean): 1 | -1 {
17
+ return isLong ? 1 : -1
18
+ }
19
+
20
+ /**
21
+ * Estimated liquidation price for an isolated-margin position, parameterised
22
+ * by the venue's maintenance margin rate.
23
+ *
24
+ * Standard isolated-margin model (new position, no existing exposure):
25
+ * margin_per_unit = entryPrice / leverage
26
+ * maintenance_per_unit = entryPrice * mmr
27
+ * margin_available = margin_per_unit - maintenance_per_unit
28
+ * liq_price = entryPrice - side * margin_available / (1 - mmr * side)
29
+ *
30
+ * For existing positions, prefer `Position.liquidationPrice` from the venue.
31
+ *
32
+ * @param maintenanceMarginRate - Venue maintenance margin rate as a fraction
33
+ * (e.g. 0.01 = 1%).
34
+ * @returns Estimated liquidation price, or undefined if the inputs cannot
35
+ * produce one (zero leverage, degenerate denominator).
36
+ * @public
37
+ */
38
+ export function estimateIsolatedLiquidationPrice(params: {
39
+ entryPrice: number
40
+ leverage: number
41
+ isLong: boolean
42
+ maintenanceMarginRate: number
43
+ }): number | undefined {
44
+ const { entryPrice, leverage, isLong, maintenanceMarginRate } = params
45
+ if (leverage === 0) {
46
+ return undefined
47
+ }
48
+ const side = directionSign(isLong)
49
+ const denominator = 1 - maintenanceMarginRate * side
50
+ if (denominator === 0) {
51
+ return undefined
52
+ }
53
+ const marginAvailable = entryPrice * (1 / leverage - maintenanceMarginRate)
54
+ return entryPrice - (side * marginAvailable) / denominator
55
+ }
56
+
57
+ /**
58
+ * Predicted average entry price after adding to an existing position.
59
+ *
60
+ * Weighted average of the current entry and the new fill price, weighted by
61
+ * the size of each leg in coin units. Both legs assumed in the same direction
62
+ * (this helper is for adding to, not flipping, a position).
63
+ *
64
+ * @param currentSize - Existing position size in coin units (>= 0).
65
+ * @param currentEntry - Existing position's average entry price.
66
+ * @param addSize - Size being added in coin units (>= 0).
67
+ * @param fillPrice - Price the new size is expected to fill at (mid for
68
+ * market, limitPrice for limit orders).
69
+ * @returns The new weighted-average entry price, or undefined if the inputs
70
+ * cannot produce a valid average (zero combined size, non-finite values).
71
+ * @public
72
+ */
73
+ export function predictAverageEntryPrice(params: {
74
+ currentSize: number
75
+ currentEntry: number
76
+ addSize: number
77
+ fillPrice: number
78
+ }): number | undefined {
79
+ const { currentSize, currentEntry, addSize, fillPrice } = params
80
+ const totalSize = currentSize + addSize
81
+ if (totalSize <= 0) {
82
+ return undefined
83
+ }
84
+ if (!Number.isFinite(currentEntry) || !Number.isFinite(fillPrice)) {
85
+ return undefined
86
+ }
87
+ return (currentSize * currentEntry + addSize * fillPrice) / totalSize
88
+ }
89
+
90
+ /**
91
+ * Predicted effective leverage after adding margin and notional.
92
+ *
93
+ * leverage = totalNotional / totalMargin. The caller computes notional from
94
+ * size and price (`calculateNotionalValue`) and supplies the additional
95
+ * margin the user is about to put up.
96
+ *
97
+ * @returns The new effective leverage, or undefined if total margin is
98
+ * non-positive.
99
+ * @public
100
+ */
101
+ export function predictNewLeverage(params: {
102
+ currentNotional: number
103
+ currentMargin: number
104
+ addNotional: number
105
+ addMargin: number
106
+ }): number | undefined {
107
+ const { currentNotional, currentMargin, addNotional, addMargin } = params
108
+ const totalMargin = currentMargin + addMargin
109
+ if (totalMargin <= 0) {
110
+ return undefined
111
+ }
112
+ return (currentNotional + addNotional) / totalMargin
113
+ }
114
+
115
+ /**
116
+ * Predicted unrealised PnL at the current mark price.
117
+ *
118
+ * `pnl = (markPrice - entryPrice) * size * directionSign(isLong)`
119
+ *
120
+ * @param size - Position size as a non-negative magnitude.
121
+ * @public
122
+ */
123
+ export function predictUnrealizedPnl(params: {
124
+ entryPrice: number
125
+ markPrice: number
126
+ size: number
127
+ isLong: boolean
128
+ }): number {
129
+ const { entryPrice, markPrice, size, isLong } = params
130
+ return (markPrice - entryPrice) * size * directionSign(isLong)
131
+ }
132
+
133
+ /**
134
+ * Realised PnL on the portion of a position being closed.
135
+ *
136
+ * `rPnl = (closePrice - entryPrice) * closeSize * directionSign(isLong)`
137
+ *
138
+ * @param closeSize - Size being closed as a non-negative magnitude.
139
+ * @public
140
+ */
141
+ export function realizedPnlOnClose(params: {
142
+ entryPrice: number
143
+ closePrice: number
144
+ closeSize: number
145
+ isLong: boolean
146
+ }): number {
147
+ const { entryPrice, closePrice, closeSize, isLong } = params
148
+ return (closePrice - entryPrice) * closeSize * directionSign(isLong)
149
+ }
@@ -0,0 +1,41 @@
1
+ import type { PerpsTypedData } from '@lifi/perps-types'
2
+ import type { Account, Hex, WalletClient } from 'viem'
3
+ import { privateKeyToAccount } from 'viem/accounts'
4
+
5
+ /**
6
+ * Sign EIP-712 typed data with a raw private key (agent keypair).
7
+ *
8
+ * @public
9
+ */
10
+ export async function signTypedData(
11
+ privateKey: Hex,
12
+ typedData: PerpsTypedData
13
+ ): Promise<Hex> {
14
+ return privateKeyToAccount(privateKey).signTypedData({
15
+ domain: typedData.domain,
16
+ types: typedData.types,
17
+ primaryType: typedData.primaryType,
18
+ message: typedData.message,
19
+ })
20
+ }
21
+
22
+ /**
23
+ * Sign EIP-712 typed data with an externally-provided WalletClient. Works
24
+ * with browser wallets (wagmi), private keys, mnemonics — any viem
25
+ * WalletClient. Used by provider plugins to sign the EIP712 USER arm with the
26
+ * end-user's wallet.
27
+ *
28
+ * @public
29
+ */
30
+ export async function signTypedDataWithSigner(
31
+ userWallet: WalletClient<any, any, Account>,
32
+ typedData: PerpsTypedData
33
+ ): Promise<Hex> {
34
+ return userWallet.signTypedData({
35
+ account: userWallet.account,
36
+ domain: typedData.domain,
37
+ types: typedData.types,
38
+ primaryType: typedData.primaryType,
39
+ message: typedData.message,
40
+ })
41
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Resolve after `ms` milliseconds.
3
+ *
4
+ * @internal
5
+ */
6
+ export const sleep = (ms: number): Promise<void> =>
7
+ new Promise((resolve) => setTimeout(resolve, ms))
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Token unit conversion utilities.
3
+ */
4
+
5
+ import { formatUnits } from 'viem'
6
+
7
+ /**
8
+ * Convert a base-unit amount (bigint string) to a human-readable decimal string.
9
+ *
10
+ * @param amount - Amount in base units (e.g. "1000000" for 1 USDC)
11
+ * @param decimals - Token decimals (e.g. 6 for USDC)
12
+ * @returns Decimal string (e.g. "1.0"); `"0"` when `amount` is not a valid
13
+ * bigint
14
+ * @example
15
+ * ```ts
16
+ * fromBaseUnits('1000000', 6) // '1'
17
+ * ```
18
+ * @public
19
+ */
20
+ export function fromBaseUnits(amount: string, decimals: number): string {
21
+ try {
22
+ return formatUnits(BigInt(amount), decimals)
23
+ } catch {
24
+ return '0'
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Convert a base-unit amount to a number.
30
+ *
31
+ * @param amount - Amount in base units
32
+ * @param decimals - Token decimals
33
+ * @returns Numeric value, or 0 if parsing fails
34
+ * @public
35
+ */
36
+ export function fromBaseUnitsNumber(amount: string, decimals: number): number {
37
+ const value = Number(fromBaseUnits(amount, decimals))
38
+ return Number.isFinite(value) ? value : 0
39
+ }