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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +176 -0
  3. package/dist/cjs/LighterProvider.d.ts +20 -0
  4. package/dist/cjs/LighterProvider.d.ts.map +1 -0
  5. package/dist/cjs/LighterProvider.js +592 -0
  6. package/dist/cjs/LighterProvider.js.map +1 -0
  7. package/dist/cjs/accountConfig.d.ts +3 -0
  8. package/dist/cjs/accountConfig.d.ts.map +1 -0
  9. package/dist/cjs/accountConfig.js +69 -0
  10. package/dist/cjs/accountConfig.js.map +1 -0
  11. package/dist/cjs/accountSummary.d.ts +3 -0
  12. package/dist/cjs/accountSummary.d.ts.map +1 -0
  13. package/dist/cjs/accountSummary.js +8 -0
  14. package/dist/cjs/accountSummary.js.map +1 -0
  15. package/dist/cjs/constants.d.ts +14 -0
  16. package/dist/cjs/constants.d.ts.map +1 -0
  17. package/dist/cjs/constants.js +18 -0
  18. package/dist/cjs/constants.js.map +1 -0
  19. package/dist/cjs/index.d.ts +11 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +35 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/package.json +1 -0
  24. package/dist/cjs/signers/LighterKeyStore.d.ts +18 -0
  25. package/dist/cjs/signers/LighterKeyStore.d.ts.map +1 -0
  26. package/dist/cjs/signers/LighterKeyStore.js +54 -0
  27. package/dist/cjs/signers/LighterKeyStore.js.map +1 -0
  28. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts +56 -0
  29. package/dist/cjs/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
  30. package/dist/cjs/signers/LighterReadOnlyTokenManager.js +127 -0
  31. package/dist/cjs/signers/LighterReadOnlyTokenManager.js.map +1 -0
  32. package/dist/cjs/signers/LighterSigner.d.ts +41 -0
  33. package/dist/cjs/signers/LighterSigner.d.ts.map +1 -0
  34. package/dist/cjs/signers/LighterSigner.js +175 -0
  35. package/dist/cjs/signers/LighterSigner.js.map +1 -0
  36. package/dist/cjs/signers/createAuthToken.d.ts +12 -0
  37. package/dist/cjs/signers/createAuthToken.d.ts.map +1 -0
  38. package/dist/cjs/signers/createAuthToken.js +28 -0
  39. package/dist/cjs/signers/createAuthToken.js.map +1 -0
  40. package/dist/cjs/signers/index.d.ts +11 -0
  41. package/dist/cjs/signers/index.d.ts.map +1 -0
  42. package/dist/cjs/signers/index.js +19 -0
  43. package/dist/cjs/signers/index.js.map +1 -0
  44. package/dist/cjs/signers/signActions.d.ts +15 -0
  45. package/dist/cjs/signers/signActions.d.ts.map +1 -0
  46. package/dist/cjs/signers/signActions.js +142 -0
  47. package/dist/cjs/signers/signActions.js.map +1 -0
  48. package/dist/cjs/signers/wasmLoader.d.ts +42 -0
  49. package/dist/cjs/signers/wasmLoader.d.ts.map +1 -0
  50. package/dist/cjs/signers/wasmLoader.js +166 -0
  51. package/dist/cjs/signers/wasmLoader.js.map +1 -0
  52. package/dist/cjs/types/account.d.ts +97 -0
  53. package/dist/cjs/types/account.d.ts.map +1 -0
  54. package/dist/cjs/types/account.js +3 -0
  55. package/dist/cjs/types/account.js.map +1 -0
  56. package/dist/cjs/types/action.d.ts +72 -0
  57. package/dist/cjs/types/action.d.ts.map +1 -0
  58. package/dist/cjs/types/action.js +23 -0
  59. package/dist/cjs/types/action.js.map +1 -0
  60. package/dist/cjs/types/activity.d.ts +73 -0
  61. package/dist/cjs/types/activity.d.ts.map +1 -0
  62. package/dist/cjs/types/activity.js +3 -0
  63. package/dist/cjs/types/activity.js.map +1 -0
  64. package/dist/cjs/types/asset.d.ts +122 -0
  65. package/dist/cjs/types/asset.d.ts.map +1 -0
  66. package/dist/cjs/types/asset.js +3 -0
  67. package/dist/cjs/types/asset.js.map +1 -0
  68. package/dist/cjs/types/fill.d.ts +29 -0
  69. package/dist/cjs/types/fill.d.ts.map +1 -0
  70. package/dist/cjs/types/fill.js +3 -0
  71. package/dist/cjs/types/fill.js.map +1 -0
  72. package/dist/cjs/types/index.d.ts +9 -0
  73. package/dist/cjs/types/index.d.ts.map +1 -0
  74. package/dist/cjs/types/index.js +25 -0
  75. package/dist/cjs/types/index.js.map +1 -0
  76. package/dist/cjs/types/order.d.ts +57 -0
  77. package/dist/cjs/types/order.d.ts.map +1 -0
  78. package/dist/cjs/types/order.js +3 -0
  79. package/dist/cjs/types/order.js.map +1 -0
  80. package/dist/cjs/types/submit.d.ts +39 -0
  81. package/dist/cjs/types/submit.d.ts.map +1 -0
  82. package/dist/cjs/types/submit.js +3 -0
  83. package/dist/cjs/types/submit.js.map +1 -0
  84. package/dist/cjs/types/ws.d.ts +84 -0
  85. package/dist/cjs/types/ws.d.ts.map +1 -0
  86. package/dist/cjs/types/ws.js +3 -0
  87. package/dist/cjs/types/ws.js.map +1 -0
  88. package/dist/cjs/utils/activityCursor.d.ts +12 -0
  89. package/dist/cjs/utils/activityCursor.d.ts.map +1 -0
  90. package/dist/cjs/utils/activityCursor.js +85 -0
  91. package/dist/cjs/utils/activityCursor.js.map +1 -0
  92. package/dist/cjs/utils/apiClient.d.ts +26 -0
  93. package/dist/cjs/utils/apiClient.d.ts.map +1 -0
  94. package/dist/cjs/utils/apiClient.js +94 -0
  95. package/dist/cjs/utils/apiClient.js.map +1 -0
  96. package/dist/cjs/utils/fetchDetailedAccount.d.ts +5 -0
  97. package/dist/cjs/utils/fetchDetailedAccount.d.ts.map +1 -0
  98. package/dist/cjs/utils/fetchDetailedAccount.js +22 -0
  99. package/dist/cjs/utils/fetchDetailedAccount.js.map +1 -0
  100. package/dist/cjs/utils/index.d.ts +16 -0
  101. package/dist/cjs/utils/index.d.ts.map +1 -0
  102. package/dist/cjs/utils/index.js +45 -0
  103. package/dist/cjs/utils/index.js.map +1 -0
  104. package/dist/cjs/utils/lighterAsset.d.ts +3 -0
  105. package/dist/cjs/utils/lighterAsset.d.ts.map +1 -0
  106. package/dist/cjs/utils/lighterAsset.js +12 -0
  107. package/dist/cjs/utils/lighterAsset.js.map +1 -0
  108. package/dist/cjs/utils/liquidation.d.ts +4 -0
  109. package/dist/cjs/utils/liquidation.d.ts.map +1 -0
  110. package/dist/cjs/utils/liquidation.js +16 -0
  111. package/dist/cjs/utils/liquidation.js.map +1 -0
  112. package/dist/cjs/utils/mapFill.d.ts +4 -0
  113. package/dist/cjs/utils/mapFill.d.ts.map +1 -0
  114. package/dist/cjs/utils/mapFill.js +61 -0
  115. package/dist/cjs/utils/mapFill.js.map +1 -0
  116. package/dist/cjs/utils/mapOpenPositions.d.ts +4 -0
  117. package/dist/cjs/utils/mapOpenPositions.d.ts.map +1 -0
  118. package/dist/cjs/utils/mapOpenPositions.js +9 -0
  119. package/dist/cjs/utils/mapOpenPositions.js.map +1 -0
  120. package/dist/cjs/utils/mapOrder.d.ts +15 -0
  121. package/dist/cjs/utils/mapOrder.d.ts.map +1 -0
  122. package/dist/cjs/utils/mapOrder.js +164 -0
  123. package/dist/cjs/utils/mapOrder.js.map +1 -0
  124. package/dist/cjs/utils/mapPosition.d.ts +4 -0
  125. package/dist/cjs/utils/mapPosition.d.ts.map +1 -0
  126. package/dist/cjs/utils/mapPosition.js +30 -0
  127. package/dist/cjs/utils/mapPosition.js.map +1 -0
  128. package/dist/cjs/utils/ohlcvInterval.d.ts +2 -0
  129. package/dist/cjs/utils/ohlcvInterval.d.ts.map +1 -0
  130. package/dist/cjs/utils/ohlcvInterval.js +26 -0
  131. package/dist/cjs/utils/ohlcvInterval.js.map +1 -0
  132. package/dist/cjs/utils/orderFormatting.d.ts +4 -0
  133. package/dist/cjs/utils/orderFormatting.d.ts.map +1 -0
  134. package/dist/cjs/utils/orderFormatting.js +23 -0
  135. package/dist/cjs/utils/orderFormatting.js.map +1 -0
  136. package/dist/cjs/utils/time.d.ts +3 -0
  137. package/dist/cjs/utils/time.d.ts.map +1 -0
  138. package/dist/cjs/utils/time.js +8 -0
  139. package/dist/cjs/utils/time.js.map +1 -0
  140. package/dist/cjs/utils/wireEncoding.d.ts +9 -0
  141. package/dist/cjs/utils/wireEncoding.d.ts.map +1 -0
  142. package/dist/cjs/utils/wireEncoding.js +87 -0
  143. package/dist/cjs/utils/wireEncoding.js.map +1 -0
  144. package/dist/cjs/websocket/LighterWsProvider.d.ts +45 -0
  145. package/dist/cjs/websocket/LighterWsProvider.d.ts.map +1 -0
  146. package/dist/cjs/websocket/LighterWsProvider.js +396 -0
  147. package/dist/cjs/websocket/LighterWsProvider.js.map +1 -0
  148. package/dist/esm/LighterProvider.d.ts +105 -0
  149. package/dist/esm/LighterProvider.d.ts.map +1 -0
  150. package/dist/esm/LighterProvider.js +684 -0
  151. package/dist/esm/LighterProvider.js.map +1 -0
  152. package/dist/esm/accountConfig.d.ts +14 -0
  153. package/dist/esm/accountConfig.d.ts.map +1 -0
  154. package/dist/esm/accountConfig.js +135 -0
  155. package/dist/esm/accountConfig.js.map +1 -0
  156. package/dist/esm/accountSummary.d.ts +12 -0
  157. package/dist/esm/accountSummary.d.ts.map +1 -0
  158. package/dist/esm/accountSummary.js +14 -0
  159. package/dist/esm/accountSummary.js.map +1 -0
  160. package/dist/esm/constants.d.ts +74 -0
  161. package/dist/esm/constants.d.ts.map +1 -0
  162. package/dist/esm/constants.js +73 -0
  163. package/dist/esm/constants.js.map +1 -0
  164. package/dist/esm/index.d.ts +22 -0
  165. package/dist/esm/index.d.ts.map +1 -0
  166. package/dist/esm/index.js +22 -0
  167. package/dist/esm/index.js.map +1 -0
  168. package/dist/esm/package.json +1 -0
  169. package/dist/esm/signers/LighterKeyStore.d.ts +24 -0
  170. package/dist/esm/signers/LighterKeyStore.d.ts.map +1 -0
  171. package/dist/esm/signers/LighterKeyStore.js +55 -0
  172. package/dist/esm/signers/LighterKeyStore.js.map +1 -0
  173. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts +157 -0
  174. package/dist/esm/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
  175. package/dist/esm/signers/LighterReadOnlyTokenManager.js +194 -0
  176. package/dist/esm/signers/LighterReadOnlyTokenManager.js.map +1 -0
  177. package/dist/esm/signers/LighterSigner.d.ts +94 -0
  178. package/dist/esm/signers/LighterSigner.d.ts.map +1 -0
  179. package/dist/esm/signers/LighterSigner.js +228 -0
  180. package/dist/esm/signers/LighterSigner.js.map +1 -0
  181. package/dist/esm/signers/createAuthToken.d.ts +36 -0
  182. package/dist/esm/signers/createAuthToken.d.ts.map +1 -0
  183. package/dist/esm/signers/createAuthToken.js +42 -0
  184. package/dist/esm/signers/createAuthToken.js.map +1 -0
  185. package/dist/esm/signers/index.d.ts +11 -0
  186. package/dist/esm/signers/index.d.ts.map +1 -0
  187. package/dist/esm/signers/index.js +7 -0
  188. package/dist/esm/signers/index.js.map +1 -0
  189. package/dist/esm/signers/signActions.d.ts +54 -0
  190. package/dist/esm/signers/signActions.d.ts.map +1 -0
  191. package/dist/esm/signers/signActions.js +193 -0
  192. package/dist/esm/signers/signActions.js.map +1 -0
  193. package/dist/esm/signers/wasmLoader.d.ts +79 -0
  194. package/dist/esm/signers/wasmLoader.d.ts.map +1 -0
  195. package/dist/esm/signers/wasmLoader.js +180 -0
  196. package/dist/esm/signers/wasmLoader.js.map +1 -0
  197. package/dist/esm/types/account.d.ts +113 -0
  198. package/dist/esm/types/account.d.ts.map +1 -0
  199. package/dist/esm/types/account.js +4 -0
  200. package/dist/esm/types/account.js.map +1 -0
  201. package/dist/esm/types/action.d.ts +146 -0
  202. package/dist/esm/types/action.d.ts.map +1 -0
  203. package/dist/esm/types/action.js +50 -0
  204. package/dist/esm/types/action.js.map +1 -0
  205. package/dist/esm/types/activity.d.ts +83 -0
  206. package/dist/esm/types/activity.d.ts.map +1 -0
  207. package/dist/esm/types/activity.js +4 -0
  208. package/dist/esm/types/activity.js.map +1 -0
  209. package/dist/esm/types/asset.d.ts +134 -0
  210. package/dist/esm/types/asset.d.ts.map +1 -0
  211. package/dist/esm/types/asset.js +3 -0
  212. package/dist/esm/types/asset.js.map +1 -0
  213. package/dist/esm/types/fill.d.ts +31 -0
  214. package/dist/esm/types/fill.d.ts.map +1 -0
  215. package/dist/esm/types/fill.js +3 -0
  216. package/dist/esm/types/fill.js.map +1 -0
  217. package/dist/esm/types/index.d.ts +9 -0
  218. package/dist/esm/types/index.d.ts.map +1 -0
  219. package/dist/esm/types/index.js +12 -0
  220. package/dist/esm/types/index.js.map +1 -0
  221. package/dist/esm/types/order.d.ts +61 -0
  222. package/dist/esm/types/order.d.ts.map +1 -0
  223. package/dist/esm/types/order.js +3 -0
  224. package/dist/esm/types/order.js.map +1 -0
  225. package/dist/esm/types/submit.d.ts +76 -0
  226. package/dist/esm/types/submit.d.ts.map +1 -0
  227. package/dist/esm/types/submit.js +3 -0
  228. package/dist/esm/types/submit.js.map +1 -0
  229. package/dist/esm/types/ws.d.ts +124 -0
  230. package/dist/esm/types/ws.d.ts.map +1 -0
  231. package/dist/esm/types/ws.js +11 -0
  232. package/dist/esm/types/ws.js.map +1 -0
  233. package/dist/esm/utils/activityCursor.d.ts +51 -0
  234. package/dist/esm/utils/activityCursor.d.ts.map +1 -0
  235. package/dist/esm/utils/activityCursor.js +99 -0
  236. package/dist/esm/utils/activityCursor.js.map +1 -0
  237. package/dist/esm/utils/apiClient.d.ts +65 -0
  238. package/dist/esm/utils/apiClient.d.ts.map +1 -0
  239. package/dist/esm/utils/apiClient.js +131 -0
  240. package/dist/esm/utils/apiClient.js.map +1 -0
  241. package/dist/esm/utils/fetchDetailedAccount.d.ts +11 -0
  242. package/dist/esm/utils/fetchDetailedAccount.d.ts.map +1 -0
  243. package/dist/esm/utils/fetchDetailedAccount.js +24 -0
  244. package/dist/esm/utils/fetchDetailedAccount.js.map +1 -0
  245. package/dist/esm/utils/index.d.ts +16 -0
  246. package/dist/esm/utils/index.d.ts.map +1 -0
  247. package/dist/esm/utils/index.js +17 -0
  248. package/dist/esm/utils/index.js.map +1 -0
  249. package/dist/esm/utils/lighterAsset.d.ts +4 -0
  250. package/dist/esm/utils/lighterAsset.d.ts.map +1 -0
  251. package/dist/esm/utils/lighterAsset.js +9 -0
  252. package/dist/esm/utils/lighterAsset.js.map +1 -0
  253. package/dist/esm/utils/liquidation.d.ts +22 -0
  254. package/dist/esm/utils/liquidation.d.ts.map +1 -0
  255. package/dist/esm/utils/liquidation.js +31 -0
  256. package/dist/esm/utils/liquidation.js.map +1 -0
  257. package/dist/esm/utils/mapFill.d.ts +10 -0
  258. package/dist/esm/utils/mapFill.d.ts.map +1 -0
  259. package/dist/esm/utils/mapFill.js +72 -0
  260. package/dist/esm/utils/mapFill.js.map +1 -0
  261. package/dist/esm/utils/mapOpenPositions.d.ts +11 -0
  262. package/dist/esm/utils/mapOpenPositions.d.ts.map +1 -0
  263. package/dist/esm/utils/mapOpenPositions.js +12 -0
  264. package/dist/esm/utils/mapOpenPositions.js.map +1 -0
  265. package/dist/esm/utils/mapOrder.d.ts +72 -0
  266. package/dist/esm/utils/mapOrder.d.ts.map +1 -0
  267. package/dist/esm/utils/mapOrder.js +219 -0
  268. package/dist/esm/utils/mapOrder.js.map +1 -0
  269. package/dist/esm/utils/mapPosition.d.ts +9 -0
  270. package/dist/esm/utils/mapPosition.d.ts.map +1 -0
  271. package/dist/esm/utils/mapPosition.js +34 -0
  272. package/dist/esm/utils/mapPosition.js.map +1 -0
  273. package/dist/esm/utils/ohlcvInterval.d.ts +3 -0
  274. package/dist/esm/utils/ohlcvInterval.d.ts.map +1 -0
  275. package/dist/esm/utils/ohlcvInterval.js +30 -0
  276. package/dist/esm/utils/ohlcvInterval.js.map +1 -0
  277. package/dist/esm/utils/orderFormatting.d.ts +29 -0
  278. package/dist/esm/utils/orderFormatting.d.ts.map +1 -0
  279. package/dist/esm/utils/orderFormatting.js +41 -0
  280. package/dist/esm/utils/orderFormatting.js.map +1 -0
  281. package/dist/esm/utils/time.d.ts +5 -0
  282. package/dist/esm/utils/time.d.ts.map +1 -0
  283. package/dist/esm/utils/time.js +5 -0
  284. package/dist/esm/utils/time.js.map +1 -0
  285. package/dist/esm/utils/wireEncoding.d.ts +72 -0
  286. package/dist/esm/utils/wireEncoding.d.ts.map +1 -0
  287. package/dist/esm/utils/wireEncoding.js +129 -0
  288. package/dist/esm/utils/wireEncoding.js.map +1 -0
  289. package/dist/esm/websocket/LighterWsProvider.d.ts +97 -0
  290. package/dist/esm/websocket/LighterWsProvider.d.ts.map +1 -0
  291. package/dist/esm/websocket/LighterWsProvider.js +489 -0
  292. package/dist/esm/websocket/LighterWsProvider.js.map +1 -0
  293. package/dist/types/LighterProvider.d.ts +105 -0
  294. package/dist/types/LighterProvider.d.ts.map +1 -0
  295. package/dist/types/accountConfig.d.ts +14 -0
  296. package/dist/types/accountConfig.d.ts.map +1 -0
  297. package/dist/types/accountSummary.d.ts +12 -0
  298. package/dist/types/accountSummary.d.ts.map +1 -0
  299. package/dist/types/constants.d.ts +74 -0
  300. package/dist/types/constants.d.ts.map +1 -0
  301. package/dist/types/index.d.ts +22 -0
  302. package/dist/types/index.d.ts.map +1 -0
  303. package/dist/types/signers/LighterKeyStore.d.ts +24 -0
  304. package/dist/types/signers/LighterKeyStore.d.ts.map +1 -0
  305. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts +157 -0
  306. package/dist/types/signers/LighterReadOnlyTokenManager.d.ts.map +1 -0
  307. package/dist/types/signers/LighterSigner.d.ts +94 -0
  308. package/dist/types/signers/LighterSigner.d.ts.map +1 -0
  309. package/dist/types/signers/createAuthToken.d.ts +36 -0
  310. package/dist/types/signers/createAuthToken.d.ts.map +1 -0
  311. package/dist/types/signers/index.d.ts +11 -0
  312. package/dist/types/signers/index.d.ts.map +1 -0
  313. package/dist/types/signers/signActions.d.ts +54 -0
  314. package/dist/types/signers/signActions.d.ts.map +1 -0
  315. package/dist/types/signers/wasmLoader.d.ts +79 -0
  316. package/dist/types/signers/wasmLoader.d.ts.map +1 -0
  317. package/dist/types/types/account.d.ts +113 -0
  318. package/dist/types/types/account.d.ts.map +1 -0
  319. package/dist/types/types/action.d.ts +146 -0
  320. package/dist/types/types/action.d.ts.map +1 -0
  321. package/dist/types/types/activity.d.ts +83 -0
  322. package/dist/types/types/activity.d.ts.map +1 -0
  323. package/dist/types/types/asset.d.ts +134 -0
  324. package/dist/types/types/asset.d.ts.map +1 -0
  325. package/dist/types/types/fill.d.ts +31 -0
  326. package/dist/types/types/fill.d.ts.map +1 -0
  327. package/dist/types/types/index.d.ts +9 -0
  328. package/dist/types/types/index.d.ts.map +1 -0
  329. package/dist/types/types/order.d.ts +61 -0
  330. package/dist/types/types/order.d.ts.map +1 -0
  331. package/dist/types/types/submit.d.ts +76 -0
  332. package/dist/types/types/submit.d.ts.map +1 -0
  333. package/dist/types/types/ws.d.ts +124 -0
  334. package/dist/types/types/ws.d.ts.map +1 -0
  335. package/dist/types/utils/activityCursor.d.ts +51 -0
  336. package/dist/types/utils/activityCursor.d.ts.map +1 -0
  337. package/dist/types/utils/apiClient.d.ts +65 -0
  338. package/dist/types/utils/apiClient.d.ts.map +1 -0
  339. package/dist/types/utils/fetchDetailedAccount.d.ts +11 -0
  340. package/dist/types/utils/fetchDetailedAccount.d.ts.map +1 -0
  341. package/dist/types/utils/index.d.ts +16 -0
  342. package/dist/types/utils/index.d.ts.map +1 -0
  343. package/dist/types/utils/lighterAsset.d.ts +4 -0
  344. package/dist/types/utils/lighterAsset.d.ts.map +1 -0
  345. package/dist/types/utils/liquidation.d.ts +22 -0
  346. package/dist/types/utils/liquidation.d.ts.map +1 -0
  347. package/dist/types/utils/mapFill.d.ts +10 -0
  348. package/dist/types/utils/mapFill.d.ts.map +1 -0
  349. package/dist/types/utils/mapOpenPositions.d.ts +11 -0
  350. package/dist/types/utils/mapOpenPositions.d.ts.map +1 -0
  351. package/dist/types/utils/mapOrder.d.ts +72 -0
  352. package/dist/types/utils/mapOrder.d.ts.map +1 -0
  353. package/dist/types/utils/mapPosition.d.ts +9 -0
  354. package/dist/types/utils/mapPosition.d.ts.map +1 -0
  355. package/dist/types/utils/ohlcvInterval.d.ts +3 -0
  356. package/dist/types/utils/ohlcvInterval.d.ts.map +1 -0
  357. package/dist/types/utils/orderFormatting.d.ts +29 -0
  358. package/dist/types/utils/orderFormatting.d.ts.map +1 -0
  359. package/dist/types/utils/time.d.ts +5 -0
  360. package/dist/types/utils/time.d.ts.map +1 -0
  361. package/dist/types/utils/wireEncoding.d.ts +72 -0
  362. package/dist/types/utils/wireEncoding.d.ts.map +1 -0
  363. package/dist/types/websocket/LighterWsProvider.d.ts +97 -0
  364. package/dist/types/websocket/LighterWsProvider.d.ts.map +1 -0
  365. package/dist/wasm/lighter-signer.wasm +0 -0
  366. package/dist/wasm/wasm_exec.js +575 -0
  367. package/package.json +67 -0
  368. package/src/LighterProvider.ts +1167 -0
  369. package/src/accountConfig.ts +162 -0
  370. package/src/accountSummary.ts +22 -0
  371. package/src/constants.ts +89 -0
  372. package/src/index.ts +37 -0
  373. package/src/signers/LighterKeyStore.ts +79 -0
  374. package/src/signers/LighterReadOnlyTokenManager.ts +340 -0
  375. package/src/signers/LighterSigner.ts +400 -0
  376. package/src/signers/createAuthToken.ts +69 -0
  377. package/src/signers/index.ts +36 -0
  378. package/src/signers/signActions.ts +311 -0
  379. package/src/signers/wasmLoader.ts +293 -0
  380. package/src/types/account.ts +123 -0
  381. package/src/types/action.ts +163 -0
  382. package/src/types/activity.ts +94 -0
  383. package/src/types/asset.ts +146 -0
  384. package/src/types/fill.ts +42 -0
  385. package/src/types/index.ts +12 -0
  386. package/src/types/order.ts +65 -0
  387. package/src/types/submit.ts +83 -0
  388. package/src/types/ws.ts +136 -0
  389. package/src/utils/activityCursor.ts +150 -0
  390. package/src/utils/apiClient.ts +185 -0
  391. package/src/utils/fetchDetailedAccount.ts +46 -0
  392. package/src/utils/index.ts +38 -0
  393. package/src/utils/lighterAsset.ts +10 -0
  394. package/src/utils/liquidation.ts +39 -0
  395. package/src/utils/mapFill.ts +108 -0
  396. package/src/utils/mapOpenPositions.ts +18 -0
  397. package/src/utils/mapOrder.ts +258 -0
  398. package/src/utils/mapPosition.ts +42 -0
  399. package/src/utils/ohlcvInterval.ts +34 -0
  400. package/src/utils/orderFormatting.ts +46 -0
  401. package/src/utils/time.ts +6 -0
  402. package/src/utils/wireEncoding.ts +179 -0
  403. package/src/websocket/LighterWsProvider.ts +725 -0
  404. package/wasm/lighter-signer.wasm +0 -0
  405. package/wasm/wasm_exec.js +575 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { MarketDisplay, Position } from '@lifi/perps-types';
2
+ import type { LtAccountPosition } from '../types/index.js';
3
+ /**
4
+ * Map raw Lighter account positions to open {@link Position}s, dropping
5
+ * zero-size rows. Only valid for payloads carrying the full position set —
6
+ * dropping zeros from a partial frame would make closes unobservable.
7
+ *
8
+ * @public
9
+ */
10
+ export declare const mapOpenPositions: (positions: LtAccountPosition[], resolveMarket: (marketId: number) => MarketDisplay) => Position[];
11
+ //# sourceMappingURL=mapOpenPositions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOpenPositions.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,iBAAiB,EAAE,EAC9B,eAAe,CAAC,QAAQ,EAAE,MAAM,KAAK,aAAa,KACjD,QAAQ,EAGgD,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { mapPosition } from './mapPosition.js';
2
+ /**
3
+ * Map raw Lighter account positions to open {@link Position}s, dropping
4
+ * zero-size rows. Only valid for payloads carrying the full position set —
5
+ * dropping zeros from a partial frame would make closes unobservable.
6
+ *
7
+ * @public
8
+ */
9
+ export const mapOpenPositions = (positions, resolveMarket) => positions
10
+ .filter((p) => Number.parseFloat(p.position) !== 0)
11
+ .map((p) => mapPosition(p, resolveMarket(p.market_id)));
12
+ //# sourceMappingURL=mapOpenPositions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOpenPositions.js","sourceRoot":"","sources":["../../../src/utils/mapOpenPositions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAA8B,EAC9B,aAAkD,EACtC,EAAE,CACd,SAAS;KACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,72 @@
1
+ import type { MarketDisplay, OpenOrder, Order, TriggerOrder } from '@lifi/perps-types';
2
+ import { OrderType } from '@lifi/perps-types';
3
+ import type { LtOrder } from '../types/index.js';
4
+ /**
5
+ * Map a raw Lighter order status to a short English sentence describing
6
+ * *why* the order ended in a terminal non-FILLED state. Non-terminal
7
+ * statuses, plain `filled`, and unknown values return `undefined`.
8
+ * @public
9
+ */
10
+ export declare const mapStatusReason: (status: string) => string | undefined;
11
+ /**
12
+ * True for order types Lighter exposes as TP/SL legs. Mirrors the
13
+ * Hyperliquid helper of the same name so the backend can split a raw
14
+ * Lighter order list into the same `openOrders` / `triggerOrders`
15
+ * buckets the SDK declares on `OrdersResponse`.
16
+ * @public
17
+ */
18
+ export declare const isTriggerType: (type: OrderType) => boolean;
19
+ /**
20
+ * Decide whether a raw Lighter order belongs in the cross-provider
21
+ * `triggerOrders` bucket. Single source of truth for both the REST
22
+ * `getOrders` path and the `account_all_orders` WS handler.
23
+ *
24
+ * Authoritative signals, in order:
25
+ * 1. `trigger_status` — Lighter's own enum. `'ready' | 'mark-price' |
26
+ * 'parent-order'` all mean "this order has trigger semantics" (TP/SL
27
+ * waiting on price, or a TP/SL leg of a parent placeOrder). `'twap'`
28
+ * is intentionally excluded — TWAP child orders are scheduled resting
29
+ * limits, not TP/SL triggers. `'na'` is "regular order".
30
+ * 2. `trigger_price > 0` — catches cases where `trigger_status`
31
+ * momentarily lags during state transitions (e.g. right after an OCO
32
+ * sibling cancels).
33
+ * 3. `type` — final fallback via the mapped `OrderType`.
34
+ * @public
35
+ */
36
+ export declare const isTriggerOrder: (raw: LtOrder) => boolean;
37
+ /**
38
+ * Map a raw Lighter trigger order (stop/take-profit, market or limit) to
39
+ * the generic `TriggerOrder` shape. For market variants the `limitPrice`
40
+ * field is omitted; for limit variants `order.price` is the limit and
41
+ * `order.trigger_price` is the activation level.
42
+ * @public
43
+ */
44
+ export declare const mapTriggerOrder: (order: LtOrder, market: MarketDisplay) => TriggerOrder;
45
+ /**
46
+ * Map a raw Lighter order to the generic OpenOrder type.
47
+ * @param market - Backend-resolved market identity for `order.market_index`.
48
+ * @public
49
+ */
50
+ export declare const mapOrder: (order: LtOrder, market: MarketDisplay) => OpenOrder;
51
+ /**
52
+ * Walk a flat list of raw Lighter orders and bucket each into the
53
+ * `OpenOrder` / `TriggerOrder` arrays the cross-provider `OrdersResponse`
54
+ * declares, plus a `terminated` list of orderIds whose status has reached
55
+ * a terminal state (filled / cancelled / rejected / expired) — consumers
56
+ * applying WS deltas evict those from the cached buckets. REST callers
57
+ * see `terminated: []` because `accountActiveOrders` returns active only.
58
+ * An order whose market the resolver does not know is skipped.
59
+ * @public
60
+ */
61
+ export declare const classifyAndMapOrders: (orders: LtOrder[], resolveMarket: (marketIndex: number) => MarketDisplay | undefined) => {
62
+ openOrders: OpenOrder[];
63
+ triggerOrders: TriggerOrder[];
64
+ terminated: string[];
65
+ };
66
+ /**
67
+ * Map a raw Lighter order to the rich Order type — adds status, time-in-force
68
+ * and remaining/filled sizes on top of the OpenOrder fields.
69
+ * @public
70
+ */
71
+ export declare const mapOrderDetail: (order: LtOrder, market: MarketDisplay) => Order;
72
+ //# sourceMappingURL=mapOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGL,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAmDhD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SA+BzD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,KAAG,OAIjB,CAAA;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,KAAG,OAY7C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,YAkBF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,EAAE,QAAQ,aAAa,KAAG,SAU/D,CAAA;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,OAAO,EAAE,EACjB,eAAe,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KAChE;IACD,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,aAAa,EAAE,YAAY,EAAE,CAAA;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAA;CAsBrB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,OAAO,EACd,QAAQ,aAAa,KACpB,KAeD,CAAA"}
@@ -0,0 +1,219 @@
1
+ import { isActiveOrderStatus } from '@lifi/perps-sdk';
2
+ import { OrderSide, OrderStatus, OrderType, TimeInForce, } from '@lifi/perps-types';
3
+ // Lighter's `type` enum uses hyphens in the OpenAPI spec but earlier API
4
+ // versions emitted underscores. Tolerate both so we don't silently fall
5
+ // through to LIMIT for stop/take-profit orders.
6
+ const mapOrderType = (ltType) => {
7
+ const normalized = ltType.replace(/-/g, '_');
8
+ const map = {
9
+ limit: OrderType.LIMIT,
10
+ market: OrderType.MARKET,
11
+ stop_loss: OrderType.STOP_MARKET,
12
+ stop_loss_limit: OrderType.STOP_LIMIT,
13
+ take_profit: OrderType.TAKE_PROFIT_MARKET,
14
+ take_profit_limit: OrderType.TAKE_PROFIT_LIMIT,
15
+ };
16
+ return map[normalized] ?? OrderType.LIMIT;
17
+ };
18
+ const mapTimeInForce = (tif) => {
19
+ switch (tif.replace(/-/g, '_')) {
20
+ case 'good_till_time':
21
+ return TimeInForce.GTT;
22
+ case 'immediate_or_cancel':
23
+ return TimeInForce.IOC;
24
+ case 'post_only':
25
+ return TimeInForce.POST_ONLY;
26
+ default:
27
+ return undefined;
28
+ }
29
+ };
30
+ const mapOrderStatus = (status) => {
31
+ if (status === 'open' ||
32
+ status === 'in-progress' ||
33
+ status === 'in_progress') {
34
+ return OrderStatus.OPEN;
35
+ }
36
+ if (status === 'pending') {
37
+ return OrderStatus.PENDING;
38
+ }
39
+ if (status === 'filled') {
40
+ return OrderStatus.FILLED;
41
+ }
42
+ if (status.startsWith('canceled')) {
43
+ return OrderStatus.CANCELLED;
44
+ }
45
+ return OrderStatus.OPEN;
46
+ };
47
+ /**
48
+ * Map a raw Lighter order status to a short English sentence describing
49
+ * *why* the order ended in a terminal non-FILLED state. Non-terminal
50
+ * statuses, plain `filled`, and unknown values return `undefined`.
51
+ * @public
52
+ */
53
+ export const mapStatusReason = (status) => {
54
+ switch (status) {
55
+ case 'canceled':
56
+ return 'Order cancelled.';
57
+ case 'canceled-post-only':
58
+ return 'Order cancelled: post-only order would have crossed the book.';
59
+ case 'canceled-reduce-only':
60
+ return 'Order cancelled: would not reduce your position.';
61
+ case 'canceled-position-not-allowed':
62
+ return 'Order cancelled: position not allowed.';
63
+ case 'canceled-margin-not-allowed':
64
+ return 'Order cancelled: insufficient margin.';
65
+ case 'canceled-too-much-slippage':
66
+ return 'Order cancelled: slippage exceeded tolerance.';
67
+ case 'canceled-not-enough-liquidity':
68
+ return 'Order cancelled: not enough liquidity to fill.';
69
+ case 'canceled-self-trade':
70
+ return 'Order cancelled: would self-trade against your own resting order.';
71
+ case 'canceled-expired':
72
+ return 'Order expired.';
73
+ case 'canceled-oco':
74
+ return 'Order cancelled: sibling OCO order filled or cancelled first.';
75
+ case 'canceled-child':
76
+ return 'Order cancelled: parent order was cancelled.';
77
+ case 'canceled-liquidation':
78
+ return 'Order cancelled: account was liquidated.';
79
+ case 'canceled-invalid-balance':
80
+ return 'Order cancelled: invalid balance.';
81
+ default:
82
+ return undefined;
83
+ }
84
+ };
85
+ /**
86
+ * True for order types Lighter exposes as TP/SL legs. Mirrors the
87
+ * Hyperliquid helper of the same name so the backend can split a raw
88
+ * Lighter order list into the same `openOrders` / `triggerOrders`
89
+ * buckets the SDK declares on `OrdersResponse`.
90
+ * @public
91
+ */
92
+ export const isTriggerType = (type) => type === OrderType.TAKE_PROFIT_MARKET ||
93
+ type === OrderType.TAKE_PROFIT_LIMIT ||
94
+ type === OrderType.STOP_MARKET ||
95
+ type === OrderType.STOP_LIMIT;
96
+ /**
97
+ * Decide whether a raw Lighter order belongs in the cross-provider
98
+ * `triggerOrders` bucket. Single source of truth for both the REST
99
+ * `getOrders` path and the `account_all_orders` WS handler.
100
+ *
101
+ * Authoritative signals, in order:
102
+ * 1. `trigger_status` — Lighter's own enum. `'ready' | 'mark-price' |
103
+ * 'parent-order'` all mean "this order has trigger semantics" (TP/SL
104
+ * waiting on price, or a TP/SL leg of a parent placeOrder). `'twap'`
105
+ * is intentionally excluded — TWAP child orders are scheduled resting
106
+ * limits, not TP/SL triggers. `'na'` is "regular order".
107
+ * 2. `trigger_price > 0` — catches cases where `trigger_status`
108
+ * momentarily lags during state transitions (e.g. right after an OCO
109
+ * sibling cancels).
110
+ * 3. `type` — final fallback via the mapped `OrderType`.
111
+ * @public
112
+ */
113
+ export const isTriggerOrder = (raw) => {
114
+ if (raw.trigger_status === 'ready' ||
115
+ raw.trigger_status === 'mark-price' ||
116
+ raw.trigger_status === 'parent-order') {
117
+ return true;
118
+ }
119
+ if (raw.trigger_price !== '' && parseFloat(raw.trigger_price) > 0) {
120
+ return true;
121
+ }
122
+ return isTriggerType(mapOrderType(raw.type));
123
+ };
124
+ /**
125
+ * Map a raw Lighter trigger order (stop/take-profit, market or limit) to
126
+ * the generic `TriggerOrder` shape. For market variants the `limitPrice`
127
+ * field is omitted; for limit variants `order.price` is the limit and
128
+ * `order.trigger_price` is the activation level.
129
+ * @public
130
+ */
131
+ export const mapTriggerOrder = (order, market) => {
132
+ const type = mapOrderType(order.type);
133
+ const isLimit = type === OrderType.TAKE_PROFIT_LIMIT || type === OrderType.STOP_LIMIT;
134
+ return {
135
+ // `order_index` is the per-(account, market) numeric id Lighter's L2
136
+ // mutating txs (cancel, modify) require. The matching-engine string
137
+ // label `order_id` is internal to the SDK provider and never crosses
138
+ // this boundary — combined with `market.id` (=market_index), the
139
+ // numeric `order_index` uniquely pins a Lighter order.
140
+ orderId: String(order.order_index),
141
+ market,
142
+ type,
143
+ size: order.initial_base_amount,
144
+ triggerPrice: order.trigger_price,
145
+ ...(isLimit ? { limitPrice: order.price } : {}),
146
+ createdAt: new Date(order.created_at * 1000).toISOString(),
147
+ };
148
+ };
149
+ /**
150
+ * Map a raw Lighter order to the generic OpenOrder type.
151
+ * @param market - Backend-resolved market identity for `order.market_index`.
152
+ * @public
153
+ */
154
+ export const mapOrder = (order, market) => ({
155
+ orderId: String(order.order_index),
156
+ market,
157
+ side: order.is_ask ? OrderSide.SELL : OrderSide.BUY,
158
+ type: mapOrderType(order.type),
159
+ size: order.initial_base_amount,
160
+ price: order.price,
161
+ filledSize: order.filled_base_amount,
162
+ reduceOnly: order.reduce_only,
163
+ createdAt: new Date(order.created_at * 1000).toISOString(),
164
+ });
165
+ /**
166
+ * Walk a flat list of raw Lighter orders and bucket each into the
167
+ * `OpenOrder` / `TriggerOrder` arrays the cross-provider `OrdersResponse`
168
+ * declares, plus a `terminated` list of orderIds whose status has reached
169
+ * a terminal state (filled / cancelled / rejected / expired) — consumers
170
+ * applying WS deltas evict those from the cached buckets. REST callers
171
+ * see `terminated: []` because `accountActiveOrders` returns active only.
172
+ * An order whose market the resolver does not know is skipped.
173
+ * @public
174
+ */
175
+ export const classifyAndMapOrders = (orders, resolveMarket) => {
176
+ const openOrders = [];
177
+ const triggerOrders = [];
178
+ const terminated = [];
179
+ for (const raw of orders) {
180
+ const orderId = String(raw.order_index);
181
+ if (!isActiveOrderStatus(mapOrderStatus(raw.status))) {
182
+ terminated.push(orderId);
183
+ continue;
184
+ }
185
+ const market = resolveMarket(raw.market_index);
186
+ if (market === undefined) {
187
+ continue;
188
+ }
189
+ if (isTriggerOrder(raw)) {
190
+ triggerOrders.push(mapTriggerOrder(raw, market));
191
+ }
192
+ else {
193
+ openOrders.push(mapOrder(raw, market));
194
+ }
195
+ }
196
+ return { openOrders, triggerOrders, terminated };
197
+ };
198
+ /**
199
+ * Map a raw Lighter order to the rich Order type — adds status, time-in-force
200
+ * and remaining/filled sizes on top of the OpenOrder fields.
201
+ * @public
202
+ */
203
+ export const mapOrderDetail = (order, market) => ({
204
+ orderId: String(order.order_index),
205
+ market,
206
+ side: order.is_ask ? OrderSide.SELL : OrderSide.BUY,
207
+ type: mapOrderType(order.type),
208
+ price: order.price,
209
+ originalSize: order.initial_base_amount,
210
+ remainingSize: order.remaining_base_amount,
211
+ filledSize: order.filled_base_amount,
212
+ timeInForce: mapTimeInForce(order.time_in_force),
213
+ reduceOnly: order.reduce_only,
214
+ status: mapOrderStatus(order.status),
215
+ statusReason: mapStatusReason(order.status),
216
+ createdAt: new Date(order.created_at * 1000).toISOString(),
217
+ updatedAt: new Date(order.updated_at * 1000).toISOString(),
218
+ });
219
+ //# sourceMappingURL=mapOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapOrder.js","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { MarketDisplay, Position } from '@lifi/perps-types';
2
+ import type { LtAccountPosition } from '../types/index.js';
3
+ /**
4
+ * Map a raw Lighter account position to the generic Position type.
5
+ * @param market - Backend-resolved market identity for `pos.market_id`.
6
+ * @public
7
+ */
8
+ export declare const mapPosition: (pos: LtAccountPosition, market: MarketDisplay) => Position;
9
+ //# sourceMappingURL=mapPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapPosition.d.ts","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,QAAQ,aAAa,KACpB,QA4BF,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { MarginMode, PositionSide } from '@lifi/perps-types';
2
+ import { LT_MARGIN_MODE_ISOLATED } from '../types/index.js';
3
+ /**
4
+ * Map a raw Lighter account position to the generic Position type.
5
+ * @param market - Backend-resolved market identity for `pos.market_id`.
6
+ * @public
7
+ */
8
+ export const mapPosition = (pos, market) => {
9
+ const size = parseFloat(pos.position);
10
+ const isIsolated = pos.margin_mode === LT_MARGIN_MODE_ISOLATED;
11
+ // `allocated_margin` is only populated for isolated positions (always "0"
12
+ // on cross accounts). For cross, derive margin as
13
+ // `position_value × initial_margin_fraction / 100` (IMF is in percent).
14
+ const positionValue = Math.abs(parseFloat(pos.position_value));
15
+ const imf = parseFloat(pos.initial_margin_fraction);
16
+ const marginUsed = isIsolated
17
+ ? pos.allocated_margin
18
+ : ((positionValue * imf) / 100).toString();
19
+ return {
20
+ market,
21
+ side: pos.sign >= 0 ? PositionSide.LONG : PositionSide.SHORT,
22
+ size: Math.abs(size).toString(),
23
+ entryPrice: pos.avg_entry_price,
24
+ markPrice: pos.position_value === '0' || size === 0
25
+ ? '0'
26
+ : (parseFloat(pos.position_value) / Math.abs(size)).toString(),
27
+ liquidationPrice: pos.liquidation_price,
28
+ unrealizedPnl: pos.unrealized_pnl,
29
+ leverage: imf > 0 ? Math.round(100 / imf) : 1,
30
+ marginUsed,
31
+ marginMode: isIsolated ? MarginMode.ISOLATED : MarginMode.CROSS,
32
+ };
33
+ };
34
+ //# sourceMappingURL=mapPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAsB,EACtB,MAAqB,EACX,EAAE;IACZ,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,KAAK,uBAAuB,CAAA;IAE9D,0EAA0E;IAC1E,kDAAkD;IAClD,wEAAwE;IACxE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA;IAC9D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,UAAU;QAC3B,CAAC,CAAC,GAAG,CAAC,gBAAgB;QACtB,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE5C,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK;QAC5D,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC/B,UAAU,EAAE,GAAG,CAAC,eAAe;QAC/B,SAAS,EACP,GAAG,CAAC,cAAc,KAAK,GAAG,IAAI,IAAI,KAAK,CAAC;YACtC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClE,gBAAgB,EAAE,GAAG,CAAC,iBAAiB;QACvC,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK;KAChE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** @public */
2
+ export declare const mapInterval: (interval: string) => string;
3
+ //# sourceMappingURL=ohlcvInterval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcvInterval.d.ts","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAsBA,cAAc;AACd,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MAU9C,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { PerpsError } from '@lifi/perps-sdk';
2
+ import { PerpsErrorCode } from '@lifi/perps-types';
3
+ /**
4
+ * Map our `OhlcvInterval` literal to Lighter's `resolution` enum.
5
+ *
6
+ * Lighter exposes only the timeframes listed below. SDK intervals without a
7
+ * direct match (3m, 2h, 8h, 3d, 1M) raise a validation error rather than
8
+ * silently rounding — the caller picks a supported timeframe.
9
+ */
10
+ const LIGHTER_SUPPORTED_INTERVALS = {
11
+ '1m': '1m',
12
+ '5m': '5m',
13
+ '15m': '15m',
14
+ '30m': '30m',
15
+ '1h': '1h',
16
+ '4h': '4h',
17
+ '12h': '12h',
18
+ '1d': '1d',
19
+ '1w': '1w',
20
+ };
21
+ /** @public */
22
+ export const mapInterval = (interval) => {
23
+ const resolution = LIGHTER_SUPPORTED_INTERVALS[interval];
24
+ if (!resolution) {
25
+ throw new PerpsError(PerpsErrorCode.ValidationError, `Lighter does not support OHLCV interval '${interval}'. ` +
26
+ `Supported: ${Object.keys(LIGHTER_SUPPORTED_INTERVALS).join(', ')}.`);
27
+ }
28
+ return resolution;
29
+ };
30
+ //# sourceMappingURL=ohlcvInterval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohlcvInterval.js","sourceRoot":"","sources":["../../../src/utils/ohlcvInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,2BAA2B,GAA2B;IAC1D,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAA;AAED,cAAc;AACd,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE;IACtD,MAAM,UAAU,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,4CAA4C,QAAQ,KAAK;YACvD,cAAc,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACvE,CAAA;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Lighter order size and price formatting for exchange submission.
3
+ *
4
+ * Lighter publishes a flat per-market decimal budget on its order books
5
+ * (`supported_price_decimals` / `supported_size_decimals`), surfaced on the
6
+ * generic {@link Market} as `priceDecimals` / `szDecimals`. Prices round to
7
+ * the tick grid; sizes truncate to the lot grid.
8
+ */
9
+ import { type Market } from '@lifi/perps-types';
10
+ /**
11
+ * Format a price onto a Lighter market's tick grid: rounded to the market's
12
+ * `priceDecimals` (Lighter's `supported_price_decimals`), trailing zeros
13
+ * stripped.
14
+ *
15
+ * @throws {PerpsError} `ValidationError` when `market.priceDecimals` is
16
+ * absent — without the venue's tick grid no correct price can be produced.
17
+ * @public
18
+ */
19
+ export declare function formatOrderPrice(market: Market, price: number): string;
20
+ /**
21
+ * Format a size onto a Lighter market's lot grid: truncated (never rounded
22
+ * up, so the size cannot exceed the user's balance) to the market's
23
+ * `szDecimals` (Lighter's `supported_size_decimals`), trailing zeros stripped.
24
+ *
25
+ * @param size - Size in base-asset units as a non-negative magnitude.
26
+ * @public
27
+ */
28
+ export declare function formatOrderSize(market: Market, size: number): string;
29
+ //# sourceMappingURL=orderFormatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderFormatting.d.ts","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,mBAAmB,CAAA;AAG/D;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpE"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Lighter order size and price formatting for exchange submission.
3
+ *
4
+ * Lighter publishes a flat per-market decimal budget on its order books
5
+ * (`supported_price_decimals` / `supported_size_decimals`), surfaced on the
6
+ * generic {@link Market} as `priceDecimals` / `szDecimals`. Prices round to
7
+ * the tick grid; sizes truncate to the lot grid.
8
+ */
9
+ import { PerpsError } from '@lifi/perps-sdk';
10
+ import { PerpsErrorCode } from '@lifi/perps-types';
11
+ import Big from 'big.js';
12
+ /**
13
+ * Format a price onto a Lighter market's tick grid: rounded to the market's
14
+ * `priceDecimals` (Lighter's `supported_price_decimals`), trailing zeros
15
+ * stripped.
16
+ *
17
+ * @throws {PerpsError} `ValidationError` when `market.priceDecimals` is
18
+ * absent — without the venue's tick grid no correct price can be produced.
19
+ * @public
20
+ */
21
+ export function formatOrderPrice(market, price) {
22
+ if (market.priceDecimals === undefined) {
23
+ throw new PerpsError(PerpsErrorCode.ValidationError, `Market '${market.id}' carries no priceDecimals; Lighter order prices ` +
24
+ `cannot be formatted without the market's tick grid.`);
25
+ }
26
+ const rounded = new Big(price).round(market.priceDecimals, Big.roundHalfUp);
27
+ return rounded.eq(0) ? '0' : rounded.toFixed();
28
+ }
29
+ /**
30
+ * Format a size onto a Lighter market's lot grid: truncated (never rounded
31
+ * up, so the size cannot exceed the user's balance) to the market's
32
+ * `szDecimals` (Lighter's `supported_size_decimals`), trailing zeros stripped.
33
+ *
34
+ * @param size - Size in base-asset units as a non-negative magnitude.
35
+ * @public
36
+ */
37
+ export function formatOrderSize(market, size) {
38
+ const truncated = new Big(size).round(market.szDecimals, Big.roundDown);
39
+ return truncated.eq(0) ? '0' : truncated.toFixed();
40
+ }
41
+ //# sourceMappingURL=orderFormatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orderFormatting.js","sourceRoot":"","sources":["../../../src/utils/orderFormatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAe,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAa;IAC5D,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,WAAW,MAAM,CAAC,EAAE,mDAAmD;YACrE,qDAAqD,CACxD,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;IAC3E,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;AAChD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY;IAC1D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IACvE,OAAO,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAA;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Convert seconds since unix epoch to ISO-8601. */
2
+ export declare const toIsoFromSeconds: (seconds: number) => string;
3
+ /** Convert milliseconds since unix epoch to ISO-8601. */
4
+ export declare const toIsoFromMs: (ms: number) => string;
5
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,MACX,CAAA;AAExC,yDAAyD;AACzD,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,MAAoC,CAAA"}
@@ -0,0 +1,5 @@
1
+ /** Convert seconds since unix epoch to ISO-8601. */
2
+ export const toIsoFromSeconds = (seconds) => new Date(seconds * 1000).toISOString();
3
+ /** Convert milliseconds since unix epoch to ISO-8601. */
4
+ export const toIsoFromMs = (ms) => new Date(ms).toISOString();
5
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE,CAC1D,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;AAExC,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Lighter wire encoding for the WASM signer: scaled-integer decimal values,
3
+ * basis-point margin fractions, and order-type/TIF/expiry resolution
4
+ * mirroring the lighter-go signer's rules.
5
+ */
6
+ /**
7
+ * Lighter uses basis-points (1/10000) for margin fractions.
8
+ * Convert to a decimal multiplier: 1000 → 0.1 (10x leverage).
9
+ * @public
10
+ */
11
+ export declare const marginFractionToMaxLeverage: (fraction: number) => number;
12
+ /**
13
+ * Convert leverage to margin fraction in basis points for WASM signer.
14
+ * @public
15
+ */
16
+ export declare const leverageToFraction: (leverage: number) => number;
17
+ /**
18
+ * Off-grid resolution for {@link scaleToInteger}:
19
+ * - `truncate` — toward zero, for sizes and collateral amounts. The wire
20
+ * value never exceeds the caller's intent.
21
+ * - `round` — half away from zero, for prices, which snap to the nearest
22
+ * tick.
23
+ * @public
24
+ */
25
+ export type ScaleToIntegerPolicy = 'truncate' | 'round';
26
+ /**
27
+ * Scale a human-readable decimal string to a scaled integer for the WASM
28
+ * signer, in exact decimal arithmetic — an on-grid input maps to its exact
29
+ * scaled integer with no binary float artifacts (`'0.29'` at 2 decimals is
30
+ * 29, never 28). Off-grid input resolves per `policy`; there is no silent
31
+ * default.
32
+ *
33
+ * @throws {PerpsError} `ValidationError` when `value` is not a decimal
34
+ * numeric string, `decimals` is not a non-negative integer, or the scaled
35
+ * result's magnitude exceeds `Number.MAX_SAFE_INTEGER`.
36
+ * @public
37
+ */
38
+ export declare const scaleToInteger: (value: string, decimals: number, policy: ScaleToIntegerPolicy) => number;
39
+ /**
40
+ * Map our OrderType enum to Lighter's integer order type.
41
+ * @public
42
+ */
43
+ export declare const mapOrderTypeToInt: (type?: string) => number;
44
+ /**
45
+ * Lighter pairs each `order_type` with a permitted set of `time_in_force`
46
+ * values: market-style orders (MARKET, STOP_MARKET, TAKE_PROFIT_MARKET) are
47
+ * IOC by definition; limit-style orders may carry any TIF. The Go WASM
48
+ * signer rejects mismatches with `OrderTimeInForce is not valid`. Resolve
49
+ * the caller's optional `timeInForce` against the order type so unspecified
50
+ * values land on the correct default and explicit values are validated up
51
+ * front.
52
+ * @public
53
+ */
54
+ export declare const resolveTimeInForce: (orderTypeInt: number, tif?: string) => number;
55
+ /**
56
+ * Map our TimeInForce enum to Lighter's integer time-in-force.
57
+ * @public
58
+ */
59
+ export declare const mapTimeInForceToInt: (tif?: string) => number;
60
+ /**
61
+ * Pick the `order_expiry` value Lighter expects for a given TIF on a
62
+ * regular limit order. `lighter-go/types/txtypes/create_order.go:121-128`
63
+ * enforces:
64
+ * - IOC limit orders → `OrderExpiry == NilOrderExpiry (0)`
65
+ * - non-IOC limit orders → `OrderExpiry != NilOrderExpiry`
66
+ * For non-IOC we pass the `-1` sentinel, which the WASM signer rewrites
67
+ * to `now + 28d` (absolute ms). Trigger orders take a different rule —
68
+ * see {@link LT_DEFAULT_ORDER_EXPIRY} call sites.
69
+ * @public
70
+ */
71
+ export declare const orderExpiryForTif: (tifInt: number) => number;
72
+ //# sourceMappingURL=wireEncoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireEncoding.d.ts","sourceRoot":"","sources":["../../../src/utils/wireEncoding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,UAAU,MAAM,KAAG,MAK9D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,MAQrD,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAA;AAEvD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EACb,UAAU,MAAM,EAChB,QAAQ,oBAAoB,KAC3B,MA0BF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,KAAG,MAUjD,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,MAAM,MAAM,KACX,MAgBF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAOlD,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MAKlD,CAAA"}