@lifi/perps-sdk 0.1.1-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 (368) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +54 -0
  3. package/dist/cjs/agent/AgentManager.d.ts +15 -0
  4. package/dist/cjs/agent/AgentManager.d.ts.map +1 -0
  5. package/dist/cjs/agent/AgentManager.js +80 -0
  6. package/dist/cjs/agent/AgentManager.js.map +1 -0
  7. package/dist/cjs/agent/storage.d.ts +4 -0
  8. package/dist/cjs/agent/storage.d.ts.map +1 -0
  9. package/dist/cjs/agent/storage.js +47 -0
  10. package/dist/cjs/agent/storage.js.map +1 -0
  11. package/dist/cjs/agent/types.d.ts +11 -0
  12. package/dist/cjs/agent/types.d.ts.map +1 -0
  13. package/dist/cjs/agent/types.js +3 -0
  14. package/dist/cjs/agent/types.js.map +1 -0
  15. package/dist/cjs/client/PerpsClient.d.ts +29 -0
  16. package/dist/cjs/client/PerpsClient.d.ts.map +1 -0
  17. package/dist/cjs/client/PerpsClient.js +328 -0
  18. package/dist/cjs/client/PerpsClient.js.map +1 -0
  19. package/dist/cjs/client/createPerpsClient.d.ts +30 -0
  20. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -0
  21. package/dist/cjs/client/createPerpsClient.js +56 -0
  22. package/dist/cjs/client/createPerpsClient.js.map +1 -0
  23. package/dist/cjs/client/types.d.ts +61 -0
  24. package/dist/cjs/client/types.d.ts.map +1 -0
  25. package/dist/cjs/client/types.js +3 -0
  26. package/dist/cjs/client/types.js.map +1 -0
  27. package/dist/cjs/errors/AgentError.d.ts +10 -0
  28. package/dist/cjs/errors/AgentError.d.ts.map +1 -0
  29. package/dist/cjs/errors/AgentError.js +23 -0
  30. package/dist/cjs/errors/AgentError.js.map +1 -0
  31. package/dist/cjs/errors/HTTPError.d.ts +11 -0
  32. package/dist/cjs/errors/HTTPError.d.ts.map +1 -0
  33. package/dist/cjs/errors/HTTPError.js +62 -0
  34. package/dist/cjs/errors/HTTPError.js.map +1 -0
  35. package/dist/cjs/errors/PerpsError.d.ts +9 -0
  36. package/dist/cjs/errors/PerpsError.d.ts.map +1 -0
  37. package/dist/cjs/errors/PerpsError.js +27 -0
  38. package/dist/cjs/errors/PerpsError.js.map +1 -0
  39. package/dist/cjs/errors/PerpsSDKError.d.ts +9 -0
  40. package/dist/cjs/errors/PerpsSDKError.d.ts.map +1 -0
  41. package/dist/cjs/errors/PerpsSDKError.js +36 -0
  42. package/dist/cjs/errors/PerpsSDKError.js.map +1 -0
  43. package/dist/cjs/errors/ServerError.d.ts +10 -0
  44. package/dist/cjs/errors/ServerError.d.ts.map +1 -0
  45. package/dist/cjs/errors/ServerError.js +24 -0
  46. package/dist/cjs/errors/ServerError.js.map +1 -0
  47. package/dist/cjs/errors/ValidationError.d.ts +9 -0
  48. package/dist/cjs/errors/ValidationError.d.ts.map +1 -0
  49. package/dist/cjs/errors/ValidationError.js +23 -0
  50. package/dist/cjs/errors/ValidationError.js.map +1 -0
  51. package/dist/cjs/errors/constants.d.ts +15 -0
  52. package/dist/cjs/errors/constants.d.ts.map +1 -0
  53. package/dist/cjs/errors/constants.js +20 -0
  54. package/dist/cjs/errors/constants.js.map +1 -0
  55. package/dist/cjs/errors/utils/rootCause.d.ts +6 -0
  56. package/dist/cjs/errors/utils/rootCause.d.ts.map +1 -0
  57. package/dist/cjs/errors/utils/rootCause.js +41 -0
  58. package/dist/cjs/errors/utils/rootCause.js.map +1 -0
  59. package/dist/cjs/index.d.ts +46 -0
  60. package/dist/cjs/index.d.ts.map +1 -0
  61. package/dist/cjs/index.js +82 -0
  62. package/dist/cjs/index.js.map +1 -0
  63. package/dist/cjs/package.json +1 -0
  64. package/dist/cjs/services/cancelOrder.d.ts +10 -0
  65. package/dist/cjs/services/cancelOrder.d.ts.map +1 -0
  66. package/dist/cjs/services/cancelOrder.js +16 -0
  67. package/dist/cjs/services/cancelOrder.js.map +1 -0
  68. package/dist/cjs/services/createAuthorization.d.ts +10 -0
  69. package/dist/cjs/services/createAuthorization.d.ts.map +1 -0
  70. package/dist/cjs/services/createAuthorization.js +16 -0
  71. package/dist/cjs/services/createAuthorization.js.map +1 -0
  72. package/dist/cjs/services/createOrder.d.ts +21 -0
  73. package/dist/cjs/services/createOrder.d.ts.map +1 -0
  74. package/dist/cjs/services/createOrder.js +27 -0
  75. package/dist/cjs/services/createOrder.js.map +1 -0
  76. package/dist/cjs/services/getAccount.d.ts +8 -0
  77. package/dist/cjs/services/getAccount.d.ts.map +1 -0
  78. package/dist/cjs/services/getAccount.js +12 -0
  79. package/dist/cjs/services/getAccount.js.map +1 -0
  80. package/dist/cjs/services/getDexes.d.ts +4 -0
  81. package/dist/cjs/services/getDexes.d.ts.map +1 -0
  82. package/dist/cjs/services/getDexes.js +8 -0
  83. package/dist/cjs/services/getDexes.js.map +1 -0
  84. package/dist/cjs/services/getHistory.d.ts +10 -0
  85. package/dist/cjs/services/getHistory.d.ts.map +1 -0
  86. package/dist/cjs/services/getHistory.js +14 -0
  87. package/dist/cjs/services/getHistory.js.map +1 -0
  88. package/dist/cjs/services/getMarket.d.ts +8 -0
  89. package/dist/cjs/services/getMarket.d.ts.map +1 -0
  90. package/dist/cjs/services/getMarket.js +11 -0
  91. package/dist/cjs/services/getMarket.js.map +1 -0
  92. package/dist/cjs/services/getMarkets.d.ts +7 -0
  93. package/dist/cjs/services/getMarkets.d.ts.map +1 -0
  94. package/dist/cjs/services/getMarkets.js +9 -0
  95. package/dist/cjs/services/getMarkets.js.map +1 -0
  96. package/dist/cjs/services/getOhlcv.d.ts +12 -0
  97. package/dist/cjs/services/getOhlcv.d.ts.map +1 -0
  98. package/dist/cjs/services/getOhlcv.js +15 -0
  99. package/dist/cjs/services/getOhlcv.js.map +1 -0
  100. package/dist/cjs/services/getOrder.d.ts +9 -0
  101. package/dist/cjs/services/getOrder.d.ts.map +1 -0
  102. package/dist/cjs/services/getOrder.js +12 -0
  103. package/dist/cjs/services/getOrder.js.map +1 -0
  104. package/dist/cjs/services/getOrderbook.d.ts +9 -0
  105. package/dist/cjs/services/getOrderbook.d.ts.map +1 -0
  106. package/dist/cjs/services/getOrderbook.js +12 -0
  107. package/dist/cjs/services/getOrderbook.js.map +1 -0
  108. package/dist/cjs/services/getPrices.d.ts +8 -0
  109. package/dist/cjs/services/getPrices.d.ts.map +1 -0
  110. package/dist/cjs/services/getPrices.js +12 -0
  111. package/dist/cjs/services/getPrices.js.map +1 -0
  112. package/dist/cjs/services/submitAuthorization.d.ts +10 -0
  113. package/dist/cjs/services/submitAuthorization.d.ts.map +1 -0
  114. package/dist/cjs/services/submitAuthorization.js +16 -0
  115. package/dist/cjs/services/submitAuthorization.js.map +1 -0
  116. package/dist/cjs/services/submitOrder.d.ts +10 -0
  117. package/dist/cjs/services/submitOrder.d.ts.map +1 -0
  118. package/dist/cjs/services/submitOrder.js +16 -0
  119. package/dist/cjs/services/submitOrder.js.map +1 -0
  120. package/dist/cjs/utils/request.d.ts +7 -0
  121. package/dist/cjs/utils/request.d.ts.map +1 -0
  122. package/dist/cjs/utils/request.js +63 -0
  123. package/dist/cjs/utils/request.js.map +1 -0
  124. package/dist/cjs/utils/signTypedData.d.ts +3 -0
  125. package/dist/cjs/utils/signTypedData.d.ts.map +1 -0
  126. package/dist/cjs/utils/signTypedData.js +15 -0
  127. package/dist/cjs/utils/signTypedData.js.map +1 -0
  128. package/dist/cjs/utils/sleep.d.ts +2 -0
  129. package/dist/cjs/utils/sleep.d.ts.map +1 -0
  130. package/dist/cjs/utils/sleep.js +6 -0
  131. package/dist/cjs/utils/sleep.js.map +1 -0
  132. package/dist/cjs/version.d.ts +3 -0
  133. package/dist/cjs/version.d.ts.map +1 -0
  134. package/dist/cjs/version.js +6 -0
  135. package/dist/cjs/version.js.map +1 -0
  136. package/dist/esm/agent/AgentManager.d.ts +45 -0
  137. package/dist/esm/agent/AgentManager.d.ts.map +1 -0
  138. package/dist/esm/agent/AgentManager.js +110 -0
  139. package/dist/esm/agent/AgentManager.js.map +1 -0
  140. package/dist/esm/agent/storage.d.ts +12 -0
  141. package/dist/esm/agent/storage.d.ts.map +1 -0
  142. package/dist/esm/agent/storage.js +54 -0
  143. package/dist/esm/agent/storage.js.map +1 -0
  144. package/dist/esm/agent/types.d.ts +23 -0
  145. package/dist/esm/agent/types.d.ts.map +1 -0
  146. package/dist/esm/agent/types.js +2 -0
  147. package/dist/esm/agent/types.js.map +1 -0
  148. package/dist/esm/client/PerpsClient.d.ts +188 -0
  149. package/dist/esm/client/PerpsClient.d.ts.map +1 -0
  150. package/dist/esm/client/PerpsClient.js +512 -0
  151. package/dist/esm/client/PerpsClient.js.map +1 -0
  152. package/dist/esm/client/createPerpsClient.d.ts +82 -0
  153. package/dist/esm/client/createPerpsClient.d.ts.map +1 -0
  154. package/dist/esm/client/createPerpsClient.js +80 -0
  155. package/dist/esm/client/createPerpsClient.js.map +1 -0
  156. package/dist/esm/client/types.d.ts +131 -0
  157. package/dist/esm/client/types.d.ts.map +1 -0
  158. package/dist/esm/client/types.js +2 -0
  159. package/dist/esm/client/types.js.map +1 -0
  160. package/dist/esm/errors/AgentError.d.ts +25 -0
  161. package/dist/esm/errors/AgentError.d.ts.map +1 -0
  162. package/dist/esm/errors/AgentError.js +35 -0
  163. package/dist/esm/errors/AgentError.js.map +1 -0
  164. package/dist/esm/errors/HTTPError.d.ts +11 -0
  165. package/dist/esm/errors/HTTPError.d.ts.map +1 -0
  166. package/dist/esm/errors/HTTPError.js +61 -0
  167. package/dist/esm/errors/HTTPError.js.map +1 -0
  168. package/dist/esm/errors/PerpsError.d.ts +9 -0
  169. package/dist/esm/errors/PerpsError.d.ts.map +1 -0
  170. package/dist/esm/errors/PerpsError.js +23 -0
  171. package/dist/esm/errors/PerpsError.js.map +1 -0
  172. package/dist/esm/errors/PerpsSDKError.d.ts +40 -0
  173. package/dist/esm/errors/PerpsSDKError.d.ts.map +1 -0
  174. package/dist/esm/errors/PerpsSDKError.js +67 -0
  175. package/dist/esm/errors/PerpsSDKError.js.map +1 -0
  176. package/dist/esm/errors/ServerError.d.ts +23 -0
  177. package/dist/esm/errors/ServerError.d.ts.map +1 -0
  178. package/dist/esm/errors/ServerError.js +34 -0
  179. package/dist/esm/errors/ServerError.js.map +1 -0
  180. package/dist/esm/errors/ValidationError.d.ts +23 -0
  181. package/dist/esm/errors/ValidationError.d.ts.map +1 -0
  182. package/dist/esm/errors/ValidationError.js +34 -0
  183. package/dist/esm/errors/ValidationError.js.map +1 -0
  184. package/dist/esm/errors/constants.d.ts +15 -0
  185. package/dist/esm/errors/constants.d.ts.map +1 -0
  186. package/dist/esm/errors/constants.js +17 -0
  187. package/dist/esm/errors/constants.js.map +1 -0
  188. package/dist/esm/errors/utils/rootCause.d.ts +71 -0
  189. package/dist/esm/errors/utils/rootCause.d.ts.map +1 -0
  190. package/dist/esm/errors/utils/rootCause.js +99 -0
  191. package/dist/esm/errors/utils/rootCause.js.map +1 -0
  192. package/dist/esm/index.d.ts +46 -0
  193. package/dist/esm/index.d.ts.map +1 -0
  194. package/dist/esm/index.js +37 -0
  195. package/dist/esm/index.js.map +1 -0
  196. package/dist/esm/package.json +1 -0
  197. package/dist/esm/services/cancelOrder.d.ts +51 -0
  198. package/dist/esm/services/cancelOrder.d.ts.map +1 -0
  199. package/dist/esm/services/cancelOrder.js +50 -0
  200. package/dist/esm/services/cancelOrder.js.map +1 -0
  201. package/dist/esm/services/createAuthorization.d.ts +47 -0
  202. package/dist/esm/services/createAuthorization.d.ts.map +1 -0
  203. package/dist/esm/services/createAuthorization.js +46 -0
  204. package/dist/esm/services/createAuthorization.js.map +1 -0
  205. package/dist/esm/services/createOrder.d.ts +71 -0
  206. package/dist/esm/services/createOrder.d.ts.map +1 -0
  207. package/dist/esm/services/createOrder.js +59 -0
  208. package/dist/esm/services/createOrder.js.map +1 -0
  209. package/dist/esm/services/getAccount.d.ts +32 -0
  210. package/dist/esm/services/getAccount.d.ts.map +1 -0
  211. package/dist/esm/services/getAccount.js +31 -0
  212. package/dist/esm/services/getAccount.js.map +1 -0
  213. package/dist/esm/services/getDexes.d.ts +20 -0
  214. package/dist/esm/services/getDexes.d.ts.map +1 -0
  215. package/dist/esm/services/getDexes.js +21 -0
  216. package/dist/esm/services/getDexes.js.map +1 -0
  217. package/dist/esm/services/getHistory.d.ts +45 -0
  218. package/dist/esm/services/getHistory.d.ts.map +1 -0
  219. package/dist/esm/services/getHistory.js +42 -0
  220. package/dist/esm/services/getHistory.js.map +1 -0
  221. package/dist/esm/services/getMarket.d.ts +27 -0
  222. package/dist/esm/services/getMarket.d.ts.map +1 -0
  223. package/dist/esm/services/getMarket.js +25 -0
  224. package/dist/esm/services/getMarket.js.map +1 -0
  225. package/dist/esm/services/getMarkets.d.ts +25 -0
  226. package/dist/esm/services/getMarkets.d.ts.map +1 -0
  227. package/dist/esm/services/getMarkets.js +23 -0
  228. package/dist/esm/services/getMarkets.js.map +1 -0
  229. package/dist/esm/services/getOhlcv.d.ts +40 -0
  230. package/dist/esm/services/getOhlcv.d.ts.map +1 -0
  231. package/dist/esm/services/getOhlcv.js +34 -0
  232. package/dist/esm/services/getOhlcv.js.map +1 -0
  233. package/dist/esm/services/getOrder.d.ts +33 -0
  234. package/dist/esm/services/getOrder.d.ts.map +1 -0
  235. package/dist/esm/services/getOrder.js +30 -0
  236. package/dist/esm/services/getOrder.js.map +1 -0
  237. package/dist/esm/services/getOrderbook.d.ts +34 -0
  238. package/dist/esm/services/getOrderbook.d.ts.map +1 -0
  239. package/dist/esm/services/getOrderbook.js +31 -0
  240. package/dist/esm/services/getOrderbook.js.map +1 -0
  241. package/dist/esm/services/getPrices.d.ts +33 -0
  242. package/dist/esm/services/getPrices.d.ts.map +1 -0
  243. package/dist/esm/services/getPrices.js +32 -0
  244. package/dist/esm/services/getPrices.js.map +1 -0
  245. package/dist/esm/services/submitAuthorization.d.ts +42 -0
  246. package/dist/esm/services/submitAuthorization.d.ts.map +1 -0
  247. package/dist/esm/services/submitAuthorization.js +41 -0
  248. package/dist/esm/services/submitAuthorization.js.map +1 -0
  249. package/dist/esm/services/submitOrder.d.ts +44 -0
  250. package/dist/esm/services/submitOrder.d.ts.map +1 -0
  251. package/dist/esm/services/submitOrder.js +43 -0
  252. package/dist/esm/services/submitOrder.js.map +1 -0
  253. package/dist/esm/utils/request.d.ts +26 -0
  254. package/dist/esm/utils/request.d.ts.map +1 -0
  255. package/dist/esm/utils/request.js +82 -0
  256. package/dist/esm/utils/request.js.map +1 -0
  257. package/dist/esm/utils/signTypedData.d.ts +15 -0
  258. package/dist/esm/utils/signTypedData.d.ts.map +1 -0
  259. package/dist/esm/utils/signTypedData.js +25 -0
  260. package/dist/esm/utils/signTypedData.js.map +1 -0
  261. package/dist/esm/utils/sleep.d.ts +2 -0
  262. package/dist/esm/utils/sleep.d.ts.map +1 -0
  263. package/dist/esm/utils/sleep.js +2 -0
  264. package/dist/esm/utils/sleep.js.map +1 -0
  265. package/dist/esm/version.d.ts +3 -0
  266. package/dist/esm/version.d.ts.map +1 -0
  267. package/dist/esm/version.js +3 -0
  268. package/dist/esm/version.js.map +1 -0
  269. package/dist/types/agent/AgentManager.d.ts +45 -0
  270. package/dist/types/agent/AgentManager.d.ts.map +1 -0
  271. package/dist/types/agent/storage.d.ts +12 -0
  272. package/dist/types/agent/storage.d.ts.map +1 -0
  273. package/dist/types/agent/types.d.ts +23 -0
  274. package/dist/types/agent/types.d.ts.map +1 -0
  275. package/dist/types/client/PerpsClient.d.ts +188 -0
  276. package/dist/types/client/PerpsClient.d.ts.map +1 -0
  277. package/dist/types/client/createPerpsClient.d.ts +82 -0
  278. package/dist/types/client/createPerpsClient.d.ts.map +1 -0
  279. package/dist/types/client/types.d.ts +131 -0
  280. package/dist/types/client/types.d.ts.map +1 -0
  281. package/dist/types/errors/AgentError.d.ts +25 -0
  282. package/dist/types/errors/AgentError.d.ts.map +1 -0
  283. package/dist/types/errors/HTTPError.d.ts +11 -0
  284. package/dist/types/errors/HTTPError.d.ts.map +1 -0
  285. package/dist/types/errors/PerpsError.d.ts +9 -0
  286. package/dist/types/errors/PerpsError.d.ts.map +1 -0
  287. package/dist/types/errors/PerpsSDKError.d.ts +40 -0
  288. package/dist/types/errors/PerpsSDKError.d.ts.map +1 -0
  289. package/dist/types/errors/ServerError.d.ts +23 -0
  290. package/dist/types/errors/ServerError.d.ts.map +1 -0
  291. package/dist/types/errors/ValidationError.d.ts +23 -0
  292. package/dist/types/errors/ValidationError.d.ts.map +1 -0
  293. package/dist/types/errors/constants.d.ts +15 -0
  294. package/dist/types/errors/constants.d.ts.map +1 -0
  295. package/dist/types/errors/utils/rootCause.d.ts +71 -0
  296. package/dist/types/errors/utils/rootCause.d.ts.map +1 -0
  297. package/dist/types/index.d.ts +46 -0
  298. package/dist/types/index.d.ts.map +1 -0
  299. package/dist/types/services/cancelOrder.d.ts +51 -0
  300. package/dist/types/services/cancelOrder.d.ts.map +1 -0
  301. package/dist/types/services/createAuthorization.d.ts +47 -0
  302. package/dist/types/services/createAuthorization.d.ts.map +1 -0
  303. package/dist/types/services/createOrder.d.ts +71 -0
  304. package/dist/types/services/createOrder.d.ts.map +1 -0
  305. package/dist/types/services/getAccount.d.ts +32 -0
  306. package/dist/types/services/getAccount.d.ts.map +1 -0
  307. package/dist/types/services/getDexes.d.ts +20 -0
  308. package/dist/types/services/getDexes.d.ts.map +1 -0
  309. package/dist/types/services/getHistory.d.ts +45 -0
  310. package/dist/types/services/getHistory.d.ts.map +1 -0
  311. package/dist/types/services/getMarket.d.ts +27 -0
  312. package/dist/types/services/getMarket.d.ts.map +1 -0
  313. package/dist/types/services/getMarkets.d.ts +25 -0
  314. package/dist/types/services/getMarkets.d.ts.map +1 -0
  315. package/dist/types/services/getOhlcv.d.ts +40 -0
  316. package/dist/types/services/getOhlcv.d.ts.map +1 -0
  317. package/dist/types/services/getOrder.d.ts +33 -0
  318. package/dist/types/services/getOrder.d.ts.map +1 -0
  319. package/dist/types/services/getOrderbook.d.ts +34 -0
  320. package/dist/types/services/getOrderbook.d.ts.map +1 -0
  321. package/dist/types/services/getPrices.d.ts +33 -0
  322. package/dist/types/services/getPrices.d.ts.map +1 -0
  323. package/dist/types/services/submitAuthorization.d.ts +42 -0
  324. package/dist/types/services/submitAuthorization.d.ts.map +1 -0
  325. package/dist/types/services/submitOrder.d.ts +44 -0
  326. package/dist/types/services/submitOrder.d.ts.map +1 -0
  327. package/dist/types/utils/request.d.ts +26 -0
  328. package/dist/types/utils/request.d.ts.map +1 -0
  329. package/dist/types/utils/signTypedData.d.ts +15 -0
  330. package/dist/types/utils/signTypedData.d.ts.map +1 -0
  331. package/dist/types/utils/sleep.d.ts +2 -0
  332. package/dist/types/utils/sleep.d.ts.map +1 -0
  333. package/dist/types/version.d.ts +3 -0
  334. package/dist/types/version.d.ts.map +1 -0
  335. package/package.json +102 -0
  336. package/src/agent/AgentManager.ts +135 -0
  337. package/src/agent/storage.ts +58 -0
  338. package/src/agent/types.ts +24 -0
  339. package/src/client/PerpsClient.ts +654 -0
  340. package/src/client/createPerpsClient.ts +164 -0
  341. package/src/client/types.ts +156 -0
  342. package/src/errors/AgentError.ts +43 -0
  343. package/src/errors/HTTPError.ts +72 -0
  344. package/src/errors/PerpsError.ts +34 -0
  345. package/src/errors/PerpsSDKError.ts +79 -0
  346. package/src/errors/ServerError.ts +41 -0
  347. package/src/errors/ValidationError.ts +38 -0
  348. package/src/errors/constants.ts +15 -0
  349. package/src/errors/utils/rootCause.ts +112 -0
  350. package/src/index.ts +77 -0
  351. package/src/services/cancelOrder.ts +75 -0
  352. package/src/services/createAuthorization.ts +75 -0
  353. package/src/services/createOrder.ts +113 -0
  354. package/src/services/getAccount.ts +47 -0
  355. package/src/services/getDexes.ts +34 -0
  356. package/src/services/getHistory.ts +62 -0
  357. package/src/services/getMarket.ts +41 -0
  358. package/src/services/getMarkets.ts +37 -0
  359. package/src/services/getOhlcv.ts +58 -0
  360. package/src/services/getOrder.ts +48 -0
  361. package/src/services/getOrderbook.ts +49 -0
  362. package/src/services/getPrices.ts +48 -0
  363. package/src/services/submitAuthorization.ts +70 -0
  364. package/src/services/submitOrder.ts +72 -0
  365. package/src/utils/request.ts +121 -0
  366. package/src/utils/signTypedData.ts +31 -0
  367. package/src/utils/sleep.ts +2 -0
  368. package/src/version.ts +2 -0
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Get the root cause of an error by following the cause chain.
3
+ *
4
+ * @param error - The error to get the root cause of
5
+ * @returns The root cause error, or the original error if no cause chain
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const wrapper = new PerpsSDKError(new HTTPError(response, url))
10
+ * const root = getRootCause(wrapper) // Returns the HTTPError
11
+ * ```
12
+ */
13
+ export function getRootCause(error: Error): Error {
14
+ let current: Error = error
15
+ let iterations = 0
16
+ const maxIterations = 100 // Prevent infinite loops
17
+
18
+ while (current.cause instanceof Error && iterations < maxIterations) {
19
+ current = current.cause
20
+ iterations++
21
+ }
22
+
23
+ return current
24
+ }
25
+
26
+ /**
27
+ * Get the message from the root cause of an error.
28
+ *
29
+ * @param error - The error to get the root cause message from
30
+ * @returns The root cause message
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const wrapper = new PerpsSDKError(new HTTPError(response, url))
35
+ * const message = getRootCauseMessage(wrapper) // Returns the HTTPError's message
36
+ * ```
37
+ */
38
+ export function getRootCauseMessage(error: Error): string {
39
+ return getRootCause(error).message
40
+ }
41
+
42
+ /**
43
+ * Get the full error chain as an array.
44
+ *
45
+ * @param error - The error to get the chain from
46
+ * @returns Array of errors from outermost to root cause
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * const chain = getErrorChain(sdkError)
51
+ * // [PerpsSDKError, HTTPError, ...]
52
+ * ```
53
+ */
54
+ export function getErrorChain(error: Error): Error[] {
55
+ const chain: Error[] = [error]
56
+ let current = error
57
+ let iterations = 0
58
+ const maxIterations = 100
59
+
60
+ while (current.cause instanceof Error && iterations < maxIterations) {
61
+ chain.push(current.cause)
62
+ current = current.cause
63
+ iterations++
64
+ }
65
+
66
+ return chain
67
+ }
68
+
69
+ /**
70
+ * Check if an error chain contains an error of a specific type.
71
+ *
72
+ * @param error - The error to check
73
+ * @param ErrorClass - The error class to look for
74
+ * @returns True if the chain contains an error of the specified type
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * if (hasErrorType(error, HTTPError)) {
79
+ * // Handle HTTP error specifically
80
+ * }
81
+ * ```
82
+ */
83
+ export function hasErrorType<T extends Error>(
84
+ error: Error,
85
+ ErrorClass: new (...args: any[]) => T
86
+ ): boolean {
87
+ const chain = getErrorChain(error)
88
+ return chain.some((e) => e instanceof ErrorClass)
89
+ }
90
+
91
+ /**
92
+ * Find the first error of a specific type in the error chain.
93
+ *
94
+ * @param error - The error to search
95
+ * @param ErrorClass - The error class to find
96
+ * @returns The first matching error, or undefined if not found
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * const httpError = findErrorType(error, HTTPError)
101
+ * if (httpError) {
102
+ * console.log(httpError.status)
103
+ * }
104
+ * ```
105
+ */
106
+ export function findErrorType<T extends Error>(
107
+ error: Error,
108
+ ErrorClass: new (...args: any[]) => T
109
+ ): T | undefined {
110
+ const chain = getErrorChain(error)
111
+ return chain.find((e): e is T => e instanceof ErrorClass)
112
+ }
package/src/index.ts ADDED
@@ -0,0 +1,77 @@
1
+ // Client
2
+
3
+ // Types
4
+ export * from '@lifi/perps-types'
5
+ // Agent
6
+ export { AgentManager } from './agent/AgentManager.js'
7
+ export { createMemoryStorage, localStorageAdapter } from './agent/storage.js'
8
+ export type { Agent, StorageAdapter } from './agent/types.js'
9
+ export type {
10
+ PerpsBaseConfig,
11
+ PerpsConfig,
12
+ PerpsSDKClient,
13
+ RequestInterceptor,
14
+ SDKRequestOptions,
15
+ } from './client/createPerpsClient.js'
16
+ export { createPerpsClient } from './client/createPerpsClient.js'
17
+ export { PerpsClient } from './client/PerpsClient.js'
18
+ export type {
19
+ BuildAuthorizationParams,
20
+ CancelOrdersParams,
21
+ ExecuteAuthorizationsParams,
22
+ ExecuteAuthorizationsResult,
23
+ GetRequiredAuthorizationsParams,
24
+ PerpsClientOptions,
25
+ PlaceOrderParams,
26
+ RequiredAuthorizationsResult,
27
+ SigningMode,
28
+ } from './client/types.js'
29
+ export { AgentError } from './errors/AgentError.js'
30
+ export { PerpsErrorMessage, PerpsErrorName } from './errors/constants.js'
31
+ // Errors
32
+ export { HTTPError } from './errors/HTTPError.js'
33
+ export { PerpsError } from './errors/PerpsError.js'
34
+ export { PerpsSDKError } from './errors/PerpsSDKError.js'
35
+ export { ServerError } from './errors/ServerError.js'
36
+ export {
37
+ findErrorType,
38
+ getErrorChain,
39
+ getRootCause,
40
+ getRootCauseMessage,
41
+ hasErrorType,
42
+ } from './errors/utils/rootCause.js'
43
+ export { ValidationError } from './errors/ValidationError.js'
44
+ export type { CancelOrderParams } from './services/cancelOrder.js'
45
+ // Services
46
+ export { cancelOrder } from './services/cancelOrder.js'
47
+ export type { CreateAuthorizationParams } from './services/createAuthorization.js'
48
+ export { createAuthorization } from './services/createAuthorization.js'
49
+ export type { CreateOrderParams } from './services/createOrder.js'
50
+ export { createOrder } from './services/createOrder.js'
51
+ export type { GetAccountParams } from './services/getAccount.js'
52
+ export { getAccount } from './services/getAccount.js'
53
+ export { getDexes } from './services/getDexes.js'
54
+ export type { GetHistoryParams } from './services/getHistory.js'
55
+ export { getHistory } from './services/getHistory.js'
56
+ export type { GetMarketParams } from './services/getMarket.js'
57
+ export { getMarket } from './services/getMarket.js'
58
+ export type { GetMarketsParams } from './services/getMarkets.js'
59
+ export { getMarkets } from './services/getMarkets.js'
60
+ export type { GetOhlcvParams } from './services/getOhlcv.js'
61
+ export { getOhlcv } from './services/getOhlcv.js'
62
+ export type { GetOrderParams } from './services/getOrder.js'
63
+ export { getOrder } from './services/getOrder.js'
64
+ export type { GetOrderbookParams } from './services/getOrderbook.js'
65
+ export { getOrderbook } from './services/getOrderbook.js'
66
+ export type { GetPricesParams } from './services/getPrices.js'
67
+ export { getPrices } from './services/getPrices.js'
68
+ export type { SubmitAuthorizationParams } from './services/submitAuthorization.js'
69
+ export { submitAuthorization } from './services/submitAuthorization.js'
70
+ export type { SubmitOrderParams } from './services/submitOrder.js'
71
+ export { submitOrder } from './services/submitOrder.js'
72
+
73
+ // Utils
74
+ export { signTypedData } from './utils/signTypedData.js'
75
+
76
+ // Version
77
+ export { name, version } from './version.js'
@@ -0,0 +1,75 @@
1
+ import type { Address, CancelOrderPayloadResponse } from '@lifi/perps-types'
2
+ import type {
3
+ PerpsSDKClient,
4
+ SDKRequestOptions,
5
+ } from '../client/createPerpsClient.js'
6
+ import { request } from '../utils/request.js'
7
+
8
+ export interface CancelOrderParams {
9
+ /** DEX to cancel orders on (e.g., 'hyperliquid') */
10
+ dex: string
11
+ /** Wallet address */
12
+ address: Address
13
+ /** Address of the signer (for agent mode, this is the agent address) */
14
+ signerAddress?: Address
15
+ /** Order IDs to cancel */
16
+ ids: string[]
17
+ }
18
+
19
+ /**
20
+ * Create cancel order payloads for signing.
21
+ * Returns typed data that must be signed by the user or agent.
22
+ *
23
+ * @param client - The SDK client instance
24
+ * @param params - Request parameters
25
+ * @param options - Request options (e.g., AbortSignal)
26
+ * @returns Cancel actions with typed data for signing
27
+ * @throws {HTTPError} On API error responses
28
+ * @throws {PerpsError} On network or parsing errors
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const client = createPerpsClient({ integrator: 'my-app' })
33
+ * const { actions } = await cancelOrder(client, {
34
+ * dex: 'hyperliquid',
35
+ * address: '0x1234...',
36
+ * ids: ['order1', 'order2']
37
+ * })
38
+ *
39
+ * // Sign with agent key or user wallet
40
+ * const signedActions = await Promise.all(
41
+ * actions.map(async (a) => ({
42
+ * action: a.action,
43
+ * typedData: a.typedData,
44
+ * signature: await signTypedData(agentPrivateKey, a.typedData)
45
+ * }))
46
+ * )
47
+ *
48
+ * // Submit the signed cancellation
49
+ * await submitOrder(client, {
50
+ * dex: 'hyperliquid',
51
+ * address: '0x1234...',
52
+ * actions: signedActions
53
+ * })
54
+ * ```
55
+ */
56
+ export async function cancelOrder(
57
+ client: PerpsSDKClient,
58
+ params: CancelOrderParams,
59
+ options?: SDKRequestOptions
60
+ ): Promise<CancelOrderPayloadResponse> {
61
+ return request<CancelOrderPayloadResponse>(
62
+ client.config,
63
+ `${client.config.apiUrl}/cancelOrder`,
64
+ {
65
+ method: 'POST',
66
+ body: JSON.stringify({
67
+ dex: params.dex,
68
+ address: params.address,
69
+ signerAddress: params.signerAddress,
70
+ ids: params.ids,
71
+ }),
72
+ },
73
+ options
74
+ )
75
+ }
@@ -0,0 +1,75 @@
1
+ import type {
2
+ Address,
3
+ AuthorizationInput,
4
+ CreateAuthorizationResponse,
5
+ } from '@lifi/perps-types'
6
+ import type {
7
+ PerpsSDKClient,
8
+ SDKRequestOptions,
9
+ } from '../client/createPerpsClient.js'
10
+ import { request } from '../utils/request.js'
11
+
12
+ export interface CreateAuthorizationParams {
13
+ /** DEX to authorize (e.g., 'hyperliquid') */
14
+ dex: string
15
+ /** Wallet address */
16
+ address: Address
17
+ /** Address of the signer (for agent mode, this is the agent address) */
18
+ signerAddress?: Address
19
+ /** List of authorizations to create */
20
+ authorizations: AuthorizationInput[]
21
+ }
22
+
23
+ /**
24
+ * Create authorization payloads for signing.
25
+ * Returns typed data that must be signed by the user or agent.
26
+ *
27
+ * @param client - The SDK client instance
28
+ * @param params - Request parameters
29
+ * @param options - Request options (e.g., AbortSignal)
30
+ * @returns Authorization actions with typed data for signing
31
+ * @throws {HTTPError} On API error responses
32
+ * @throws {PerpsError} On network or parsing errors
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const client = createPerpsClient({ integrator: 'my-app' })
37
+ * const { actions } = await createAuthorization(client, {
38
+ * dex: 'hyperliquid',
39
+ * address: '0x1234...',
40
+ * authorizations: [
41
+ * { key: 'ApproveAgent', params: { agentAddress: '0xabcd...' } },
42
+ * { key: 'ApproveBuilderFee' }
43
+ * ]
44
+ * })
45
+ *
46
+ * // Sign each action's typedData with the user's wallet
47
+ * const signedActions = await Promise.all(
48
+ * actions.map(async (a) => ({
49
+ * action: a.action,
50
+ * typedData: a.typedData,
51
+ * signature: await walletClient.signTypedData(a.typedData)
52
+ * }))
53
+ * )
54
+ * ```
55
+ */
56
+ export async function createAuthorization(
57
+ client: PerpsSDKClient,
58
+ params: CreateAuthorizationParams,
59
+ options?: SDKRequestOptions
60
+ ): Promise<CreateAuthorizationResponse> {
61
+ return request<CreateAuthorizationResponse>(
62
+ client.config,
63
+ `${client.config.apiUrl}/createAuthorization`,
64
+ {
65
+ method: 'POST',
66
+ body: JSON.stringify({
67
+ dex: params.dex,
68
+ address: params.address,
69
+ signerAddress: params.signerAddress,
70
+ authorizations: params.authorizations,
71
+ }),
72
+ },
73
+ options
74
+ )
75
+ }
@@ -0,0 +1,113 @@
1
+ import type {
2
+ Address,
3
+ CreateOrderResponse,
4
+ OrderSide,
5
+ OrderType,
6
+ TimeInForce,
7
+ TriggerOrderInput,
8
+ } from '@lifi/perps-types'
9
+ import type {
10
+ PerpsSDKClient,
11
+ SDKRequestOptions,
12
+ } from '../client/createPerpsClient.js'
13
+ import { request } from '../utils/request.js'
14
+
15
+ export interface CreateOrderParams {
16
+ /** DEX to place order on (e.g., 'hyperliquid') */
17
+ dex: string
18
+ /** Wallet address */
19
+ address: Address
20
+ /** Address of the signer (for agent mode, this is the agent address) */
21
+ signerAddress?: Address
22
+ /** Client-provided order ID for tracking */
23
+ clientOrderId?: string
24
+ /** Market symbol (e.g., 'BTC') */
25
+ symbol: string
26
+ /** Order side */
27
+ side: OrderSide
28
+ /** Order type */
29
+ type: OrderType
30
+ /** Order size (in base asset) */
31
+ size: string
32
+ /** Order price (required for limit orders) */
33
+ price: string
34
+ /** Leverage for the position */
35
+ leverage?: number
36
+ /** Whether this order only reduces position */
37
+ reduceOnly?: boolean
38
+ /** Time in force */
39
+ timeInForce?: TimeInForce
40
+ /** Expiration time (ISO 8601) */
41
+ expiresAt?: string
42
+ /** Take profit trigger order */
43
+ takeProfit?: TriggerOrderInput
44
+ /** Stop loss trigger order */
45
+ stopLoss?: TriggerOrderInput
46
+ }
47
+
48
+ /**
49
+ * Create order payloads for signing.
50
+ * Returns typed data that must be signed by the user or agent.
51
+ *
52
+ * @param client - The SDK client instance
53
+ * @param params - Request parameters
54
+ * @param options - Request options (e.g., AbortSignal)
55
+ * @returns Order actions with typed data for signing
56
+ * @throws {HTTPError} On API error responses
57
+ * @throws {PerpsError} On network or parsing errors
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const client = createPerpsClient({ integrator: 'my-app' })
62
+ * const { actions } = await createOrder(client, {
63
+ * dex: 'hyperliquid',
64
+ * address: '0x1234...',
65
+ * symbol: 'BTC',
66
+ * side: OrderSide.BUY,
67
+ * type: OrderType.LIMIT,
68
+ * size: '0.1',
69
+ * price: '94000.00',
70
+ * leverage: 10
71
+ * })
72
+ *
73
+ * // Sign each action with the user's wallet or agent key
74
+ * const signedActions = await Promise.all(
75
+ * actions.map(async (a) => ({
76
+ * action: a.action,
77
+ * typedData: a.typedData,
78
+ * signature: await walletClient.signTypedData(a.typedData)
79
+ * }))
80
+ * )
81
+ * ```
82
+ */
83
+ export async function createOrder(
84
+ client: PerpsSDKClient,
85
+ params: CreateOrderParams,
86
+ options?: SDKRequestOptions
87
+ ): Promise<CreateOrderResponse> {
88
+ return request<CreateOrderResponse>(
89
+ client.config,
90
+ `${client.config.apiUrl}/createOrder`,
91
+ {
92
+ method: 'POST',
93
+ body: JSON.stringify({
94
+ dex: params.dex,
95
+ address: params.address,
96
+ signerAddress: params.signerAddress,
97
+ clientOrderId: params.clientOrderId,
98
+ symbol: params.symbol,
99
+ side: params.side,
100
+ type: params.type,
101
+ size: params.size,
102
+ price: params.price,
103
+ leverage: params.leverage,
104
+ reduceOnly: params.reduceOnly,
105
+ timeInForce: params.timeInForce,
106
+ expiresAt: params.expiresAt,
107
+ takeProfit: params.takeProfit,
108
+ stopLoss: params.stopLoss,
109
+ }),
110
+ },
111
+ options
112
+ )
113
+ }
@@ -0,0 +1,47 @@
1
+ import type { AccountResponse, Address } 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 GetAccountParams {
9
+ /** DEX to get account from (e.g., 'hyperliquid') */
10
+ dex: string
11
+ /** Wallet address */
12
+ address: Address
13
+ }
14
+
15
+ /**
16
+ * Get account information including balances, positions, and open orders.
17
+ *
18
+ * @param client - The SDK client instance
19
+ * @param params - Request parameters
20
+ * @param options - Request options (e.g., AbortSignal)
21
+ * @returns Account details
22
+ * @throws {HTTPError} On API error responses
23
+ * @throws {PerpsError} On network or parsing errors
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const client = createPerpsClient({ integrator: 'my-app' })
28
+ * const account = await getAccount(client, {
29
+ * dex: 'hyperliquid',
30
+ * address: '0x1234...'
31
+ * })
32
+ * console.log(account.balances) // [{ currency: 'USDC', amount: '10000.00' }]
33
+ * console.log(account.positions) // [{ symbol: 'BTC', side: 'LONG', ... }]
34
+ * console.log(account.openOrders) // [{ id: '123', symbol: 'BTC', ... }]
35
+ * ```
36
+ */
37
+ export async function getAccount(
38
+ client: PerpsSDKClient,
39
+ params: GetAccountParams,
40
+ options?: SDKRequestOptions
41
+ ): Promise<AccountResponse> {
42
+ const url = buildUrl(`${client.config.apiUrl}/account`, {
43
+ dex: params.dex,
44
+ address: params.address,
45
+ })
46
+ return request<AccountResponse>(client.config, url, {}, options)
47
+ }
@@ -0,0 +1,34 @@
1
+ import type { DexesResponse } from '@lifi/perps-types'
2
+ import type {
3
+ PerpsSDKClient,
4
+ SDKRequestOptions,
5
+ } from '../client/createPerpsClient.js'
6
+ import { request } from '../utils/request.js'
7
+
8
+ /**
9
+ * Get all available DEXes.
10
+ *
11
+ * @param client - The SDK client instance
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
15
+ * @throws {PerpsError} On network or parsing errors
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const client = createPerpsClient({ integrator: 'my-app' })
20
+ * const { dexes } = await getDexes(client)
21
+ * console.log(dexes) // [{ key: 'hyperliquid', name: 'Hyperliquid', ... }]
22
+ * ```
23
+ */
24
+ export async function getDexes(
25
+ client: PerpsSDKClient,
26
+ options?: SDKRequestOptions
27
+ ): Promise<DexesResponse> {
28
+ return request<DexesResponse>(
29
+ client.config,
30
+ `${client.config.apiUrl}/dexes`,
31
+ {},
32
+ options
33
+ )
34
+ }
@@ -0,0 +1,62 @@
1
+ import type { Address, HistoryResponse } 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 GetHistoryParams {
9
+ /** DEX to get history from (e.g., 'hyperliquid') */
10
+ dex: string
11
+ /** Wallet address */
12
+ address: Address
13
+ /** Maximum number of items to return */
14
+ limit?: number
15
+ /** Cursor for pagination */
16
+ cursor?: string
17
+ }
18
+
19
+ /**
20
+ * Get order history for an account.
21
+ *
22
+ * @param client - The SDK client instance
23
+ * @param params - Request parameters
24
+ * @param options - Request options (e.g., AbortSignal)
25
+ * @returns Order history with pagination
26
+ * @throws {HTTPError} On API error responses
27
+ * @throws {PerpsError} On network or parsing errors
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const client = createPerpsClient({ integrator: 'my-app' })
32
+ * const { items, pagination } = await getHistory(client, {
33
+ * dex: 'hyperliquid',
34
+ * address: '0x1234...',
35
+ * limit: 50
36
+ * })
37
+ *
38
+ * console.log(items) // [{ id: '123', symbol: 'BTC', status: 'FILLED', ... }]
39
+ *
40
+ * // Fetch next page
41
+ * if (pagination.hasMore) {
42
+ * const nextPage = await getHistory(client, {
43
+ * dex: 'hyperliquid',
44
+ * address: '0x1234...',
45
+ * cursor: pagination.cursor
46
+ * })
47
+ * }
48
+ * ```
49
+ */
50
+ export async function getHistory(
51
+ client: PerpsSDKClient,
52
+ params: GetHistoryParams,
53
+ options?: SDKRequestOptions
54
+ ): Promise<HistoryResponse> {
55
+ const url = buildUrl(`${client.config.apiUrl}/history`, {
56
+ dex: params.dex,
57
+ address: params.address,
58
+ limit: params.limit,
59
+ cursor: params.cursor,
60
+ })
61
+ return request<HistoryResponse>(client.config, url, {}, options)
62
+ }
@@ -0,0 +1,41 @@
1
+ import type { Market } 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 GetMarketParams {
9
+ /** DEX to get market from (e.g., 'hyperliquid') */
10
+ dex: string
11
+ /** Market symbol (e.g., 'BTC') */
12
+ symbol: string
13
+ }
14
+
15
+ /**
16
+ * Get a specific market by symbol.
17
+ *
18
+ * @param client - The SDK client instance
19
+ * @param params - Request parameters
20
+ * @param options - Request options (e.g., AbortSignal)
21
+ * @returns Market details
22
+ * @throws {HTTPError} On API error responses (e.g., 404 if market not found)
23
+ * @throws {PerpsError} On network or parsing errors
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const client = createPerpsClient({ integrator: 'my-app' })
28
+ * const market = await getMarket(client, { dex: 'hyperliquid', symbol: 'BTC' })
29
+ * console.log(market) // { symbol: 'BTC', markPrice: '95000.00', ... }
30
+ * ```
31
+ */
32
+ export async function getMarket(
33
+ client: PerpsSDKClient,
34
+ params: GetMarketParams,
35
+ options?: SDKRequestOptions
36
+ ): Promise<Market> {
37
+ const url = buildUrl(`${client.config.apiUrl}/markets/${params.symbol}`, {
38
+ dex: params.dex,
39
+ })
40
+ return request<Market>(client.config, url, {}, options)
41
+ }
@@ -0,0 +1,37 @@
1
+ import type { MarketsResponse } 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 GetMarketsParams {
9
+ /** DEX to get markets from (e.g., 'hyperliquid') */
10
+ dex: string
11
+ }
12
+
13
+ /**
14
+ * Get all available markets for a DEX.
15
+ *
16
+ * @param client - The SDK client instance
17
+ * @param params - Request parameters
18
+ * @param options - Request options (e.g., AbortSignal)
19
+ * @returns List of available markets
20
+ * @throws {HTTPError} On API error responses
21
+ * @throws {PerpsError} On network or parsing errors
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const client = createPerpsClient({ integrator: 'my-app' })
26
+ * const { markets } = await getMarkets(client, { dex: 'hyperliquid' })
27
+ * console.log(markets) // [{ symbol: 'BTC', name: 'Bitcoin', ... }]
28
+ * ```
29
+ */
30
+ export async function getMarkets(
31
+ client: PerpsSDKClient,
32
+ params: GetMarketsParams,
33
+ options?: SDKRequestOptions
34
+ ): Promise<MarketsResponse> {
35
+ const url = buildUrl(`${client.config.apiUrl}/markets`, { dex: params.dex })
36
+ return request<MarketsResponse>(client.config, url, {}, options)
37
+ }