@lifi/perps-sdk 0.1.1-alpha.9 → 0.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/README.md +38 -15
  2. package/dist/cjs/agent/AgentManager.d.ts +5 -5
  3. package/dist/cjs/agent/AgentManager.d.ts.map +1 -1
  4. package/dist/cjs/agent/AgentManager.js +16 -14
  5. package/dist/cjs/agent/AgentManager.js.map +1 -1
  6. package/dist/cjs/client/PerpsClient.d.ts +75 -21
  7. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  8. package/dist/cjs/client/PerpsClient.js +642 -173
  9. package/dist/cjs/client/PerpsClient.js.map +1 -1
  10. package/dist/cjs/client/createPerpsClient.d.ts +15 -2
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  12. package/dist/cjs/client/createPerpsClient.js +6 -3
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  14. package/dist/cjs/client/projectAccountConfigSettings.d.ts +3 -0
  15. package/dist/cjs/client/projectAccountConfigSettings.d.ts.map +1 -0
  16. package/dist/cjs/client/projectAccountConfigSettings.js +17 -0
  17. package/dist/cjs/client/projectAccountConfigSettings.js.map +1 -0
  18. package/dist/cjs/client/types.d.ts +49 -26
  19. package/dist/cjs/client/types.d.ts.map +1 -1
  20. package/dist/cjs/client/types.js +6 -0
  21. package/dist/cjs/client/types.js.map +1 -1
  22. package/dist/cjs/errors/PerpsError.d.ts +2 -3
  23. package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
  24. package/dist/cjs/errors/PerpsError.js +3 -15
  25. package/dist/cjs/errors/PerpsError.js.map +1 -1
  26. package/dist/cjs/errors/constants.d.ts +0 -10
  27. package/dist/cjs/errors/constants.d.ts.map +1 -1
  28. package/dist/cjs/errors/constants.js +1 -12
  29. package/dist/cjs/errors/constants.js.map +1 -1
  30. package/dist/cjs/index.d.ts +37 -31
  31. package/dist/cjs/index.d.ts.map +1 -1
  32. package/dist/cjs/index.js +87 -42
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/cjs/providers/hyperliquid/accountConfig.d.ts +3 -0
  35. package/dist/cjs/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  36. package/dist/cjs/providers/hyperliquid/accountConfig.js +41 -0
  37. package/dist/cjs/providers/hyperliquid/accountConfig.js.map +1 -0
  38. package/dist/cjs/providers/lighter/accountConfig.d.ts +3 -0
  39. package/dist/cjs/providers/lighter/accountConfig.d.ts.map +1 -0
  40. package/dist/cjs/providers/lighter/accountConfig.js +45 -0
  41. package/dist/cjs/providers/lighter/accountConfig.js.map +1 -0
  42. package/dist/cjs/realtime/PerpsWsClient.d.ts +7 -1
  43. package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
  44. package/dist/cjs/realtime/PerpsWsClient.js +36 -23
  45. package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
  46. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
  47. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  48. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +158 -52
  49. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  50. package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
  51. package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
  52. package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts +48 -0
  53. package/dist/cjs/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  54. package/dist/cjs/realtime/lighter/LighterWsProvider.js +424 -0
  55. package/dist/cjs/realtime/lighter/LighterWsProvider.js.map +1 -0
  56. package/dist/cjs/realtime/lighter/types.d.ts +84 -0
  57. package/dist/cjs/realtime/lighter/types.d.ts.map +1 -0
  58. package/dist/cjs/{dex → realtime/lighter}/types.js.map +1 -1
  59. package/dist/cjs/services/createAction.d.ts +11 -0
  60. package/dist/cjs/services/createAction.d.ts.map +1 -0
  61. package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
  62. package/dist/cjs/services/createAction.js.map +1 -0
  63. package/dist/cjs/services/executeAction.d.ts +11 -0
  64. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  65. package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
  66. package/dist/cjs/services/executeAction.js.map +1 -0
  67. package/dist/cjs/services/getAccount.d.ts +1 -1
  68. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  69. package/dist/cjs/services/getAccount.js +1 -1
  70. package/dist/cjs/services/getAccount.js.map +1 -1
  71. package/dist/cjs/services/getActivity.d.ts +13 -0
  72. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  73. package/dist/cjs/services/getActivity.js +21 -0
  74. package/dist/cjs/services/getActivity.js.map +1 -0
  75. package/dist/cjs/services/getAsset.d.ts +8 -0
  76. package/dist/cjs/services/getAsset.d.ts.map +1 -0
  77. package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
  78. package/dist/cjs/services/getAsset.js.map +1 -0
  79. package/dist/cjs/services/getAssets.d.ts +7 -0
  80. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  81. package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
  82. package/dist/cjs/services/getAssets.js.map +1 -0
  83. package/dist/cjs/services/getFills.d.ts +12 -0
  84. package/dist/cjs/services/getFills.d.ts.map +1 -0
  85. package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
  86. package/dist/cjs/services/getFills.js.map +1 -0
  87. package/dist/cjs/services/getOhlcv.d.ts +1 -1
  88. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  89. package/dist/cjs/services/getOhlcv.js +2 -2
  90. package/dist/cjs/services/getOhlcv.js.map +1 -1
  91. package/dist/cjs/services/getOrder.d.ts +1 -1
  92. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  93. package/dist/cjs/services/getOrder.js +2 -2
  94. package/dist/cjs/services/getOrder.js.map +1 -1
  95. package/dist/cjs/services/getOrderbook.d.ts +1 -1
  96. package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
  97. package/dist/cjs/services/getOrderbook.js +2 -2
  98. package/dist/cjs/services/getOrderbook.js.map +1 -1
  99. package/dist/cjs/services/getOrders.d.ts +11 -0
  100. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  101. package/dist/cjs/services/getOrders.js +15 -0
  102. package/dist/cjs/services/getOrders.js.map +1 -0
  103. package/dist/cjs/services/getPositions.d.ts +11 -0
  104. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  105. package/dist/cjs/services/getPositions.js +15 -0
  106. package/dist/cjs/services/getPositions.js.map +1 -0
  107. package/dist/cjs/services/getPrices.d.ts +1 -1
  108. package/dist/cjs/services/getPrices.d.ts.map +1 -1
  109. package/dist/cjs/services/getPrices.js +1 -1
  110. package/dist/cjs/services/getPrices.js.map +1 -1
  111. package/dist/cjs/services/getProviders.d.ts +4 -0
  112. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  113. package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
  114. package/dist/cjs/services/getProviders.js.map +1 -0
  115. package/dist/cjs/signers/lighter/LighterKeyStore.d.ts +20 -0
  116. package/dist/cjs/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  117. package/dist/cjs/signers/lighter/LighterKeyStore.js +42 -0
  118. package/dist/cjs/signers/lighter/LighterKeyStore.js.map +1 -0
  119. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts +66 -0
  120. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  121. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js +141 -0
  122. package/dist/cjs/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
  123. package/dist/cjs/signers/lighter/LighterSigner.d.ts +41 -0
  124. package/dist/cjs/signers/lighter/LighterSigner.d.ts.map +1 -0
  125. package/dist/cjs/signers/lighter/LighterSigner.js +176 -0
  126. package/dist/cjs/signers/lighter/LighterSigner.js.map +1 -0
  127. package/dist/cjs/signers/lighter/index.d.ts +9 -0
  128. package/dist/cjs/signers/lighter/index.d.ts.map +1 -0
  129. package/dist/cjs/signers/lighter/index.js +20 -0
  130. package/dist/cjs/signers/lighter/index.js.map +1 -0
  131. package/dist/cjs/signers/lighter/wasmLoader.d.ts +42 -0
  132. package/dist/cjs/signers/lighter/wasmLoader.d.ts.map +1 -0
  133. package/dist/cjs/signers/lighter/wasmLoader.js +166 -0
  134. package/dist/cjs/signers/lighter/wasmLoader.js.map +1 -0
  135. package/dist/cjs/utils/accountSummary.d.ts +9 -0
  136. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  137. package/dist/cjs/utils/accountSummary.js +83 -0
  138. package/dist/cjs/utils/accountSummary.js.map +1 -0
  139. package/dist/cjs/utils/assertNever.d.ts +2 -0
  140. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  141. package/dist/cjs/utils/assertNever.js +7 -0
  142. package/dist/cjs/utils/assertNever.js.map +1 -0
  143. package/dist/cjs/utils/calculations.d.ts +16 -0
  144. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  145. package/dist/cjs/utils/calculations.js +71 -0
  146. package/dist/cjs/utils/calculations.js.map +1 -0
  147. package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
  148. package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
  149. package/dist/cjs/utils/hyperliquid/index.js +11 -0
  150. package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
  151. package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
  152. package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
  153. package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
  154. package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
  155. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
  156. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  157. package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
  158. package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
  159. package/dist/cjs/utils/orderClassification.d.ts +8 -0
  160. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  161. package/dist/cjs/utils/orderClassification.js +39 -0
  162. package/dist/cjs/utils/orderClassification.js.map +1 -0
  163. package/dist/cjs/utils/orderMath.d.ts +6 -0
  164. package/dist/cjs/utils/orderMath.d.ts.map +1 -0
  165. package/dist/cjs/utils/orderMath.js +71 -0
  166. package/dist/cjs/utils/orderMath.js.map +1 -0
  167. package/dist/cjs/utils/parse.d.ts +2 -0
  168. package/dist/cjs/utils/parse.d.ts.map +1 -0
  169. package/dist/cjs/utils/parse.js +14 -0
  170. package/dist/cjs/utils/parse.js.map +1 -0
  171. package/dist/cjs/utils/positionMath.d.ts +26 -0
  172. package/dist/cjs/utils/positionMath.d.ts.map +1 -0
  173. package/dist/cjs/utils/positionMath.js +38 -0
  174. package/dist/cjs/utils/positionMath.js.map +1 -0
  175. package/dist/cjs/utils/request.d.ts.map +1 -1
  176. package/dist/cjs/utils/request.js +19 -4
  177. package/dist/cjs/utils/request.js.map +1 -1
  178. package/dist/cjs/utils/signTypedData.d.ts +2 -0
  179. package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
  180. package/dist/cjs/utils/signTypedData.js +10 -3
  181. package/dist/cjs/utils/signTypedData.js.map +1 -1
  182. package/dist/cjs/utils/units.d.ts +3 -0
  183. package/dist/cjs/utils/units.d.ts.map +1 -0
  184. package/dist/cjs/utils/units.js +18 -0
  185. package/dist/cjs/utils/units.js.map +1 -0
  186. package/dist/cjs/utils/validation.d.ts +2 -0
  187. package/dist/cjs/utils/validation.d.ts.map +1 -0
  188. package/dist/cjs/utils/validation.js +16 -0
  189. package/dist/cjs/utils/validation.js.map +1 -0
  190. package/dist/cjs/version.d.ts +1 -1
  191. package/dist/cjs/version.js +1 -1
  192. package/dist/cjs/wasm/lighter-signer.wasm +0 -0
  193. package/dist/cjs/wasm/wasm_exec.js +575 -0
  194. package/dist/esm/agent/AgentManager.d.ts +9 -9
  195. package/dist/esm/agent/AgentManager.d.ts.map +1 -1
  196. package/dist/esm/agent/AgentManager.js +20 -18
  197. package/dist/esm/agent/AgentManager.js.map +1 -1
  198. package/dist/esm/agent/storage.d.ts +1 -1
  199. package/dist/esm/agent/storage.js +1 -1
  200. package/dist/esm/client/PerpsClient.d.ts +226 -144
  201. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  202. package/dist/esm/client/PerpsClient.js +869 -320
  203. package/dist/esm/client/PerpsClient.js.map +1 -1
  204. package/dist/esm/client/createPerpsClient.d.ts +30 -51
  205. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  206. package/dist/esm/client/createPerpsClient.js +6 -21
  207. package/dist/esm/client/createPerpsClient.js.map +1 -1
  208. package/dist/esm/client/projectAccountConfigSettings.d.ts +18 -0
  209. package/dist/esm/client/projectAccountConfigSettings.d.ts.map +1 -0
  210. package/dist/esm/client/projectAccountConfigSettings.js +29 -0
  211. package/dist/esm/client/projectAccountConfigSettings.js.map +1 -0
  212. package/dist/esm/client/types.d.ts +115 -49
  213. package/dist/esm/client/types.d.ts.map +1 -1
  214. package/dist/esm/client/types.js +11 -1
  215. package/dist/esm/client/types.js.map +1 -1
  216. package/dist/esm/errors/PerpsError.d.ts +2 -3
  217. package/dist/esm/errors/PerpsError.d.ts.map +1 -1
  218. package/dist/esm/errors/PerpsError.js +3 -15
  219. package/dist/esm/errors/PerpsError.js.map +1 -1
  220. package/dist/esm/errors/constants.d.ts +0 -10
  221. package/dist/esm/errors/constants.d.ts.map +1 -1
  222. package/dist/esm/errors/constants.js +0 -11
  223. package/dist/esm/errors/constants.js.map +1 -1
  224. package/dist/esm/index.d.ts +37 -31
  225. package/dist/esm/index.d.ts.map +1 -1
  226. package/dist/esm/index.js +27 -22
  227. package/dist/esm/index.js.map +1 -1
  228. package/dist/esm/providers/hyperliquid/accountConfig.d.ts +13 -0
  229. package/dist/esm/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  230. package/dist/esm/providers/hyperliquid/accountConfig.js +69 -0
  231. package/dist/esm/providers/hyperliquid/accountConfig.js.map +1 -0
  232. package/dist/esm/providers/lighter/accountConfig.d.ts +13 -0
  233. package/dist/esm/providers/lighter/accountConfig.d.ts.map +1 -0
  234. package/dist/esm/providers/lighter/accountConfig.js +79 -0
  235. package/dist/esm/providers/lighter/accountConfig.js.map +1 -0
  236. package/dist/esm/realtime/PerpsWsClient.d.ts +13 -1
  237. package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
  238. package/dist/esm/realtime/PerpsWsClient.js +36 -23
  239. package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
  240. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  241. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  242. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +170 -53
  243. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  244. package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
  245. package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
  246. package/dist/esm/realtime/lighter/LighterWsProvider.d.ts +68 -0
  247. package/dist/esm/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  248. package/dist/esm/realtime/lighter/LighterWsProvider.js +474 -0
  249. package/dist/esm/realtime/lighter/LighterWsProvider.js.map +1 -0
  250. package/dist/esm/realtime/lighter/types.d.ts +108 -0
  251. package/dist/esm/realtime/lighter/types.d.ts.map +1 -0
  252. package/dist/esm/realtime/lighter/types.js +14 -0
  253. package/dist/esm/realtime/lighter/types.js.map +1 -0
  254. package/dist/esm/services/createAction.d.ts +11 -0
  255. package/dist/esm/services/createAction.d.ts.map +1 -0
  256. package/dist/esm/services/createAction.js +14 -0
  257. package/dist/esm/services/createAction.js.map +1 -0
  258. package/dist/esm/services/executeAction.d.ts +11 -0
  259. package/dist/esm/services/executeAction.d.ts.map +1 -0
  260. package/dist/esm/services/executeAction.js +14 -0
  261. package/dist/esm/services/executeAction.js.map +1 -0
  262. package/dist/esm/services/getAccount.d.ts +7 -7
  263. package/dist/esm/services/getAccount.d.ts.map +1 -1
  264. package/dist/esm/services/getAccount.js +6 -6
  265. package/dist/esm/services/getAccount.js.map +1 -1
  266. package/dist/esm/services/getActivity.d.ts +49 -0
  267. package/dist/esm/services/getActivity.d.ts.map +1 -0
  268. package/dist/esm/services/getActivity.js +47 -0
  269. package/dist/esm/services/getActivity.js.map +1 -0
  270. package/dist/esm/services/getAsset.d.ts +20 -0
  271. package/dist/esm/services/getAsset.d.ts.map +1 -0
  272. package/dist/esm/services/getAsset.js +18 -0
  273. package/dist/esm/services/getAsset.js.map +1 -0
  274. package/dist/esm/services/getAssets.d.ts +18 -0
  275. package/dist/esm/services/getAssets.d.ts.map +1 -0
  276. package/dist/esm/services/getAssets.js +18 -0
  277. package/dist/esm/services/getAssets.js.map +1 -0
  278. package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
  279. package/dist/esm/services/getFills.d.ts.map +1 -0
  280. package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
  281. package/dist/esm/services/getFills.js.map +1 -0
  282. package/dist/esm/services/getOhlcv.d.ts +4 -4
  283. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  284. package/dist/esm/services/getOhlcv.js +4 -4
  285. package/dist/esm/services/getOhlcv.js.map +1 -1
  286. package/dist/esm/services/getOrder.d.ts +4 -4
  287. package/dist/esm/services/getOrder.d.ts.map +1 -1
  288. package/dist/esm/services/getOrder.js +4 -4
  289. package/dist/esm/services/getOrder.js.map +1 -1
  290. package/dist/esm/services/getOrderbook.d.ts +4 -4
  291. package/dist/esm/services/getOrderbook.d.ts.map +1 -1
  292. package/dist/esm/services/getOrderbook.js +4 -4
  293. package/dist/esm/services/getOrderbook.js.map +1 -1
  294. package/dist/esm/services/getOrders.d.ts +27 -0
  295. package/dist/esm/services/getOrders.d.ts.map +1 -0
  296. package/dist/esm/services/getOrders.js +23 -0
  297. package/dist/esm/services/getOrders.js.map +1 -0
  298. package/dist/esm/services/getPositions.d.ts +27 -0
  299. package/dist/esm/services/getPositions.d.ts.map +1 -0
  300. package/dist/esm/services/getPositions.js +23 -0
  301. package/dist/esm/services/getPositions.js.map +1 -0
  302. package/dist/esm/services/getPrices.d.ts +5 -5
  303. package/dist/esm/services/getPrices.d.ts.map +1 -1
  304. package/dist/esm/services/getPrices.js +4 -4
  305. package/dist/esm/services/getPrices.js.map +1 -1
  306. package/dist/esm/services/getProviders.d.ts +20 -0
  307. package/dist/esm/services/getProviders.d.ts.map +1 -0
  308. package/dist/esm/services/getProviders.js +21 -0
  309. package/dist/esm/services/getProviders.js.map +1 -0
  310. package/dist/esm/signers/lighter/LighterKeyStore.d.ts +29 -0
  311. package/dist/esm/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  312. package/dist/esm/signers/lighter/LighterKeyStore.js +53 -0
  313. package/dist/esm/signers/lighter/LighterKeyStore.js.map +1 -0
  314. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
  315. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  316. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js +214 -0
  317. package/dist/esm/signers/lighter/LighterReadOnlyTokenManager.js.map +1 -0
  318. package/dist/esm/signers/lighter/LighterSigner.d.ts +88 -0
  319. package/dist/esm/signers/lighter/LighterSigner.d.ts.map +1 -0
  320. package/dist/esm/signers/lighter/LighterSigner.js +226 -0
  321. package/dist/esm/signers/lighter/LighterSigner.js.map +1 -0
  322. package/dist/esm/signers/lighter/index.d.ts +9 -0
  323. package/dist/esm/signers/lighter/index.d.ts.map +1 -0
  324. package/dist/esm/signers/lighter/index.js +5 -0
  325. package/dist/esm/signers/lighter/index.js.map +1 -0
  326. package/dist/esm/signers/lighter/wasmLoader.d.ts +71 -0
  327. package/dist/esm/signers/lighter/wasmLoader.d.ts.map +1 -0
  328. package/dist/esm/signers/lighter/wasmLoader.js +181 -0
  329. package/dist/esm/signers/lighter/wasmLoader.js.map +1 -0
  330. package/dist/esm/utils/accountSummary.d.ts +13 -0
  331. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  332. package/dist/esm/utils/accountSummary.js +97 -0
  333. package/dist/esm/utils/accountSummary.js.map +1 -0
  334. package/dist/esm/utils/assertNever.d.ts +19 -0
  335. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  336. package/dist/esm/utils/assertNever.js +21 -0
  337. package/dist/esm/utils/assertNever.js.map +1 -0
  338. package/dist/esm/utils/calculations.d.ts +109 -0
  339. package/dist/esm/utils/calculations.d.ts.map +1 -0
  340. package/dist/esm/utils/calculations.js +154 -0
  341. package/dist/esm/utils/calculations.js.map +1 -0
  342. package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
  343. package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
  344. package/dist/esm/utils/hyperliquid/index.js +3 -0
  345. package/dist/esm/utils/hyperliquid/index.js.map +1 -0
  346. package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
  347. package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
  348. package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
  349. package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
  350. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
  351. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  352. package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
  353. package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
  354. package/dist/esm/utils/orderClassification.d.ts +29 -0
  355. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  356. package/dist/esm/utils/orderClassification.js +53 -0
  357. package/dist/esm/utils/orderClassification.js.map +1 -0
  358. package/dist/esm/utils/orderMath.d.ts +40 -0
  359. package/dist/esm/utils/orderMath.d.ts.map +1 -0
  360. package/dist/esm/utils/orderMath.js +99 -0
  361. package/dist/esm/utils/orderMath.js.map +1 -0
  362. package/dist/esm/utils/parse.d.ts +18 -0
  363. package/dist/esm/utils/parse.d.ts.map +1 -0
  364. package/dist/esm/utils/parse.js +28 -0
  365. package/dist/esm/utils/parse.js.map +1 -0
  366. package/dist/esm/utils/positionMath.d.ts +78 -0
  367. package/dist/esm/utils/positionMath.d.ts.map +1 -0
  368. package/dist/esm/utils/positionMath.js +83 -0
  369. package/dist/esm/utils/positionMath.js.map +1 -0
  370. package/dist/esm/utils/request.d.ts +1 -2
  371. package/dist/esm/utils/request.d.ts.map +1 -1
  372. package/dist/esm/utils/request.js +23 -7
  373. package/dist/esm/utils/request.js.map +1 -1
  374. package/dist/esm/utils/signTypedData.d.ts +8 -10
  375. package/dist/esm/utils/signTypedData.d.ts.map +1 -1
  376. package/dist/esm/utils/signTypedData.js +15 -14
  377. package/dist/esm/utils/signTypedData.js.map +1 -1
  378. package/dist/esm/utils/units.d.ts +20 -0
  379. package/dist/esm/utils/units.d.ts.map +1 -0
  380. package/dist/esm/utils/units.js +31 -0
  381. package/dist/esm/utils/units.js.map +1 -0
  382. package/dist/esm/utils/validation.d.ts +15 -0
  383. package/dist/esm/utils/validation.d.ts.map +1 -0
  384. package/dist/esm/utils/validation.js +26 -0
  385. package/dist/esm/utils/validation.js.map +1 -0
  386. package/dist/esm/version.d.ts +1 -1
  387. package/dist/esm/version.js +1 -1
  388. package/dist/esm/wasm/lighter-signer.wasm +0 -0
  389. package/dist/esm/wasm/wasm_exec.js +575 -0
  390. package/dist/types/agent/AgentManager.d.ts +9 -9
  391. package/dist/types/agent/AgentManager.d.ts.map +1 -1
  392. package/dist/types/agent/storage.d.ts +1 -1
  393. package/dist/types/client/PerpsClient.d.ts +226 -144
  394. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  395. package/dist/types/client/createPerpsClient.d.ts +30 -51
  396. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  397. package/dist/types/client/projectAccountConfigSettings.d.ts +18 -0
  398. package/dist/types/client/projectAccountConfigSettings.d.ts.map +1 -0
  399. package/dist/types/client/types.d.ts +115 -49
  400. package/dist/types/client/types.d.ts.map +1 -1
  401. package/dist/types/errors/PerpsError.d.ts +2 -3
  402. package/dist/types/errors/PerpsError.d.ts.map +1 -1
  403. package/dist/types/errors/constants.d.ts +0 -10
  404. package/dist/types/errors/constants.d.ts.map +1 -1
  405. package/dist/types/index.d.ts +37 -31
  406. package/dist/types/index.d.ts.map +1 -1
  407. package/dist/types/providers/hyperliquid/accountConfig.d.ts +13 -0
  408. package/dist/types/providers/hyperliquid/accountConfig.d.ts.map +1 -0
  409. package/dist/types/providers/lighter/accountConfig.d.ts +13 -0
  410. package/dist/types/providers/lighter/accountConfig.d.ts.map +1 -0
  411. package/dist/types/realtime/PerpsWsClient.d.ts +13 -1
  412. package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
  413. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  414. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  415. package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
  416. package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
  417. package/dist/types/realtime/lighter/LighterWsProvider.d.ts +68 -0
  418. package/dist/types/realtime/lighter/LighterWsProvider.d.ts.map +1 -0
  419. package/dist/types/realtime/lighter/types.d.ts +108 -0
  420. package/dist/types/realtime/lighter/types.d.ts.map +1 -0
  421. package/dist/types/services/createAction.d.ts +11 -0
  422. package/dist/types/services/createAction.d.ts.map +1 -0
  423. package/dist/types/services/executeAction.d.ts +11 -0
  424. package/dist/types/services/executeAction.d.ts.map +1 -0
  425. package/dist/types/services/getAccount.d.ts +7 -7
  426. package/dist/types/services/getAccount.d.ts.map +1 -1
  427. package/dist/types/services/getActivity.d.ts +49 -0
  428. package/dist/types/services/getActivity.d.ts.map +1 -0
  429. package/dist/types/services/getAsset.d.ts +20 -0
  430. package/dist/types/services/getAsset.d.ts.map +1 -0
  431. package/dist/types/services/getAssets.d.ts +18 -0
  432. package/dist/types/services/getAssets.d.ts.map +1 -0
  433. package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
  434. package/dist/types/services/getFills.d.ts.map +1 -0
  435. package/dist/types/services/getOhlcv.d.ts +4 -4
  436. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  437. package/dist/types/services/getOrder.d.ts +4 -4
  438. package/dist/types/services/getOrder.d.ts.map +1 -1
  439. package/dist/types/services/getOrderbook.d.ts +4 -4
  440. package/dist/types/services/getOrderbook.d.ts.map +1 -1
  441. package/dist/types/services/getOrders.d.ts +27 -0
  442. package/dist/types/services/getOrders.d.ts.map +1 -0
  443. package/dist/types/services/getPositions.d.ts +27 -0
  444. package/dist/types/services/getPositions.d.ts.map +1 -0
  445. package/dist/types/services/getPrices.d.ts +5 -5
  446. package/dist/types/services/getPrices.d.ts.map +1 -1
  447. package/dist/types/services/getProviders.d.ts +20 -0
  448. package/dist/types/services/getProviders.d.ts.map +1 -0
  449. package/dist/types/signers/lighter/LighterKeyStore.d.ts +29 -0
  450. package/dist/types/signers/lighter/LighterKeyStore.d.ts.map +1 -0
  451. package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts +174 -0
  452. package/dist/types/signers/lighter/LighterReadOnlyTokenManager.d.ts.map +1 -0
  453. package/dist/types/signers/lighter/LighterSigner.d.ts +88 -0
  454. package/dist/types/signers/lighter/LighterSigner.d.ts.map +1 -0
  455. package/dist/types/signers/lighter/index.d.ts +9 -0
  456. package/dist/types/signers/lighter/index.d.ts.map +1 -0
  457. package/dist/types/signers/lighter/wasmLoader.d.ts +71 -0
  458. package/dist/types/signers/lighter/wasmLoader.d.ts.map +1 -0
  459. package/dist/types/utils/accountSummary.d.ts +13 -0
  460. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  461. package/dist/types/utils/assertNever.d.ts +19 -0
  462. package/dist/types/utils/assertNever.d.ts.map +1 -0
  463. package/dist/types/utils/calculations.d.ts +109 -0
  464. package/dist/types/utils/calculations.d.ts.map +1 -0
  465. package/dist/types/utils/hyperliquid/index.d.ts +3 -0
  466. package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
  467. package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
  468. package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
  469. package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
  470. package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  471. package/dist/types/utils/orderClassification.d.ts +29 -0
  472. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  473. package/dist/types/utils/orderMath.d.ts +40 -0
  474. package/dist/types/utils/orderMath.d.ts.map +1 -0
  475. package/dist/types/utils/parse.d.ts +18 -0
  476. package/dist/types/utils/parse.d.ts.map +1 -0
  477. package/dist/types/utils/positionMath.d.ts +78 -0
  478. package/dist/types/utils/positionMath.d.ts.map +1 -0
  479. package/dist/types/utils/request.d.ts +1 -2
  480. package/dist/types/utils/request.d.ts.map +1 -1
  481. package/dist/types/utils/signTypedData.d.ts +8 -10
  482. package/dist/types/utils/signTypedData.d.ts.map +1 -1
  483. package/dist/types/utils/units.d.ts +20 -0
  484. package/dist/types/utils/units.d.ts.map +1 -0
  485. package/dist/types/utils/validation.d.ts +15 -0
  486. package/dist/types/utils/validation.d.ts.map +1 -0
  487. package/dist/types/version.d.ts +1 -1
  488. package/package.json +15 -6
  489. package/src/agent/AgentManager.ts +21 -19
  490. package/src/agent/storage.ts +1 -1
  491. package/src/client/PerpsClient.ts +1221 -396
  492. package/src/client/createPerpsClient.ts +39 -54
  493. package/src/client/projectAccountConfigSettings.ts +39 -0
  494. package/src/client/types.ts +130 -52
  495. package/src/errors/PerpsError.ts +3 -22
  496. package/src/errors/constants.ts +0 -11
  497. package/src/index.ts +115 -47
  498. package/src/providers/hyperliquid/accountConfig.ts +92 -0
  499. package/src/providers/lighter/accountConfig.ts +103 -0
  500. package/src/realtime/PerpsWsClient.ts +67 -32
  501. package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +199 -64
  502. package/src/realtime/hyperliquid/types.ts +8 -10
  503. package/src/realtime/lighter/LighterWsProvider.ts +682 -0
  504. package/src/realtime/lighter/types.ts +121 -0
  505. package/src/services/createAction.ts +41 -0
  506. package/src/services/executeAction.ts +41 -0
  507. package/src/services/getAccount.ts +8 -8
  508. package/src/services/getActivity.ts +77 -0
  509. package/src/services/getAsset.ts +37 -0
  510. package/src/services/getAssets.ts +32 -0
  511. package/src/services/{getHistory.ts → getFills.ts} +23 -17
  512. package/src/services/getOhlcv.ts +14 -11
  513. package/src/services/getOrder.ts +11 -8
  514. package/src/services/getOrderbook.ts +11 -8
  515. package/src/services/getOrders.ts +45 -0
  516. package/src/services/getPositions.ts +45 -0
  517. package/src/services/getPrices.ts +6 -6
  518. package/src/services/{getDexes.ts → getProviders.ts} +10 -10
  519. package/src/signers/lighter/LighterKeyStore.ts +74 -0
  520. package/src/signers/lighter/LighterReadOnlyTokenManager.ts +358 -0
  521. package/src/signers/lighter/LighterSigner.ts +396 -0
  522. package/src/signers/lighter/index.ts +36 -0
  523. package/src/signers/lighter/wasmLoader.ts +291 -0
  524. package/src/utils/accountSummary.ts +130 -0
  525. package/src/utils/assertNever.ts +22 -0
  526. package/src/utils/calculations.ts +209 -0
  527. package/src/utils/hyperliquid/index.ts +9 -0
  528. package/src/utils/hyperliquid/liquidation.ts +71 -0
  529. package/src/utils/hyperliquid/orderFormatting.ts +96 -0
  530. package/src/utils/orderClassification.ts +64 -0
  531. package/src/utils/orderMath.ts +130 -0
  532. package/src/utils/parse.ts +28 -0
  533. package/src/utils/positionMath.ts +107 -0
  534. package/src/utils/request.ts +26 -7
  535. package/src/utils/signTypedData.ts +19 -15
  536. package/src/utils/units.ts +32 -0
  537. package/src/utils/validation.ts +35 -0
  538. package/src/version.ts +1 -1
  539. package/wasm/lighter-signer.wasm +0 -0
  540. package/wasm/wasm_exec.js +575 -0
  541. package/dist/cjs/dex/hyperliquid.d.ts +0 -3
  542. package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
  543. package/dist/cjs/dex/hyperliquid.js +0 -21
  544. package/dist/cjs/dex/hyperliquid.js.map +0 -1
  545. package/dist/cjs/dex/registry.d.ts +0 -3
  546. package/dist/cjs/dex/registry.d.ts.map +0 -1
  547. package/dist/cjs/dex/registry.js +0 -16
  548. package/dist/cjs/dex/registry.js.map +0 -1
  549. package/dist/cjs/dex/types.d.ts +0 -13
  550. package/dist/cjs/dex/types.d.ts.map +0 -1
  551. package/dist/cjs/errors/AgentError.d.ts +0 -10
  552. package/dist/cjs/errors/AgentError.d.ts.map +0 -1
  553. package/dist/cjs/errors/AgentError.js +0 -23
  554. package/dist/cjs/errors/AgentError.js.map +0 -1
  555. package/dist/cjs/errors/HTTPError.d.ts +0 -11
  556. package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
  557. package/dist/cjs/errors/HTTPError.js +0 -62
  558. package/dist/cjs/errors/HTTPError.js.map +0 -1
  559. package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
  560. package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
  561. package/dist/cjs/errors/PerpsSDKError.js +0 -36
  562. package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
  563. package/dist/cjs/errors/ServerError.d.ts +0 -10
  564. package/dist/cjs/errors/ServerError.d.ts.map +0 -1
  565. package/dist/cjs/errors/ServerError.js +0 -24
  566. package/dist/cjs/errors/ServerError.js.map +0 -1
  567. package/dist/cjs/errors/ValidationError.d.ts +0 -9
  568. package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
  569. package/dist/cjs/errors/ValidationError.js +0 -23
  570. package/dist/cjs/errors/ValidationError.js.map +0 -1
  571. package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
  572. package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
  573. package/dist/cjs/errors/utils/rootCause.js +0 -41
  574. package/dist/cjs/errors/utils/rootCause.js.map +0 -1
  575. package/dist/cjs/services/cancelOrder.d.ts +0 -10
  576. package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
  577. package/dist/cjs/services/cancelOrder.js +0 -16
  578. package/dist/cjs/services/cancelOrder.js.map +0 -1
  579. package/dist/cjs/services/createAuthorization.d.ts +0 -10
  580. package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
  581. package/dist/cjs/services/createAuthorization.js +0 -16
  582. package/dist/cjs/services/createAuthorization.js.map +0 -1
  583. package/dist/cjs/services/createOrder.d.ts +0 -21
  584. package/dist/cjs/services/createOrder.d.ts.map +0 -1
  585. package/dist/cjs/services/createOrder.js +0 -27
  586. package/dist/cjs/services/createOrder.js.map +0 -1
  587. package/dist/cjs/services/createWithdrawal.d.ts +0 -9
  588. package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
  589. package/dist/cjs/services/createWithdrawal.js +0 -15
  590. package/dist/cjs/services/createWithdrawal.js.map +0 -1
  591. package/dist/cjs/services/getDexes.d.ts +0 -4
  592. package/dist/cjs/services/getDexes.d.ts.map +0 -1
  593. package/dist/cjs/services/getDexes.js.map +0 -1
  594. package/dist/cjs/services/getHistory.d.ts +0 -10
  595. package/dist/cjs/services/getHistory.d.ts.map +0 -1
  596. package/dist/cjs/services/getHistory.js.map +0 -1
  597. package/dist/cjs/services/getMarket.d.ts +0 -8
  598. package/dist/cjs/services/getMarket.d.ts.map +0 -1
  599. package/dist/cjs/services/getMarket.js.map +0 -1
  600. package/dist/cjs/services/getMarkets.d.ts +0 -7
  601. package/dist/cjs/services/getMarkets.d.ts.map +0 -1
  602. package/dist/cjs/services/getMarkets.js.map +0 -1
  603. package/dist/cjs/services/submitAuthorization.d.ts +0 -10
  604. package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
  605. package/dist/cjs/services/submitAuthorization.js.map +0 -1
  606. package/dist/cjs/services/submitOrder.d.ts +0 -10
  607. package/dist/cjs/services/submitOrder.d.ts.map +0 -1
  608. package/dist/cjs/services/submitOrder.js.map +0 -1
  609. package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
  610. package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
  611. package/dist/cjs/services/submitWithdrawal.js +0 -15
  612. package/dist/cjs/services/submitWithdrawal.js.map +0 -1
  613. package/dist/esm/dex/hyperliquid.d.ts +0 -3
  614. package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
  615. package/dist/esm/dex/hyperliquid.js +0 -19
  616. package/dist/esm/dex/hyperliquid.js.map +0 -1
  617. package/dist/esm/dex/registry.d.ts +0 -3
  618. package/dist/esm/dex/registry.d.ts.map +0 -1
  619. package/dist/esm/dex/registry.js +0 -13
  620. package/dist/esm/dex/registry.js.map +0 -1
  621. package/dist/esm/dex/types.d.ts +0 -15
  622. package/dist/esm/dex/types.d.ts.map +0 -1
  623. package/dist/esm/dex/types.js +0 -2
  624. package/dist/esm/dex/types.js.map +0 -1
  625. package/dist/esm/errors/AgentError.d.ts +0 -25
  626. package/dist/esm/errors/AgentError.d.ts.map +0 -1
  627. package/dist/esm/errors/AgentError.js +0 -35
  628. package/dist/esm/errors/AgentError.js.map +0 -1
  629. package/dist/esm/errors/HTTPError.d.ts +0 -11
  630. package/dist/esm/errors/HTTPError.d.ts.map +0 -1
  631. package/dist/esm/errors/HTTPError.js +0 -61
  632. package/dist/esm/errors/HTTPError.js.map +0 -1
  633. package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
  634. package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
  635. package/dist/esm/errors/PerpsSDKError.js +0 -67
  636. package/dist/esm/errors/PerpsSDKError.js.map +0 -1
  637. package/dist/esm/errors/ServerError.d.ts +0 -23
  638. package/dist/esm/errors/ServerError.d.ts.map +0 -1
  639. package/dist/esm/errors/ServerError.js +0 -34
  640. package/dist/esm/errors/ServerError.js.map +0 -1
  641. package/dist/esm/errors/ValidationError.d.ts +0 -23
  642. package/dist/esm/errors/ValidationError.d.ts.map +0 -1
  643. package/dist/esm/errors/ValidationError.js +0 -34
  644. package/dist/esm/errors/ValidationError.js.map +0 -1
  645. package/dist/esm/errors/utils/rootCause.d.ts +0 -71
  646. package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
  647. package/dist/esm/errors/utils/rootCause.js +0 -99
  648. package/dist/esm/errors/utils/rootCause.js.map +0 -1
  649. package/dist/esm/services/cancelOrder.d.ts +0 -51
  650. package/dist/esm/services/cancelOrder.d.ts.map +0 -1
  651. package/dist/esm/services/cancelOrder.js +0 -50
  652. package/dist/esm/services/cancelOrder.js.map +0 -1
  653. package/dist/esm/services/createAuthorization.d.ts +0 -51
  654. package/dist/esm/services/createAuthorization.d.ts.map +0 -1
  655. package/dist/esm/services/createAuthorization.js +0 -50
  656. package/dist/esm/services/createAuthorization.js.map +0 -1
  657. package/dist/esm/services/createOrder.d.ts +0 -74
  658. package/dist/esm/services/createOrder.d.ts.map +0 -1
  659. package/dist/esm/services/createOrder.js +0 -62
  660. package/dist/esm/services/createOrder.js.map +0 -1
  661. package/dist/esm/services/createWithdrawal.d.ts +0 -49
  662. package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
  663. package/dist/esm/services/createWithdrawal.js +0 -49
  664. package/dist/esm/services/createWithdrawal.js.map +0 -1
  665. package/dist/esm/services/getDexes.d.ts +0 -20
  666. package/dist/esm/services/getDexes.d.ts.map +0 -1
  667. package/dist/esm/services/getDexes.js +0 -21
  668. package/dist/esm/services/getDexes.js.map +0 -1
  669. package/dist/esm/services/getHistory.d.ts.map +0 -1
  670. package/dist/esm/services/getHistory.js.map +0 -1
  671. package/dist/esm/services/getMarket.d.ts +0 -27
  672. package/dist/esm/services/getMarket.d.ts.map +0 -1
  673. package/dist/esm/services/getMarket.js +0 -25
  674. package/dist/esm/services/getMarket.js.map +0 -1
  675. package/dist/esm/services/getMarkets.d.ts +0 -25
  676. package/dist/esm/services/getMarkets.d.ts.map +0 -1
  677. package/dist/esm/services/getMarkets.js +0 -23
  678. package/dist/esm/services/getMarkets.js.map +0 -1
  679. package/dist/esm/services/submitAuthorization.d.ts +0 -42
  680. package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
  681. package/dist/esm/services/submitAuthorization.js +0 -41
  682. package/dist/esm/services/submitAuthorization.js.map +0 -1
  683. package/dist/esm/services/submitOrder.d.ts +0 -44
  684. package/dist/esm/services/submitOrder.d.ts.map +0 -1
  685. package/dist/esm/services/submitOrder.js +0 -43
  686. package/dist/esm/services/submitOrder.js.map +0 -1
  687. package/dist/esm/services/submitWithdrawal.d.ts +0 -40
  688. package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
  689. package/dist/esm/services/submitWithdrawal.js +0 -40
  690. package/dist/esm/services/submitWithdrawal.js.map +0 -1
  691. package/dist/types/dex/hyperliquid.d.ts +0 -3
  692. package/dist/types/dex/hyperliquid.d.ts.map +0 -1
  693. package/dist/types/dex/registry.d.ts +0 -3
  694. package/dist/types/dex/registry.d.ts.map +0 -1
  695. package/dist/types/dex/types.d.ts +0 -15
  696. package/dist/types/dex/types.d.ts.map +0 -1
  697. package/dist/types/errors/AgentError.d.ts +0 -25
  698. package/dist/types/errors/AgentError.d.ts.map +0 -1
  699. package/dist/types/errors/HTTPError.d.ts +0 -11
  700. package/dist/types/errors/HTTPError.d.ts.map +0 -1
  701. package/dist/types/errors/PerpsSDKError.d.ts +0 -40
  702. package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
  703. package/dist/types/errors/ServerError.d.ts +0 -23
  704. package/dist/types/errors/ServerError.d.ts.map +0 -1
  705. package/dist/types/errors/ValidationError.d.ts +0 -23
  706. package/dist/types/errors/ValidationError.d.ts.map +0 -1
  707. package/dist/types/errors/utils/rootCause.d.ts +0 -71
  708. package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
  709. package/dist/types/services/cancelOrder.d.ts +0 -51
  710. package/dist/types/services/cancelOrder.d.ts.map +0 -1
  711. package/dist/types/services/createAuthorization.d.ts +0 -51
  712. package/dist/types/services/createAuthorization.d.ts.map +0 -1
  713. package/dist/types/services/createOrder.d.ts +0 -74
  714. package/dist/types/services/createOrder.d.ts.map +0 -1
  715. package/dist/types/services/createWithdrawal.d.ts +0 -49
  716. package/dist/types/services/createWithdrawal.d.ts.map +0 -1
  717. package/dist/types/services/getDexes.d.ts +0 -20
  718. package/dist/types/services/getDexes.d.ts.map +0 -1
  719. package/dist/types/services/getHistory.d.ts.map +0 -1
  720. package/dist/types/services/getMarket.d.ts +0 -27
  721. package/dist/types/services/getMarket.d.ts.map +0 -1
  722. package/dist/types/services/getMarkets.d.ts +0 -25
  723. package/dist/types/services/getMarkets.d.ts.map +0 -1
  724. package/dist/types/services/submitAuthorization.d.ts +0 -42
  725. package/dist/types/services/submitAuthorization.d.ts.map +0 -1
  726. package/dist/types/services/submitOrder.d.ts +0 -44
  727. package/dist/types/services/submitOrder.d.ts.map +0 -1
  728. package/dist/types/services/submitWithdrawal.d.ts +0 -40
  729. package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
  730. package/src/dex/hyperliquid.ts +0 -20
  731. package/src/dex/registry.ts +0 -15
  732. package/src/dex/types.ts +0 -16
  733. package/src/errors/AgentError.ts +0 -43
  734. package/src/errors/HTTPError.ts +0 -72
  735. package/src/errors/PerpsSDKError.ts +0 -79
  736. package/src/errors/ServerError.ts +0 -41
  737. package/src/errors/ValidationError.ts +0 -38
  738. package/src/errors/utils/rootCause.ts +0 -112
  739. package/src/services/cancelOrder.ts +0 -75
  740. package/src/services/createAuthorization.ts +0 -79
  741. package/src/services/createOrder.ts +0 -116
  742. package/src/services/createWithdrawal.ts +0 -76
  743. package/src/services/getMarket.ts +0 -41
  744. package/src/services/getMarkets.ts +0 -37
  745. package/src/services/submitAuthorization.ts +0 -70
  746. package/src/services/submitOrder.ts +0 -72
  747. package/src/services/submitWithdrawal.ts +0 -67
  748. /package/dist/cjs/{dex → realtime/lighter}/types.js +0 -0
@@ -0,0 +1,45 @@
1
+ import type { Address, PositionsResponse } from '@lifi/perps-types'
2
+ import type {
3
+ PerpsSDKClient,
4
+ SDKRequestOptions,
5
+ } from '../client/createPerpsClient.js'
6
+ import { buildUrl, request } from '../utils/request.js'
7
+
8
+ export interface GetPositionsParams {
9
+ /** Provider (e.g., 'hyperliquid') */
10
+ provider: string
11
+ /** Wallet address */
12
+ address: Address
13
+ /** Optional symbol to filter to a single position */
14
+ symbol?: string
15
+ /** Maximum number of results */
16
+ limit?: number
17
+ /** Pagination cursor */
18
+ cursor?: string
19
+ }
20
+
21
+ /**
22
+ * Get open positions for an account.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const { positions } = await getPositions(client, {
27
+ * provider: 'hyperliquid',
28
+ * address: '0x1234...',
29
+ * })
30
+ * ```
31
+ */
32
+ export async function getPositions(
33
+ client: PerpsSDKClient,
34
+ params: GetPositionsParams,
35
+ options?: SDKRequestOptions
36
+ ): Promise<PositionsResponse> {
37
+ const url = buildUrl(`${client.config.apiUrl}/positions`, {
38
+ provider: params.provider,
39
+ address: params.address,
40
+ ...(params.symbol ? { symbol: params.symbol } : {}),
41
+ ...(params.limit ? { limit: String(params.limit) } : {}),
42
+ ...(params.cursor ? { cursor: params.cursor } : {}),
43
+ })
44
+ return request<PositionsResponse>(client.config, url, {}, options)
45
+ }
@@ -6,8 +6,8 @@ import type {
6
6
  import { buildUrl, request } from '../utils/request.js'
7
7
 
8
8
  export interface GetPricesParams {
9
- /** DEX to get prices from (e.g., 'hyperliquid') */
10
- dex: string
9
+ /** Provider to get prices from (e.g., 'hyperliquid') */
10
+ provider: string
11
11
  /** Optional list of symbols to filter (e.g., ['BTC', 'ETH']) */
12
12
  symbols?: string[]
13
13
  }
@@ -19,18 +19,18 @@ export interface GetPricesParams {
19
19
  * @param params - Request parameters
20
20
  * @param options - Request options (e.g., AbortSignal)
21
21
  * @returns Map of symbol to price
22
- * @throws {HTTPError} On API error responses
22
+ * @throws {PerpsError} On API error responses
23
23
  * @throws {PerpsError} On network or parsing errors
24
24
  *
25
25
  * @example
26
26
  * ```ts
27
27
  * const client = createPerpsClient({ integrator: 'my-app' })
28
- * const { prices } = await getPrices(client, { dex: 'hyperliquid' })
28
+ * const { prices } = await getPrices(client, { provider: 'hyperliquid' })
29
29
  * console.log(prices) // { BTC: '95000.00', ETH: '3400.00', ... }
30
30
  *
31
31
  * // Filter by symbols
32
32
  * const { prices } = await getPrices(client, {
33
- * dex: 'hyperliquid',
33
+ * provider: 'hyperliquid',
34
34
  * symbols: ['BTC', 'ETH']
35
35
  * })
36
36
  * ```
@@ -41,7 +41,7 @@ export async function getPrices(
41
41
  options?: SDKRequestOptions
42
42
  ): Promise<PricesResponse> {
43
43
  const url = buildUrl(`${client.config.apiUrl}/prices`, {
44
- dex: params.dex,
44
+ provider: params.provider,
45
45
  symbols: params.symbols?.join(','),
46
46
  })
47
47
  return request<PricesResponse>(client.config, url, {}, options)
@@ -1,4 +1,4 @@
1
- import type { DexesResponse } from '@lifi/perps-types'
1
+ import type { ProvidersResponse } from '@lifi/perps-types'
2
2
  import type {
3
3
  PerpsSDKClient,
4
4
  SDKRequestOptions,
@@ -6,28 +6,28 @@ import type {
6
6
  import { request } from '../utils/request.js'
7
7
 
8
8
  /**
9
- * Get all available DEXes.
9
+ * Get all available providers.
10
10
  *
11
11
  * @param client - The SDK client instance
12
12
  * @param options - Request options (e.g., AbortSignal)
13
- * @returns List of supported DEXes with their authorization requirements
14
- * @throws {HTTPError} On API error responses
13
+ * @returns List of supported providers with their authorization requirements
14
+ * @throws {PerpsError} On API error responses
15
15
  * @throws {PerpsError} On network or parsing errors
16
16
  *
17
17
  * @example
18
18
  * ```ts
19
19
  * const client = createPerpsClient({ integrator: 'my-app' })
20
- * const { dexes } = await getDexes(client)
21
- * console.log(dexes) // [{ key: 'hyperliquid', name: 'Hyperliquid', ... }]
20
+ * const { providers } = await getProviders(client)
21
+ * console.log(providers) // [{ key: 'hyperliquid', name: 'Hyperliquid', ... }]
22
22
  * ```
23
23
  */
24
- export async function getDexes(
24
+ export async function getProviders(
25
25
  client: PerpsSDKClient,
26
26
  options?: SDKRequestOptions
27
- ): Promise<DexesResponse> {
28
- return request<DexesResponse>(
27
+ ): Promise<ProvidersResponse> {
28
+ return request<ProvidersResponse>(
29
29
  client.config,
30
- `${client.config.apiUrl}/dexes`,
30
+ `${client.config.apiUrl}/providers`,
31
31
  {},
32
32
  options
33
33
  )
@@ -0,0 +1,74 @@
1
+ import type { Address } from '@lifi/perps-types'
2
+ import type { StorageAdapter } from '../../agent/types.js'
3
+
4
+ // ---------------------------------------------------------------------------
5
+ // LighterKeyStore
6
+ //
7
+ // Persists the Lighter-native API keypair plus account/key indices per L1
8
+ // user address. Unlike AgentManager, the private key here is a Lighter custom
9
+ // keypair — generated via WASM GenerateAPIKey — not an Ethereum private key.
10
+ //
11
+ // We namespace the storage key by provider (`lighter`) so the same user can
12
+ // later hold credentials for other WASM-blob providers without collision.
13
+ // ---------------------------------------------------------------------------
14
+
15
+ const STORAGE_PREFIX = 'lifi-perps-lighter-key'
16
+ export const LIGHTER_PROVIDER_KEY = 'lighter'
17
+
18
+ /**
19
+ * Default API key slot. Reusing one slot is deliberate: Lighter allows 256
20
+ * slots per account but re-registering a slot overwrites the prior key, so
21
+ * a fixed slot keeps storage small and recovery simple.
22
+ */
23
+ export const DEFAULT_API_KEY_INDEX = 1
24
+
25
+ export interface LighterApiKey {
26
+ /** Lighter account index, looked up once via accountsByL1Address. */
27
+ accountIndex: number
28
+ /** API key slot (0-255). Defaults to {@link DEFAULT_API_KEY_INDEX}. */
29
+ apiKeyIndex: number
30
+ /** Lighter-native private key (0x-prefixed hex). */
31
+ apiKeyPrivateKey: string
32
+ /** Corresponding public key, registered via ChangePubKey. */
33
+ apiKeyPublicKey: string
34
+ }
35
+
36
+ export class LighterKeyStore {
37
+ private readonly storage: StorageAdapter
38
+ private readonly cache = new Map<string, LighterApiKey>()
39
+
40
+ constructor(storage: StorageAdapter) {
41
+ this.storage = storage
42
+ }
43
+
44
+ private storageKey(address: Address): string {
45
+ return `${STORAGE_PREFIX}:${address.toLowerCase()}`
46
+ }
47
+
48
+ async get(address: Address): Promise<LighterApiKey | null> {
49
+ const key = this.storageKey(address)
50
+ const cached = this.cache.get(key)
51
+ if (cached) {
52
+ return cached
53
+ }
54
+ const stored = await this.storage.get(key)
55
+ if (!stored) {
56
+ return null
57
+ }
58
+ const parsed = JSON.parse(stored) as LighterApiKey
59
+ this.cache.set(key, parsed)
60
+ return parsed
61
+ }
62
+
63
+ async set(address: Address, value: LighterApiKey): Promise<void> {
64
+ const key = this.storageKey(address)
65
+ this.cache.set(key, value)
66
+ await this.storage.set(key, JSON.stringify(value))
67
+ }
68
+
69
+ async remove(address: Address): Promise<void> {
70
+ const key = this.storageKey(address)
71
+ this.cache.delete(key)
72
+ await this.storage.remove(key)
73
+ }
74
+ }
@@ -0,0 +1,358 @@
1
+ import type {
2
+ Address,
3
+ ApproveReadOnlyTokenParams,
4
+ LighterAccountConfig,
5
+ } from '@lifi/perps-types'
6
+ import { PerpsErrorCode } from '@lifi/perps-types'
7
+ import type { Account, WalletClient } from 'viem'
8
+ import { localStorageAdapter } from '../../agent/storage.js'
9
+ import type { StorageAdapter } from '../../agent/types.js'
10
+ import { PerpsError } from '../../errors/PerpsError.js'
11
+
12
+ const STORAGE_PREFIX = 'lifi:perps:lighter:rotoken'
13
+
14
+ /**
15
+ * Default Lighter HTTP host the SDK posts the mint request to. Callers
16
+ * pointing at testnet pass an override via {@link LighterReadOnlyTokenManagerOptions.lighterApiUrl}.
17
+ */
18
+ export const DEFAULT_LIGHTER_API_URL = 'https://mainnet.zklighter.elliot.ai'
19
+
20
+ /**
21
+ * Default token name persisted alongside Lighter's `tokens/create` row.
22
+ * Lighter requires a non-empty `name` form field; the literal here is what
23
+ * surfaces in Lighter's UI listing under `app.lighter.xyz/read-only-tokens`.
24
+ */
25
+ export const DEFAULT_READ_ONLY_TOKEN_NAME = 'LI.FI Perps'
26
+
27
+ /**
28
+ * Persisted shape of a Lighter read-only token. The `token` string is
29
+ * Lighter's opaque `ro:{accountIndex}:{scope}:{expiry}:{rand}` bearer; the
30
+ * SDK never parses it — `expiry`/`scope`/`accountIndex` are mint-time inputs
31
+ * we keep alongside so consumers can render expiry UX without re-fetching.
32
+ */
33
+ export interface LighterReadOnlyToken {
34
+ /** Opaque bearer string — never parse client-side. */
35
+ token: string
36
+ /** Unix seconds. The SDK's source of truth for expiry. */
37
+ expiry: number
38
+ /** Lighter's `single | all` scope literal recorded at mint time. */
39
+ scope: 'single' | 'all'
40
+ /** Lighter L2 account index the token authorises. */
41
+ accountIndex: number
42
+ }
43
+
44
+ /**
45
+ * Lighter `POST /api/v1/tokens/create` response shape (subset). Lighter's
46
+ * OpenAPI documents additional fields (`token_id`, `name`, `revoked`, etc.)
47
+ * we don't need client-side.
48
+ */
49
+ export interface LighterCreateTokenResponse {
50
+ api_token: string
51
+ account_index: number
52
+ expiry: number
53
+ scopes: string
54
+ }
55
+
56
+ /**
57
+ * Function injected for the HTTP boundary against Lighter's `tokens/create`
58
+ * endpoint. Returning a parsed {@link LighterCreateTokenResponse} keeps the
59
+ * mint code free of fetch/multipart plumbing and lets tests drop a fixture
60
+ * in without spinning a mock server.
61
+ */
62
+ export type LighterTokenFetcher = (params: {
63
+ url: string
64
+ authorization: string
65
+ name: string
66
+ accountIndex: number
67
+ expiry: number
68
+ subAccountAccess: boolean
69
+ scopes: string
70
+ }) => Promise<LighterCreateTokenResponse>
71
+
72
+ /**
73
+ * Function injected for the L1 wallet signature. Signature MUST be EIP-191
74
+ * `personal_sign`. Returning a 0x-prefixed hex string keeps the mint path
75
+ * agnostic to whichever wallet abstraction the consumer wires up.
76
+ */
77
+ export type LighterWalletSigner = (params: {
78
+ address: Address
79
+ message: string
80
+ }) => Promise<string>
81
+
82
+ export interface LighterReadOnlyTokenManagerOptions {
83
+ storage?: StorageAdapter
84
+ /** Lighter API host. Defaults to {@link DEFAULT_LIGHTER_API_URL}. */
85
+ lighterApiUrl?: string
86
+ /** Override the multipart POST. Defaults to a `fetch`-based implementation. */
87
+ fetcher?: LighterTokenFetcher
88
+ /** Clock injection for testing expiry logic. Defaults to `Date.now`. */
89
+ now?: () => number
90
+ }
91
+
92
+ export interface ApproveReadOnlyTokenInputs extends ApproveReadOnlyTokenParams {
93
+ /** L1 wallet address that signs the mint message. */
94
+ address: Address
95
+ }
96
+
97
+ export interface ApproveReadOnlyTokenResult {
98
+ token: LighterReadOnlyToken
99
+ /** Projection of the post-mint Lighter account state. */
100
+ config: Pick<
101
+ LighterAccountConfig,
102
+ | 'provider'
103
+ | 'accountIndex'
104
+ | 'readOnlyTokenApproved'
105
+ | 'readOnlyTokenExpiry'
106
+ | 'readOnlyTokenScope'
107
+ >
108
+ }
109
+
110
+ const SECONDS_PER_DAY = 86_400
111
+
112
+ /**
113
+ * Manage the per-account Lighter read-only token alongside the existing
114
+ * `(L1 address, account index)`-scoped storage adapter pattern. Mirrors
115
+ * `AgentManager`'s injection surface so the same `StorageAdapter` powers
116
+ * both. The token is opaque — never parsed client-side; `expiry`/`scope`
117
+ * recorded at mint time are the source of truth.
118
+ *
119
+ * The L1 wallet signer and the HTTP fetcher are both injectable so unit
120
+ * tests don't need a real wallet or network.
121
+ */
122
+ export class LighterReadOnlyTokenManager {
123
+ private readonly storage: StorageAdapter
124
+ private readonly lighterApiUrl: string
125
+ private readonly fetcher: LighterTokenFetcher
126
+ private readonly now: () => number
127
+ private readonly cache = new Map<string, LighterReadOnlyToken>()
128
+
129
+ constructor(options: LighterReadOnlyTokenManagerOptions = {}) {
130
+ this.storage = options.storage ?? localStorageAdapter
131
+ this.lighterApiUrl = options.lighterApiUrl ?? DEFAULT_LIGHTER_API_URL
132
+ this.fetcher = options.fetcher ?? defaultLighterTokenFetcher
133
+ this.now = options.now ?? (() => Date.now())
134
+ }
135
+
136
+ private storageKey(address: Address, accountIndex: number): string {
137
+ return `${STORAGE_PREFIX}:${address.toLowerCase()}:${accountIndex}`
138
+ }
139
+
140
+ private isExpired(token: LighterReadOnlyToken): boolean {
141
+ return token.expiry * 1000 <= this.now()
142
+ }
143
+
144
+ /**
145
+ * Return the stored token for the `(address, accountIndex)` pair, or
146
+ * `undefined` if absent or past its `expiry`. Never surfaces an expired
147
+ * token — consumers can rely on the return value being usable as-is.
148
+ */
149
+ async get(
150
+ address: Address,
151
+ accountIndex: number
152
+ ): Promise<LighterReadOnlyToken | undefined> {
153
+ const key = this.storageKey(address, accountIndex)
154
+ const cached = this.cache.get(key)
155
+ if (cached) {
156
+ return this.isExpired(cached) ? undefined : cached
157
+ }
158
+ const raw = await this.storage.get(key)
159
+ if (!raw) {
160
+ return undefined
161
+ }
162
+ const parsed = JSON.parse(raw) as LighterReadOnlyToken
163
+ if (this.isExpired(parsed)) {
164
+ return undefined
165
+ }
166
+ this.cache.set(key, parsed)
167
+ return parsed
168
+ }
169
+
170
+ /**
171
+ * `true` when a stored token exists AND its `expiry` falls within
172
+ * `thresholdDays` of now. `false` when no token exists, when the token is
173
+ * already expired (caller should treat that as "no token"), or when it
174
+ * has more than `thresholdDays` of life left.
175
+ */
176
+ async isReadOnlyTokenExpiringSoon(
177
+ address: Address,
178
+ accountIndex: number,
179
+ thresholdDays = 30
180
+ ): Promise<boolean> {
181
+ const key = this.storageKey(address, accountIndex)
182
+ const raw =
183
+ this.cache.get(key) ??
184
+ (await (async () => {
185
+ const stored = await this.storage.get(key)
186
+ return stored ? (JSON.parse(stored) as LighterReadOnlyToken) : undefined
187
+ })())
188
+ if (!raw) {
189
+ return false
190
+ }
191
+ const remainingSeconds = raw.expiry - Math.floor(this.now() / 1000)
192
+ if (remainingSeconds <= 0) {
193
+ return false
194
+ }
195
+ return remainingSeconds <= thresholdDays * SECONDS_PER_DAY
196
+ }
197
+
198
+ /**
199
+ * Persist `token` for the `(address, accountIndex)` pair. Overwrites any
200
+ * prior stored token under the same key — used both by the approve flow
201
+ * and by the renewal flow.
202
+ */
203
+ async set(
204
+ address: Address,
205
+ accountIndex: number,
206
+ token: LighterReadOnlyToken
207
+ ): Promise<void> {
208
+ const key = this.storageKey(address, accountIndex)
209
+ this.cache.set(key, token)
210
+ await this.storage.set(key, JSON.stringify(token))
211
+ }
212
+
213
+ async remove(address: Address, accountIndex: number): Promise<void> {
214
+ const key = this.storageKey(address, accountIndex)
215
+ this.cache.delete(key)
216
+ await this.storage.remove(key)
217
+ }
218
+
219
+ /**
220
+ * Mint and persist a new Lighter read-only token.
221
+ *
222
+ * Asks `signer` to produce an EIP-191 `personal_sign` over the
223
+ * `createToken`-specific L1 message, POSTs the signed payload to Lighter's
224
+ * `/api/v1/tokens/create` via the injected `fetcher`, and persists the
225
+ * returned bearer alongside its `expiry`/`scope`/`accountIndex`.
226
+ *
227
+ * `expirySeconds` is the absolute unix-seconds expiry Lighter records on
228
+ * the row. Lighter enforces 1 day ≤ lifetime ≤ 10 years server-side; the
229
+ * SDK does NOT pre-validate and surfaces Lighter's 400 verbatim.
230
+ *
231
+ * `scope` defaults to `'all'` (token authorises read access to every
232
+ * account owned by the L1 signer). `'single'` is wired through so callers
233
+ * who need per-account scoping can opt in.
234
+ *
235
+ * @param signer EIP-191 wallet signer for the L1 message.
236
+ * @param inputs Token-mint parameters plus the L1 `address` that signs.
237
+ */
238
+ async approve(
239
+ signer: LighterWalletSigner,
240
+ inputs: ApproveReadOnlyTokenInputs
241
+ ): Promise<ApproveReadOnlyTokenResult> {
242
+ const { address, accountIndex, expirySeconds, scope } = inputs
243
+ const message = buildReadOnlyTokenMessage({
244
+ accountIndex,
245
+ expirySeconds,
246
+ scope,
247
+ })
248
+ const authorization = await signer({ address, message })
249
+
250
+ const response = await this.fetcher({
251
+ url: `${this.lighterApiUrl}/api/v1/tokens/create`,
252
+ authorization,
253
+ name: DEFAULT_READ_ONLY_TOKEN_NAME,
254
+ accountIndex,
255
+ expiry: expirySeconds,
256
+ subAccountAccess: scope === 'all',
257
+ scopes: scope,
258
+ })
259
+
260
+ const token: LighterReadOnlyToken = {
261
+ token: response.api_token,
262
+ expiry: response.expiry,
263
+ // Lighter echoes the literal we sent; we trust ours over the wire
264
+ // string so we never desynchronise the persisted shape from
265
+ // the typed `'single' | 'all'` discriminator.
266
+ scope,
267
+ accountIndex: response.account_index,
268
+ }
269
+ await this.set(address, token.accountIndex, token)
270
+
271
+ return {
272
+ token,
273
+ config: {
274
+ provider: 'lighter',
275
+ accountIndex: token.accountIndex,
276
+ readOnlyTokenApproved: true,
277
+ readOnlyTokenExpiry: token.expiry,
278
+ readOnlyTokenScope: token.scope,
279
+ },
280
+ }
281
+ }
282
+ }
283
+
284
+ /**
285
+ * Build the EIP-191 message the user's L1 wallet signs to authorise a
286
+ * Lighter `tokens/create` request.
287
+ *
288
+ * NOTE — Lighter's public docs do not fully specify the message template
289
+ * for the read-only token mint flow. The shape here is the SDK's best-fit
290
+ * given (a) Lighter's UI hosts the equivalent flow at
291
+ * `app.lighter.xyz/read-only-tokens` and (b) Lighter's `tokens/create`
292
+ * endpoint reads `account_index`, `expiry`, and `scopes` as form fields.
293
+ * If Lighter publishes a documented template that diverges, update this
294
+ * builder — the test fixtures will fail loudly.
295
+ */
296
+ export function buildReadOnlyTokenMessage(params: {
297
+ accountIndex: number
298
+ expirySeconds: number
299
+ scope: 'single' | 'all'
300
+ }): string {
301
+ return [
302
+ 'Lighter Read-Only Token',
303
+ `account_index=${params.accountIndex}`,
304
+ `expiry=${params.expirySeconds}`,
305
+ `scopes=${params.scope}`,
306
+ ].join('\n')
307
+ }
308
+
309
+ /**
310
+ * Default fetcher: posts a multipart/form-data request to Lighter's
311
+ * `tokens/create` endpoint and returns the parsed response. Throws a
312
+ * {@link PerpsError} with the Lighter-side body when the response is
313
+ * non-2xx.
314
+ */
315
+ export const defaultLighterTokenFetcher: LighterTokenFetcher = async ({
316
+ url,
317
+ authorization,
318
+ name,
319
+ accountIndex,
320
+ expiry,
321
+ subAccountAccess,
322
+ scopes,
323
+ }) => {
324
+ const form = new FormData()
325
+ form.set('name', name)
326
+ form.set('account_index', String(accountIndex))
327
+ form.set('expiry', String(expiry))
328
+ form.set('sub_account_access', String(subAccountAccess))
329
+ form.set('scopes', scopes)
330
+
331
+ const response = await fetch(url, {
332
+ method: 'POST',
333
+ headers: { authorization },
334
+ body: form,
335
+ })
336
+
337
+ if (!response.ok) {
338
+ const body = await response.text()
339
+ throw new PerpsError(
340
+ PerpsErrorCode.ServerError,
341
+ `Lighter tokens/create returned ${response.status}: ${body || '<empty>'}`
342
+ )
343
+ }
344
+
345
+ return (await response.json()) as LighterCreateTokenResponse
346
+ }
347
+
348
+ /**
349
+ * Adapter producing a {@link LighterWalletSigner} from a viem
350
+ * `WalletClient`. Pulled out so `PerpsClient.approveReadOnlyToken` can call
351
+ * into the manager without leaking viem types past the manager's boundary.
352
+ */
353
+ export function walletClientSigner(
354
+ client: WalletClient<any, any, Account>
355
+ ): LighterWalletSigner {
356
+ return ({ message }) =>
357
+ client.signMessage({ account: client.account, message })
358
+ }