@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,74 @@
1
+ import type { FeeTier } from '@lifi/perps-types';
2
+ /**
3
+ * Lighter provider key as it appears on `Provider.key` from the backend.
4
+ *
5
+ * @public
6
+ */
7
+ export declare const LIGHTER_PROVIDER_KEY = "lighter";
8
+ /**
9
+ * Default mainnet REST base URL for Lighter.
10
+ *
11
+ * @public
12
+ */
13
+ export declare const DEFAULT_LIGHTER_REST_URL = "https://mainnet.zklighter.elliot.ai";
14
+ /** @internal */
15
+ export declare const DEFAULT_TRADES_LIMIT = 50;
16
+ /**
17
+ * Lighter pairs each maker/taker fee with a 1e6 integer tick:
18
+ * fee_fraction = current_*_fee_tick / 1_000_000
19
+ *
20
+ * See lighter-python `paper_client/types.py:_FEE_TICK` for the canonical scale.
21
+ *
22
+ * @internal
23
+ */
24
+ export declare const LIGHTER_FEE_TICK_SCALE = 1000000;
25
+ /**
26
+ * Lighter's public base fee tier (Standard Account): 0% maker / 0% taker on all
27
+ * perps markets. Per-account Premium tiers exist but require auth to resolve;
28
+ * unauthenticated quotes use this public base. Fractions, not basis points.
29
+ *
30
+ * @public
31
+ */
32
+ export declare const LIGHTER_BASE_FEE_TIER: FeeTier;
33
+ /**
34
+ * Wildcard `market_id` accepted by Lighter's per-market account endpoints to
35
+ * indicate "every market". Used on `accountInactiveOrders`, `positionFunding`,
36
+ * `liquidations`.
37
+ *
38
+ * @internal
39
+ */
40
+ export declare const LIGHTER_ALL_MARKETS_WILDCARD = 255;
41
+ /**
42
+ * Lighter caps `limit` at 100 on positionFunding/liquidations endpoints.
43
+ *
44
+ * @internal
45
+ */
46
+ export declare const LIGHTER_HISTORY_PAGE_SIZE = 100;
47
+ /**
48
+ * Default API key slot — reused per account. Lighter's docs reserve indexes
49
+ * `{0,1,2,3}` for its own desktop/mobile interfaces; user keys start at 4
50
+ * (max 254, with 255 reserved as `NilApiKeyIndex`). 42 is the LI.FI-wide
51
+ * identifier so a user running both the Lighter app and the widget never
52
+ * collides with the app's session key.
53
+ *
54
+ * @public
55
+ */
56
+ export declare const DEFAULT_API_KEY_INDEX = 42;
57
+ /** @internal */
58
+ declare const LIGHTER_CODE_ACCOUNT_NOT_FOUND = 21100;
59
+ /**
60
+ * Lighter body `code` for a rejected/invalid auth token ("invalid auth string").
61
+ *
62
+ * @internal
63
+ */
64
+ declare const LIGHTER_INVALID_AUTH_CODE = 20013;
65
+ /**
66
+ * Lighter body `code` values that mean success. Lighter is inconsistent per
67
+ * endpoint: `/api/v1/account` returns `code: 200`, most others return `code: 0`.
68
+ * A body with no `code` field is also success (no error channel present).
69
+ *
70
+ * @internal
71
+ */
72
+ declare const LIGHTER_SUCCESS_CODES: Set<number>;
73
+ export { LIGHTER_CODE_ACCOUNT_NOT_FOUND, LIGHTER_INVALID_AUTH_CODE, LIGHTER_SUCCESS_CODES, };
74
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,wCAAwC,CAAA;AAE7E,gBAAgB;AAChB,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,UAAY,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,OAAoC,CAAA;AAExE;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,gBAAgB;AAChB,QAAA,MAAM,8BAA8B,QAAQ,CAAA;AAE5C;;;;GAIG;AACH,QAAA,MAAM,yBAAyB,QAAQ,CAAA;AAEvC;;;;;;GAMG;AACH,QAAA,MAAM,qBAAqB,aAAoB,CAAA;AAE/C,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,qBAAqB,GACtB,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Lighter provider plugin for `@lifi/perps-sdk`. Serves `PerpsProvider` reads
3
+ * directly from Lighter's REST API (no LI.FI backend hop); auth-gated reads
4
+ * use the user's Lighter read-only token. Also owns `signActions` (the
5
+ * `WASM_BLOB` / `EVM_TX` arms of `PerpsClient.execute`) — `LighterSigner`,
6
+ * `LighterKeyStore`, `LighterReadOnlyTokenManager`, and the WASM blob ship
7
+ * with this package.
8
+ *
9
+ * @packageDocumentation
10
+ * @public
11
+ */
12
+ export { projectLighterConfigSettings } from './accountConfig.js';
13
+ export { summarizeLighterAccount } from './accountSummary.js';
14
+ export { DEFAULT_API_KEY_INDEX, DEFAULT_LIGHTER_REST_URL, LIGHTER_PROVIDER_KEY, } from './constants.js';
15
+ export type { LighterPerpsProvider, LighterProviderOptions, } from './LighterProvider.js';
16
+ export { Lighter, lighterProvider } from './LighterProvider.js';
17
+ export * from './signers/index.js';
18
+ export * from './types/index.js';
19
+ export * from './utils/index.js';
20
+ export type { LighterAuthProvider } from './websocket/LighterWsProvider.js';
21
+ export { LighterWsProvider, type LighterWsProviderOptions, lighterWsProvider, } from './websocket/LighterWsProvider.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE/D,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC3E,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,iBAAiB,GAClB,MAAM,kCAAkC,CAAA"}
@@ -0,0 +1,24 @@
1
+ import { type StorageAdapter } from '@lifi/perps-sdk';
2
+ import type { Address } from 'viem';
3
+ /** @public */
4
+ export interface LighterApiKey {
5
+ /** Lighter account index, looked up once via accountsByL1Address. */
6
+ accountIndex: number;
7
+ /** API key slot (0-255). Defaults to {@link DEFAULT_API_KEY_INDEX}. */
8
+ apiKeyIndex: number;
9
+ /** Lighter-native private key (0x-prefixed hex). */
10
+ apiKeyPrivateKey: string;
11
+ /** Corresponding public key, registered via ChangePubKey. */
12
+ apiKeyPublicKey: string;
13
+ }
14
+ /** @public */
15
+ export declare class LighterKeyStore {
16
+ private readonly storage;
17
+ private readonly cache;
18
+ constructor(storage: StorageAdapter);
19
+ private storageKey;
20
+ get(address: Address): Promise<LighterApiKey | null>;
21
+ set(address: Address, value: LighterApiKey): Promise<void>;
22
+ remove(address: Address): Promise<void>;
23
+ }
24
+ //# sourceMappingURL=LighterKeyStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LighterKeyStore.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterKeyStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AASnC,cAAc;AACd,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,gBAAgB,EAAE,MAAM,CAAA;IACxB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAA;CACxB;AAoBD,cAAc;AACd,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmC;gBAE7C,OAAO,EAAE,cAAc;IAInC,OAAO,CAAC,UAAU;IAIZ,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAcpD,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAK9C"}
@@ -0,0 +1,157 @@
1
+ import { type StorageAdapter } from '@lifi/perps-sdk';
2
+ import type { ApproveReadOnlyTokenParams, LighterAccountConfig } from '@lifi/perps-types';
3
+ import type { Address } from 'viem';
4
+ /**
5
+ * Default Lighter HTTP host the SDK posts the create request to. Callers
6
+ * pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
7
+ * @public
8
+ */
9
+ export declare const DEFAULT_LIGHTER_API_URL = "https://mainnet.zklighter.elliot.ai";
10
+ /**
11
+ * Default token name persisted alongside Lighter's `tokens/create` row.
12
+ * Lighter requires a non-empty `name` form field; the literal here is what
13
+ * surfaces in Lighter's UI listing under `app.lighter.xyz/read-only-tokens`.
14
+ * @public
15
+ */
16
+ export declare const DEFAULT_READ_ONLY_TOKEN_NAME = "LI.FI Perps";
17
+ /**
18
+ * Persisted shape of a Lighter read-only token. The `token` string is
19
+ * Lighter's opaque `ro:{accountIndex}:{scope}:{expiry}:{rand}` bearer; the
20
+ * SDK never parses it — `expiry`/`scope`/`accountIndex` are create-time inputs
21
+ * we keep alongside so consumers can render expiry UX without re-fetching.
22
+ * @public
23
+ */
24
+ export interface LighterReadOnlyToken {
25
+ /** Opaque bearer string — never parse client-side. */
26
+ token: string;
27
+ /** Unix seconds. The SDK's source of truth for expiry. */
28
+ expiry: number;
29
+ /** Lighter's `single | all` scope literal recorded at create time. */
30
+ scope: 'single' | 'all';
31
+ /** Lighter L2 account index the token authorises. */
32
+ accountIndex: number;
33
+ }
34
+ /**
35
+ * Lighter `POST /api/v1/tokens/create` response shape (subset). Lighter's
36
+ * OpenAPI documents additional fields (`token_id`, `name`, `revoked`, etc.)
37
+ * we don't need client-side.
38
+ * @public
39
+ */
40
+ export interface LighterCreateTokenResponse {
41
+ api_token: string;
42
+ account_index: number;
43
+ expiry: number;
44
+ scopes: string;
45
+ }
46
+ /**
47
+ * Function injected for the HTTP boundary against Lighter's `tokens/create`
48
+ * endpoint. Returning a parsed {@link LighterCreateTokenResponse} keeps the
49
+ * create code free of fetch/multipart plumbing and lets tests drop a fixture
50
+ * in without spinning a mock server.
51
+ * @public
52
+ */
53
+ export type LighterTokenFetcher = (params: {
54
+ url: string;
55
+ authorization: string;
56
+ name: string;
57
+ accountIndex: number;
58
+ expiry: number;
59
+ subAccountAccess: boolean;
60
+ scopes: string;
61
+ }) => Promise<LighterCreateTokenResponse>;
62
+ /** @public */
63
+ export interface LighterReadOnlyTokenManagerOptions {
64
+ storage?: StorageAdapter;
65
+ /** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_API_URL}. */
66
+ lighterApiUrl?: string;
67
+ /** Override the multipart POST. Defaults to a `fetch`-based implementation. */
68
+ fetcher?: LighterTokenFetcher;
69
+ /** Clock injection for testing expiry logic. Defaults to `Date.now`. */
70
+ now?: () => number;
71
+ }
72
+ /** @public */
73
+ export interface ApproveReadOnlyTokenInputs extends ApproveReadOnlyTokenParams {
74
+ /** L1 wallet address that signs the create message. */
75
+ address: Address;
76
+ }
77
+ /** @public */
78
+ export interface ApproveReadOnlyTokenResult {
79
+ token: LighterReadOnlyToken;
80
+ /** Projection of the post-create Lighter account state. */
81
+ config: Pick<LighterAccountConfig, 'provider' | 'accountIndex' | 'readOnlyTokenApproved' | 'readOnlyTokenExpiry' | 'readOnlyTokenScope'>;
82
+ }
83
+ /**
84
+ * Manage the per-account Lighter read-only token alongside the existing
85
+ * `(L1 address, account index)`-scoped storage adapter pattern. Takes an
86
+ * injectable `StorageAdapter` so callers can share one storage backend across
87
+ * the SDK's session stores. The token is opaque — never parsed client-side;
88
+ * `expiry`/`scope` recorded at create time are the source of truth.
89
+ *
90
+ * The L1 wallet signer and the HTTP fetcher are both injectable so unit
91
+ * tests don't need a real wallet or network.
92
+ * @public
93
+ */
94
+ export declare class LighterReadOnlyTokenManager {
95
+ private readonly storage;
96
+ private readonly lighterApiUrl;
97
+ private readonly fetcher;
98
+ private readonly now;
99
+ private readonly cache;
100
+ constructor(options?: LighterReadOnlyTokenManagerOptions);
101
+ private storageKey;
102
+ private isExpired;
103
+ /**
104
+ * Return the stored token for the `(address, accountIndex)` pair, or
105
+ * `undefined` if absent or past its `expiry`. Never surfaces an expired
106
+ * token — consumers can rely on the return value being usable as-is.
107
+ */
108
+ get(address: Address, accountIndex: number): Promise<LighterReadOnlyToken | undefined>;
109
+ /**
110
+ * `true` when a stored token exists AND its `expiry` falls within
111
+ * `thresholdDays` of now. `false` when no token exists, when the token is
112
+ * already expired (caller should treat that as "no token"), or when it
113
+ * has more than `thresholdDays` of life left.
114
+ */
115
+ isReadOnlyTokenExpiringSoon(address: Address, accountIndex: number, thresholdDays?: number): Promise<boolean>;
116
+ /**
117
+ * Persist `token` for the `(address, accountIndex)` pair. Overwrites any
118
+ * prior stored token under the same key — used both by the approve flow
119
+ * and by the renewal flow.
120
+ */
121
+ set(address: Address, accountIndex: number, token: LighterReadOnlyToken): Promise<void>;
122
+ remove(address: Address, accountIndex: number): Promise<void>;
123
+ /**
124
+ * Create and persist a new Lighter read-only token.
125
+ *
126
+ * POSTs to Lighter's `/api/v1/tokens/create` (via the injected `fetcher`)
127
+ * and persists the returned `ro:` bearer alongside its
128
+ * `expiry`/`scope`/`accountIndex`.
129
+ *
130
+ * `authorization` MUST be a **standard** Lighter auth token — one created by
131
+ * the account's API key (`createAuthToken` / the WASM signer), NOT an L1
132
+ * wallet signature. Lighter authenticates the create request with that token
133
+ * and rejects anything else as `invalid auth string` (code 20013).
134
+ *
135
+ * `expirySeconds` is the absolute unix-seconds expiry Lighter records on
136
+ * the row. Lighter enforces 1 day ≤ lifetime ≤ 10 years server-side; the
137
+ * SDK does NOT pre-validate and surfaces Lighter's 400 verbatim.
138
+ *
139
+ * `scope` selects sub-account coverage: `'all'` sets `sub_account_access`
140
+ * (read access to every sub-account of the owner); `'single'` scopes to the
141
+ * one account. The permission set (`scopes` form field) is always read-only
142
+ * (`read.*`).
143
+ *
144
+ * @param authorization Standard (API-key-signed) Lighter auth token.
145
+ * @param inputs Token-create parameters plus the owning `address`.
146
+ */
147
+ approve(authorization: string, inputs: ApproveReadOnlyTokenInputs): Promise<ApproveReadOnlyTokenResult>;
148
+ }
149
+ /**
150
+ * Default fetcher: posts a multipart/form-data request to Lighter's
151
+ * `tokens/create` endpoint and returns the parsed response. Throws a
152
+ * {@link PerpsError} with the Lighter-side body when the response is
153
+ * non-2xx.
154
+ * @public
155
+ */
156
+ export declare const defaultLighterTokenFetcher: LighterTokenFetcher;
157
+ //# sourceMappingURL=LighterReadOnlyTokenManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LighterReadOnlyTokenManager.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterReadOnlyTokenManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAInC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,gBAAgB,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,sEAAsE;IACtE,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;IACvB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE;IACzC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;CACf,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAA;AAEzC,cAAc;AACd,MAAM,WAAW,kCAAkC;IACjD,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,mBAAmB,CAAA;IAC7B,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED,cAAc;AACd,MAAM,WAAW,0BAA2B,SAAQ,0BAA0B;IAC5E,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,cAAc;AACd,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,IAAI,CACV,oBAAoB,EAClB,UAAU,GACV,cAAc,GACd,uBAAuB,GACvB,qBAAqB,GACrB,oBAAoB,CACvB,CAAA;CACF;AAyBD;;;;;;;;;;GAUG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;gBAEpD,OAAO,GAAE,kCAAuC;IAO5D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAkB5C;;;;;OAKG;IACG,2BAA2B,CAC/B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,aAAa,SAAK,GACjB,OAAO,CAAC,OAAO,CAAC;IAenB;;;;OAIG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMV,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,OAAO,CACX,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,0BAA0B,CAAC;CAmCvC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,mBA+BxC,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { ActionType } from '@lifi/perps-types';
2
+ import { type LoadLighterWasmOptions } from './wasmLoader.js';
3
+ /** @public */
4
+ export interface LighterSignerContext {
5
+ /** Lighter-native private key (from GenerateAPIKey, NOT an Ethereum key). */
6
+ apiKeyPrivateKey: string;
7
+ /** API key slot registered on-chain (0-255). */
8
+ apiKeyIndex: number;
9
+ /** Lighter account index — looked up from the user's L1 Ethereum address. */
10
+ accountIndex: number;
11
+ }
12
+ /** @public */
13
+ export interface LighterSignerConfig extends LoadLighterWasmOptions {
14
+ /** Lighter REST API base URL. */
15
+ apiUrl?: string;
16
+ /** Lighter chain ID (304 = mainnet). */
17
+ chainId?: number;
18
+ }
19
+ /** @public */
20
+ export interface LighterSignedBlob {
21
+ txType: number;
22
+ txInfo: string;
23
+ txHash: string;
24
+ }
25
+ /** @public */
26
+ export interface ChangePubKeyResult extends LighterSignedBlob {
27
+ /** EIP-191 message the L1 Ethereum wallet must sign to authorize the key rotation. */
28
+ messageToSign: string;
29
+ }
30
+ /** @public */
31
+ export interface ApiKeyPair {
32
+ publicKey: string;
33
+ privateKey: string;
34
+ }
35
+ /** @public */
36
+ export declare class LighterSigner {
37
+ private readonly apiUrl;
38
+ private readonly chainId;
39
+ private readonly loaderOptions;
40
+ private wasm;
41
+ private readonly registeredClients;
42
+ constructor(config?: LighterSignerConfig);
43
+ initialize(): Promise<void>;
44
+ /**
45
+ * Generate a fresh Lighter API keypair. Pass an optional 32-byte hex seed
46
+ * for deterministic generation (used in tests); omit for a random key.
47
+ */
48
+ generateAPIKey(seed?: string): Promise<ApiKeyPair>;
49
+ /**
50
+ * Sign an action blob with the provided (apiKeyPrivateKey, apiKeyIndex,
51
+ * accountIndex) context. `wasmSignParams` comes straight from the backend's
52
+ * `WasmBlobActionStep`. Returns the signed `{ txType, txInfo, txHash }`
53
+ * triple the backend forwards to Lighter's `sendTx` endpoint.
54
+ *
55
+ * For REGISTER_API_KEY use `signChangePubKey` instead — it returns an
56
+ * additional `messageToSign` the L1 wallet must countersign.
57
+ */
58
+ sign(action: ActionType, wasmSignParams: Record<string, unknown>, context: LighterSignerContext): Promise<LighterSignedBlob>;
59
+ /**
60
+ * Step 1 of the REGISTER_API_KEY flow. Generates the WASM blob for a
61
+ * ChangePubKey tx with `L1Sig` left empty, plus the canonical EIP-191
62
+ * message the L1 Ethereum wallet must sign next.
63
+ *
64
+ * Requires the freshly-generated `privateKey` (returned by
65
+ * {@link generateAPIKey}) — the Go WASM signer registers a per-slot client
66
+ * keyed on `(apiKeyIndex, accountIndex)` before it'll sign anything for
67
+ * that slot, including the ChangePubKey that's about to register the key
68
+ * on-chain. This is purely client-side bookkeeping; it does not touch the
69
+ * Lighter API.
70
+ */
71
+ signChangePubKey(pubKeyHex: string, privateKey: string, nonce: number, apiKeyIndex: number, accountIndex: number, skipNonce?: 0 | 1): Promise<ChangePubKeyResult>;
72
+ /**
73
+ * Step 2 of REGISTER_API_KEY — inject the L1 signature produced by the
74
+ * user's Ethereum wallet into the ChangePubKey txInfo JSON. `L1Sig` is the
75
+ * only field in txInfo that depends on the L1 signature; txHash does NOT
76
+ * include it (so we do not recompute it).
77
+ */
78
+ embedL1Signature(txInfo: string, l1Signature: string): string;
79
+ /**
80
+ * Create an auth token for authenticated WebSocket subscriptions.
81
+ * `deadline` is a Unix timestamp in seconds — tokens have an 8h hard cap.
82
+ */
83
+ createAuthToken(deadline: number, context: LighterSignerContext): Promise<string>;
84
+ private ensureLoaded;
85
+ private ensureClient;
86
+ /**
87
+ * Map an ActionType + backend-provided params object to the positional-arg
88
+ * WASM call. The Go signer exports take primitives in order, not an object
89
+ * — so we pick fields in the exact order the Go side expects. Unknown
90
+ * fields (e.g. backend's integrator_* hints) are ignored.
91
+ */
92
+ private dispatch;
93
+ }
94
+ //# sourceMappingURL=LighterSigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LighterSigner.d.ts","sourceRoot":"","sources":["../../../src/signers/LighterSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAEL,KAAK,sBAAsB,EAG5B,MAAM,iBAAiB,CAAA;AAOxB,cAAc;AACd,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,CAAA;IACxB,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAA;IACnB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,cAAc;AACd,MAAM,WAAW,mBAAoB,SAAQ,sBAAsB;IACjE,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,cAAc;AACd,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,cAAc;AACd,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,cAAc;AACd,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAKD,cAAc;AACd,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,MAAM,GAAE,mBAAwB;IAUtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;;OAGG;IACG,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAYxD;;;;;;;;OAQG;IACG,IAAI,CACR,MAAM,EAAE,UAAU,EAClB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC;IAa7B;;;;;;;;;;;OAWG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,CAAC,GAAG,CAAK,GACnB,OAAO,CAAC,kBAAkB,CAAC;IAsC9B;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAa7D;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC;YAiBJ,YAAY;YAOZ,YAAY;IAmB1B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAsGjB"}
@@ -0,0 +1,36 @@
1
+ import type { LighterApiKey } from './LighterKeyStore.js';
2
+ import type { LighterReadOnlyToken } from './LighterReadOnlyTokenManager.js';
3
+ import type { LighterSigner } from './LighterSigner.js';
4
+ /** @public */
5
+ export interface CreateAuthTokenInputs {
6
+ signer: LighterSigner;
7
+ apiKey: Pick<LighterApiKey, 'apiKeyPrivateKey' | 'apiKeyIndex' | 'accountIndex'>;
8
+ /**
9
+ * Token lifetime in seconds. Lighter caps standard tokens at 8 hours.
10
+ * Defaults to 1 hour, matching the previous `PerpsClient` behaviour.
11
+ */
12
+ lifetimeSeconds?: number;
13
+ /** Optional clock injection for tests. */
14
+ now?: () => number;
15
+ }
16
+ /**
17
+ * Create a fresh Lighter standard auth token via the WASM signer. Returns the
18
+ * opaque bearer string Lighter will accept on its authenticated read
19
+ * endpoints (`getOrders`, `getOrder`, `getActivity`, etc.).
20
+ *
21
+ * This utility carries no SDK-wide coupling — pass an explicit `signer` +
22
+ * `apiKey` and consume the returned bearer however the caller likes
23
+ * (per-call `options.lighterAuthToken`, persisted cache, etc.).
24
+ * @public
25
+ */
26
+ export declare function createAuthToken(inputs: CreateAuthTokenInputs): Promise<string>;
27
+ /**
28
+ * True when `token` exists, has not already expired, and is within
29
+ * `thresholdSeconds` of its recorded `expiry`. Intended for widget renewal
30
+ * banners — `thresholdSeconds` defaults to 30 days. Returns `false` for an
31
+ * undefined or already-expired token, so callers may treat that as "no
32
+ * token / renewal not needed (yet)".
33
+ * @public
34
+ */
35
+ export declare function isReadOnlyTokenExpiringSoon(token: LighterReadOnlyToken | undefined | null, thresholdSeconds?: number, now?: () => number): boolean;
36
+ //# sourceMappingURL=createAuthToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAuthToken.d.ts","sourceRoot":"","sources":["../../../src/signers/createAuthToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKvD,cAAc;AACd,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,MAAM,EAAE,IAAI,CACV,aAAa,EACb,kBAAkB,GAAG,aAAa,GAAG,cAAc,CACpD,CAAA;IACD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,EAC9C,gBAAgB,GAAE,MAAkC,EACpD,GAAG,GAAE,MAAM,MAAyB,GACnC,OAAO,CAST"}
@@ -0,0 +1,11 @@
1
+ export type { CreateAuthTokenInputs } from './createAuthToken.js';
2
+ export { createAuthToken, isReadOnlyTokenExpiringSoon, } from './createAuthToken.js';
3
+ export type { LighterApiKey } from './LighterKeyStore.js';
4
+ export { LighterKeyStore } from './LighterKeyStore.js';
5
+ export type { ApproveReadOnlyTokenInputs, ApproveReadOnlyTokenResult, LighterCreateTokenResponse, LighterReadOnlyToken, LighterReadOnlyTokenManagerOptions, LighterTokenFetcher, } from './LighterReadOnlyTokenManager.js';
6
+ export { DEFAULT_LIGHTER_API_URL, DEFAULT_READ_ONLY_TOKEN_NAME, defaultLighterTokenFetcher, LighterReadOnlyTokenManager, } from './LighterReadOnlyTokenManager.js';
7
+ export type { ApiKeyPair, ChangePubKeyResult, LighterSignedBlob, LighterSignerConfig, LighterSignerContext, } from './LighterSigner.js';
8
+ export { LighterSigner } from './LighterSigner.js';
9
+ export type { LighterWasmExports, LoadLighterWasmOptions, } from './wasmLoader.js';
10
+ export { loadLighterWasm, resetLighterWasmCache } from './wasmLoader.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signers/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAA;AACzC,YAAY,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,YAAY,EACV,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { type SignActionsContext } from '@lifi/perps-sdk';
2
+ import type { ActionStep, EvmTxActionStep, EvmTxSignedActionStep, SignedActionStep, WasmBlobActionStep, WasmBlobSignedActionStep } from '@lifi/perps-types';
3
+ import { SigningMethod } from '@lifi/perps-types';
4
+ import type { Address } from 'viem';
5
+ import type { LighterKeyStore } from './LighterKeyStore.js';
6
+ import type { LighterSigner } from './LighterSigner.js';
7
+ /**
8
+ * Per-batch dependencies the Lighter `signActions` implementation needs:
9
+ * a WASM signer (`LighterSigner`), the API-key store keyed on L1 address,
10
+ * and a reference to the host SDK client for descriptor/account fetches
11
+ * within the REGISTER_API_KEY hybrid flow.
12
+ * @internal
13
+ */
14
+ export interface LighterSignActionsDeps {
15
+ signer: LighterSigner;
16
+ keyStore: LighterKeyStore;
17
+ /**
18
+ * Resolve the user's Lighter `accountIndex` for an L1 address. Required
19
+ * by REGISTER_API_KEY so the ChangePubKey blob carries the right
20
+ * account. Implementations typically call Lighter's `/api/v1/account`
21
+ * with `by=l1_address`.
22
+ */
23
+ resolveAccountIndex(address: Address): Promise<number>;
24
+ }
25
+ /**
26
+ * Sign a `WASM_BLOB` batch (Lighter). Ensures the user's API keypair is
27
+ * registered first — generating one and running the REGISTER_API_KEY
28
+ * hybrid flow via the L1 signer if not — then feeds each subsequent step
29
+ * through the WASM signer.
30
+ *
31
+ * `ACCOUNT_TYPE` (Lighter `/changeAccountTier`) is a WASM_BLOB envelope
32
+ * authenticated with an auth token rather than a wasm tx signature —
33
+ * created via `LighterSigner.createAuthToken` and parked in `signedTx.txInfo`.
34
+ * @internal
35
+ */
36
+ export declare function signWasmBlobActions(deps: LighterSignActionsDeps, address: Address, steps: WasmBlobActionStep[], ctx: SignActionsContext | undefined): Promise<WasmBlobSignedActionStep[]>;
37
+ /**
38
+ * Sign and broadcast a sequence of `EVM_TX` actions via the user's wallet
39
+ * client. Steps are submitted serially so a later step (e.g. deposit) can
40
+ * rely on an earlier step (e.g. approve) having mined. Each step's
41
+ * `txParams` carries chainId, target, function name, args, and a
42
+ * human-readable abi from the backend.
43
+ * @internal
44
+ */
45
+ export declare function signEvmTxActions(steps: EvmTxActionStep[], ctx: SignActionsContext | undefined): Promise<EvmTxSignedActionStep[]>;
46
+ /**
47
+ * Top-level dispatch: pick the per-method signer based on the descriptor's
48
+ * `signingMethod` and forward. `EIP712` is rejected — Lighter declares no
49
+ * EIP712 actions (its user-consent step uses an EIP-191 `signMessage` inside
50
+ * the `WASM_BLOB` REGISTER_API_KEY flow).
51
+ * @internal
52
+ */
53
+ export declare function lighterSignActions(deps: LighterSignActionsDeps, method: SigningMethod, steps: ActionStep[], address: Address, ctx?: SignActionsContext): Promise<SignedActionStep[]>;
54
+ //# sourceMappingURL=signActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signActions.d.ts","sourceRoot":"","sources":["../../../src/signers/signActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACrE,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAA8B,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnC,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAA;IACrB,QAAQ,EAAE,eAAe,CAAA;IACzB;;;;;OAKG;IACH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EAAE,EAC3B,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAYrC;AAkKD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EAAE,EACxB,GAAG,EAAE,kBAAkB,GAAG,SAAS,GAClC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAqClC;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAsB7B"}
@@ -0,0 +1,79 @@
1
+ /** @public */
2
+ export interface LoadLighterWasmOptions {
3
+ /** Override URL for the `.wasm` binary (browser: fetch; Node: fs). */
4
+ wasmBinaryUrl?: string | URL;
5
+ /** Override URL for Go's `wasm_exec.js` runtime. */
6
+ wasmExecJsUrl?: string | URL;
7
+ /**
8
+ * Pre-fetched source of Go's `wasm_exec.js`. Preferred over
9
+ * `wasmExecJsUrl` for bundlers (Vite/webpack) that may transform a `.js`
10
+ * URL on serve, breaking the IIFE that installs `globalThis.Go`. Pass via
11
+ * a `?raw` import (Vite) or equivalent so the original source survives
12
+ * intact.
13
+ */
14
+ wasmExecJsSource?: string;
15
+ }
16
+ /** @public */
17
+ export interface LighterWasmExports {
18
+ GenerateAPIKey: (seed?: string) => {
19
+ publicKey?: string;
20
+ privateKey?: string;
21
+ error?: string;
22
+ };
23
+ CreateClient: (url: string, privateKey: string, chainId: number, apiKeyIndex: number, accountIndex: number) => {
24
+ error?: string;
25
+ };
26
+ CheckClient: (apiKeyIndex: number, accountIndex: number) => {
27
+ error?: string;
28
+ };
29
+ /**
30
+ * Returns `{authToken}` on success — note the field name is `authToken`,
31
+ * NOT `token`. Reading the wrong field silently fails (Go sets nothing
32
+ * else on the result), which is why early code paths returned undefined
33
+ * tokens with no error.
34
+ */
35
+ CreateAuthToken: (deadline: number, apiKeyIndex: number, accountIndex: number) => {
36
+ authToken?: string;
37
+ error?: string;
38
+ };
39
+ /**
40
+ * Signature mirrors lighter-python's `signer.SignChangePubKey(...)` call —
41
+ * 5 positional args including `skipNonce` (use 0 to embed our supplied
42
+ * nonce; 1 to leave it out for server-fill scenarios). Earlier versions
43
+ * here had only 4 args, which silently shifted all arguments by one and
44
+ * produced txInfo with garbage AccountIndex / ApiKeyIndex fields →
45
+ * Lighter rejected with code 20001 "invalid param".
46
+ */
47
+ SignChangePubKey: (pubKeyHex: string, skipNonce: number, nonce: number, apiKeyIndex: number, accountIndex: number) => SignResult & {
48
+ messageToSign?: string;
49
+ };
50
+ SignCreateOrder: (...args: unknown[]) => SignResult;
51
+ SignCancelOrder: (...args: unknown[]) => SignResult;
52
+ SignCancelAllOrders: (...args: unknown[]) => SignResult;
53
+ SignTransfer: (...args: unknown[]) => SignResult;
54
+ SignWithdraw: (...args: unknown[]) => SignResult;
55
+ SignUpdateLeverage: (...args: unknown[]) => SignResult;
56
+ SignModifyOrder: (...args: unknown[]) => SignResult;
57
+ SignUpdateMargin: (...args: unknown[]) => SignResult;
58
+ }
59
+ /** @internal */
60
+ export interface SignResult {
61
+ txType?: number;
62
+ txInfo?: string;
63
+ txHash?: string;
64
+ error?: string;
65
+ }
66
+ /**
67
+ * Load the Lighter WASM signer. Memoized per-process: subsequent calls return
68
+ * the cached exports. The Go runtime keeps a long-running goroutine to service
69
+ * JS calls — we start it once and never stop it.
70
+ * @public
71
+ */
72
+ export declare function loadLighterWasm(options?: LoadLighterWasmOptions): Promise<LighterWasmExports>;
73
+ /**
74
+ * Testing helper — drop the cached WASM instance so the next load reinitializes.
75
+ *
76
+ * @public
77
+ */
78
+ export declare function resetLighterWasmCache(): void;
79
+ //# sourceMappingURL=wasmLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasmLoader.d.ts","sourceRoot":"","sources":["../../../src/signers/wasmLoader.ts"],"names":[],"mappings":"AAkDA,cAAc;AACd,MAAM,WAAW,sBAAsB;IACrC,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAC5B,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;IAC5B;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,cAAc;AACd,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK;QACjC,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,YAAY,EAAE,CACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACvB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9E;;;;;OAKG;IACH,eAAe,EAAE,CACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3C;;;;;;;OAOG;IACH,gBAAgB,EAAE,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,KACjB,UAAU,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5C,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,mBAAmB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACvD,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IAChD,YAAY,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IAChD,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACtD,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;IACnD,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,UAAU,CAAA;CACrD;AAED,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAsFD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AA+DD;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}