@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,164 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { AgentManager } from '../agent/AgentManager.js'
3
+ import type { StorageAdapter } from '../agent/types.js'
4
+ import { PerpsErrorName } from '../errors/constants.js'
5
+ import { PerpsError } from '../errors/PerpsError.js'
6
+ import { sleep } from '../utils/sleep.js'
7
+
8
+ const DEFAULT_API_URL = 'https://li.quest/v1/perps'
9
+ const HEALTH_POLL_INTERVAL_MS = 500
10
+ const HEALTH_MAX_ATTEMPTS = 50
11
+
12
+ /**
13
+ * Configuration options for creating a Perps SDK client.
14
+ */
15
+ export interface PerpsConfig {
16
+ /** Integrator identifier (required) */
17
+ integrator: string
18
+ /** Optional API key for authenticated requests */
19
+ apiKey?: string
20
+ /** Base API URL. Defaults to https://li.quest/v1/perps */
21
+ apiUrl?: string
22
+ /** Disable version update check in development mode */
23
+ disableVersionCheck?: boolean
24
+ /** Custom storage adapter for agent keys. Defaults to localStorage. */
25
+ storage?: StorageAdapter
26
+ /** Optional request interceptor for custom handling */
27
+ requestInterceptor?: RequestInterceptor
28
+ /** Whether to perform a health check on startup before allowing requests. Default: true */
29
+ healthCheck?: boolean
30
+ }
31
+
32
+ /**
33
+ * Resolved configuration with required fields.
34
+ */
35
+ export interface PerpsBaseConfig {
36
+ /** Integrator identifier (required) */
37
+ integrator: string
38
+ /** Optional API key for authenticated requests */
39
+ apiKey?: string
40
+ /** Resolved API URL (always set) */
41
+ apiUrl: string
42
+ /** Disable version update check in development mode */
43
+ disableVersionCheck?: boolean
44
+ /** Optional request interceptor for custom handling */
45
+ requestInterceptor?: RequestInterceptor
46
+ /** Promise that resolves when the API is ready. Requests wait for this. */
47
+ readyPromise?: Promise<void>
48
+ }
49
+
50
+ /**
51
+ * Request interceptor function type.
52
+ * Called before each request is made, allowing modification of fetch options.
53
+ */
54
+ export type RequestInterceptor = (
55
+ url: string,
56
+ options: RequestInit
57
+ ) => RequestInit | Promise<RequestInit>
58
+
59
+ /**
60
+ * Options passed to service functions for request control.
61
+ */
62
+ export interface SDKRequestOptions {
63
+ /** AbortSignal to cancel the request */
64
+ signal?: AbortSignal
65
+ }
66
+
67
+ /**
68
+ * The Perps SDK client instance.
69
+ * Holds configuration and agent manager for making API requests.
70
+ */
71
+ export interface PerpsSDKClient {
72
+ /** SDK configuration */
73
+ readonly config: PerpsBaseConfig
74
+ /** Agent manager for USER_AGENT signing mode */
75
+ readonly agentManager: AgentManager
76
+ /** Promise that resolves when the API health check passes. */
77
+ readonly ready: Promise<void>
78
+ }
79
+
80
+ /**
81
+ * Create a new Perps SDK client.
82
+ *
83
+ * @param options - Configuration options
84
+ * @returns A new SDK client instance
85
+ * @throws {PerpsError} If integrator is not provided
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * const client = createPerpsClient({
90
+ * integrator: 'my-app',
91
+ * apiKey: 'optional-api-key',
92
+ * })
93
+ *
94
+ * // Use with service functions
95
+ * const { dexes } = await getDexes(client)
96
+ * ```
97
+ */
98
+ export function createPerpsClient(options: PerpsConfig): PerpsSDKClient {
99
+ if (!options.integrator) {
100
+ const error = new PerpsError(
101
+ PerpsErrorCode.ValidationError,
102
+ 'Integrator is required. Please see documentation at https://docs.li.fi'
103
+ )
104
+ error.name = PerpsErrorName.ValidationError
105
+ throw error
106
+ }
107
+
108
+ const apiUrl = options.apiUrl ?? DEFAULT_API_URL
109
+
110
+ const readyPromise =
111
+ options.healthCheck !== false ? pollHealth(apiUrl) : Promise.resolve()
112
+
113
+ const config: PerpsBaseConfig = {
114
+ integrator: options.integrator,
115
+ apiKey: options.apiKey,
116
+ apiUrl,
117
+ disableVersionCheck: options.disableVersionCheck,
118
+ requestInterceptor: options.requestInterceptor,
119
+ readyPromise,
120
+ }
121
+
122
+ const agentManager = new AgentManager(options.storage)
123
+
124
+ return {
125
+ get config() {
126
+ return config
127
+ },
128
+ get agentManager() {
129
+ return agentManager
130
+ },
131
+ get ready() {
132
+ return readyPromise
133
+ },
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Poll the API health endpoint until it returns a successful response.
139
+ *
140
+ * Derives the health URL from the apiUrl origin (e.g. https://li.quest/health/live).
141
+ * Retries up to {@link HEALTH_MAX_ATTEMPTS} times with {@link HEALTH_POLL_INTERVAL_MS} delays.
142
+ *
143
+ * @throws {PerpsError} If the health endpoint does not respond after all attempts
144
+ */
145
+ async function pollHealth(apiUrl: string): Promise<void> {
146
+ const healthUrl = `${new URL(apiUrl).origin}/health/live`
147
+
148
+ for (let i = 0; i < HEALTH_MAX_ATTEMPTS; i++) {
149
+ try {
150
+ const response = await fetch(healthUrl)
151
+ if (response.ok) {
152
+ return
153
+ }
154
+ } catch {
155
+ // Server not reachable yet, retry
156
+ }
157
+ await sleep(HEALTH_POLL_INTERVAL_MS)
158
+ }
159
+
160
+ throw new PerpsError(
161
+ PerpsErrorCode.ServerError,
162
+ 'API health check failed: server did not become ready'
163
+ )
164
+ }
@@ -0,0 +1,156 @@
1
+ import type {
2
+ Address,
3
+ AuthorizationInput,
4
+ AuthorizationsResponse,
5
+ OrderSide,
6
+ OrderType,
7
+ SignedAuthorization,
8
+ TimeInForce,
9
+ TriggerOrderInput,
10
+ } from '@lifi/perps-types'
11
+ import type { StorageAdapter } from '../agent/types.js'
12
+
13
+ // Re-export the SDK client types from createPerpsClient
14
+ export type {
15
+ PerpsBaseConfig,
16
+ PerpsConfig,
17
+ PerpsSDKClient,
18
+ RequestInterceptor,
19
+ SDKRequestOptions,
20
+ } from './createPerpsClient.js'
21
+
22
+ /**
23
+ * Signing mode determines who signs trading actions.
24
+ *
25
+ * - `USER`: User wallet signs each action (requires wallet popup per action)
26
+ * - `USER_AGENT`: SDK-generated agent signs actions (no popups after initial setup)
27
+ */
28
+ export type SigningMode = 'USER' | 'USER_AGENT'
29
+
30
+ /**
31
+ * Options for PerpsClient constructor.
32
+ */
33
+ export interface PerpsClientOptions {
34
+ /** Integrator identifier (required) */
35
+ integrator: string
36
+ /** Optional API key for authenticated requests */
37
+ apiKey?: string
38
+ /** Base API URL. Defaults to https://li.quest/v1/perps */
39
+ apiUrl?: string
40
+ /** Custom storage adapter for agent keys. Defaults to localStorage. */
41
+ storage?: StorageAdapter
42
+ /** Whether to perform a health check on startup before allowing requests. Default: true */
43
+ healthCheck?: boolean
44
+ }
45
+
46
+ /**
47
+ * Parameters for building authorization payloads.
48
+ */
49
+ export interface BuildAuthorizationParams {
50
+ /** DEX to authorize */
51
+ dex: string
52
+ /** User wallet address */
53
+ address: Address
54
+ /** Address of the signer (auto-set in USER_AGENT mode) */
55
+ signerAddress?: Address
56
+ /** Authorizations to create */
57
+ authorizations: AuthorizationInput[]
58
+ }
59
+
60
+ /**
61
+ * Parameters for placing an order.
62
+ */
63
+ export interface PlaceOrderParams {
64
+ /** DEX to place order on */
65
+ dex: string
66
+ /** User wallet address */
67
+ address: Address
68
+ /** Client-provided order ID */
69
+ clientOrderId?: string
70
+ /** Market symbol */
71
+ symbol: string
72
+ /** Order side */
73
+ side: OrderSide
74
+ /** Order type */
75
+ type: OrderType
76
+ /** Order size */
77
+ size: string
78
+ /** Order price */
79
+ price: string
80
+ /** Leverage */
81
+ leverage?: number
82
+ /** Reduce only flag */
83
+ reduceOnly?: boolean
84
+ /** Time in force */
85
+ timeInForce?: TimeInForce
86
+ /** Expiration time */
87
+ expiresAt?: string
88
+ /** Take profit trigger */
89
+ takeProfit?: TriggerOrderInput
90
+ /** Stop loss trigger */
91
+ stopLoss?: TriggerOrderInput
92
+ }
93
+
94
+ /**
95
+ * Parameters for canceling orders.
96
+ */
97
+ export interface CancelOrdersParams {
98
+ /** DEX to cancel orders on */
99
+ dex: string
100
+ /** User wallet address */
101
+ address: Address
102
+ /** Order IDs to cancel */
103
+ ids: string[]
104
+ }
105
+
106
+ /**
107
+ * Parameters for getRequiredAuthorizations().
108
+ */
109
+ export interface GetRequiredAuthorizationsParams {
110
+ /** DEX to check authorizations for */
111
+ dex: string
112
+ /** User wallet address */
113
+ address: Address
114
+ /** Whether to require abstraction (for HIP-3 assets). Default: false */
115
+ requireAbstraction?: boolean
116
+ }
117
+
118
+ /**
119
+ * Result from getRequiredAuthorizations().
120
+ */
121
+ export interface RequiredAuthorizationsResult {
122
+ /** Authorizations requiring user wallet signature (0, 1, or 2 items) */
123
+ userAuthorizations: AuthorizationInput[]
124
+ /** Authorizations the SDK auto-signs with the agent after user auths are submitted */
125
+ agentAuthorizations: AuthorizationInput[]
126
+ /** Whether the local agent is registered and valid on the backend */
127
+ agentValid: boolean
128
+ /** The raw abstractionStatus from config (null=never set, 'disabled', 'unifiedAccount', 'portfolioMargin') */
129
+ abstractionStatus: string | null
130
+ /** Whether all authorizations are already satisfied (ready to trade) */
131
+ isReady: boolean
132
+ }
133
+
134
+ /**
135
+ * Parameters for executeAuthorizations().
136
+ */
137
+ export interface ExecuteAuthorizationsParams {
138
+ /** DEX to authorize */
139
+ dex: string
140
+ /** User wallet address */
141
+ address: Address
142
+ /** The result from getRequiredAuthorizations() */
143
+ required: RequiredAuthorizationsResult
144
+ /** User-signed actions corresponding to required.userAuthorizations */
145
+ userSignedActions: SignedAuthorization[]
146
+ }
147
+
148
+ /**
149
+ * Result from executeAuthorizations().
150
+ */
151
+ export interface ExecuteAuthorizationsResult {
152
+ /** Results from user-signed authorization submission */
153
+ userResults: AuthorizationsResponse
154
+ /** Results from agent-signed authorization submission (if any) */
155
+ agentResults?: AuthorizationsResponse
156
+ }
@@ -0,0 +1,43 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { version } from '../version.js'
3
+ import { PerpsErrorName } from './constants.js'
4
+ import { PerpsError } from './PerpsError.js'
5
+
6
+ /**
7
+ * Error thrown when agent-related operations fail (agent not found, authorization issues, etc.)
8
+ */
9
+ export class AgentError extends PerpsError {
10
+ override name = PerpsErrorName.AgentError
11
+
12
+ constructor(message: string, code = PerpsErrorCode.AgentUnauthorized) {
13
+ super(code, message)
14
+ this.name = PerpsErrorName.AgentError
15
+
16
+ // Override message format
17
+ this.message = `[${PerpsErrorName.AgentError}] ${message}\nLI.FI Perps SDK version: ${version}`
18
+ }
19
+
20
+ /**
21
+ * Create an AgentError for a missing agent.
22
+ *
23
+ * @param address - The user address
24
+ * @param dex - The DEX identifier
25
+ */
26
+ static notFound(address: string, dex: string): AgentError {
27
+ return new AgentError(
28
+ `Agent not found for ${address} on ${dex}. Call setSigningMode() first.`
29
+ )
30
+ }
31
+
32
+ /**
33
+ * Create an AgentError for an unauthorized agent.
34
+ *
35
+ * @param address - The agent address
36
+ * @param dex - The DEX identifier
37
+ */
38
+ static unauthorized(address: string, dex: string): AgentError {
39
+ return new AgentError(
40
+ `Agent ${address} is not authorized on ${dex}. Submit authorization first.`
41
+ )
42
+ }
43
+ }
@@ -0,0 +1,72 @@
1
+ import type { PerpsErrorBody } from '@lifi/perps-types'
2
+ import { PerpsErrorCode } from '@lifi/perps-types'
3
+ import { PerpsErrorName } from './constants.js'
4
+ import { PerpsError } from './PerpsError.js'
5
+
6
+ const statusCodeToErrorCode = new Map<number, PerpsErrorCode>([
7
+ [400, PerpsErrorCode.ValidationError],
8
+ [401, PerpsErrorCode.SignatureInvalid],
9
+ [403, PerpsErrorCode.AgentUnauthorized],
10
+ [404, PerpsErrorCode.MarketNotFound],
11
+ [422, PerpsErrorCode.ValidationError],
12
+ [424, PerpsErrorCode.ThirdPartyError],
13
+ [429, PerpsErrorCode.ServerError],
14
+ [500, PerpsErrorCode.ServerError],
15
+ [502, PerpsErrorCode.ServerError],
16
+ [503, PerpsErrorCode.ServerError],
17
+ [504, PerpsErrorCode.TimeoutError],
18
+ ])
19
+
20
+ function getErrorCodeFromStatus(status: number): PerpsErrorCode {
21
+ return statusCodeToErrorCode.get(status) ?? PerpsErrorCode.ServerError
22
+ }
23
+
24
+ function createInitialMessage(response: Response): string {
25
+ const statusCode =
26
+ response.status || response.status === 0 ? response.status : ''
27
+ const title = response.statusText || ''
28
+ const status = `${statusCode} ${title}`.trim()
29
+ const reason = status ? `status code ${status}` : 'an unknown error'
30
+ return `Request failed with ${reason}`
31
+ }
32
+
33
+ export class HTTPError extends PerpsError {
34
+ response: Response
35
+ status: number
36
+ url: string
37
+ responseBody?: PerpsErrorBody
38
+
39
+ constructor(response: Response, url: string) {
40
+ const code = getErrorCodeFromStatus(response.status)
41
+ const message = createInitialMessage(response)
42
+
43
+ super(code, message)
44
+
45
+ this.name = PerpsErrorName.HTTPError
46
+ this.response = response
47
+ this.status = response.status
48
+ this.url = url
49
+ }
50
+
51
+ async buildAdditionalDetails(): Promise<this> {
52
+ try {
53
+ this.responseBody = (await this.response.json()) as PerpsErrorBody
54
+
55
+ if (this.responseBody) {
56
+ // Update code from response body if available
57
+ if (this.responseBody.code) {
58
+ this.code = this.responseBody.code
59
+ }
60
+
61
+ // Append server message
62
+ if (this.responseBody.message) {
63
+ this.message = `${this.message}. ${this.responseBody.message}`
64
+ }
65
+ }
66
+ } catch {
67
+ // Response body parsing failed - use defaults
68
+ }
69
+
70
+ return this
71
+ }
72
+ }
@@ -0,0 +1,34 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { version } from '../version.js'
3
+ import { PerpsErrorName } from './constants.js'
4
+
5
+ export class PerpsError extends Error {
6
+ code: PerpsErrorCode
7
+ override name = PerpsErrorName.PerpsError
8
+
9
+ constructor(
10
+ code: PerpsErrorCode = PerpsErrorCode.DefaultError,
11
+ message = 'Unknown error occurred'
12
+ ) {
13
+ const errorMessage = `[${PerpsErrorName.PerpsError}] ${message}\nLI.FI Perps SDK version: ${version}`
14
+ super(errorMessage)
15
+ this.code = code
16
+ this.name = PerpsErrorName.PerpsError
17
+ }
18
+
19
+ static fromError(error: unknown, defaultCode?: PerpsErrorCode): PerpsError {
20
+ if (error instanceof PerpsError) {
21
+ return error
22
+ }
23
+ if (error instanceof Error) {
24
+ return new PerpsError(
25
+ defaultCode ?? PerpsErrorCode.DefaultError,
26
+ error.message
27
+ )
28
+ }
29
+ return new PerpsError(
30
+ defaultCode ?? PerpsErrorCode.DefaultError,
31
+ String(error)
32
+ )
33
+ }
34
+ }
@@ -0,0 +1,79 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { version } from '../version.js'
3
+ import { PerpsError } from './PerpsError.js'
4
+
5
+ const PERPS_SDK_ERROR_NAME = 'PerpsSDKError'
6
+
7
+ /**
8
+ * Top-level SDK error that wraps all other error types.
9
+ * This is the public-facing error type for the SDK.
10
+ *
11
+ * PerpsSDKError always includes:
12
+ * - A consistent error message format with SDK version
13
+ * - Access to the root cause error via the `cause` property
14
+ * - Stack trace preservation
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * try {
19
+ * await getDexes(client)
20
+ * } catch (error) {
21
+ * if (error instanceof PerpsSDKError) {
22
+ * console.log(error.message) // [PerpsSDKError] message\nSDK version: X
23
+ * console.log(error.cause) // Original error
24
+ * console.log(error.code) // Numeric error code
25
+ * }
26
+ * }
27
+ * ```
28
+ */
29
+ export class PerpsSDKError extends Error {
30
+ override name = PERPS_SDK_ERROR_NAME
31
+
32
+ /** Numeric error code from PerpsErrorCode enum */
33
+ code: PerpsErrorCode
34
+
35
+ /** Original cause of the error */
36
+ override cause?: Error
37
+
38
+ constructor(error: Error, message?: string) {
39
+ // Determine the code
40
+ const code =
41
+ error instanceof PerpsError ? error.code : PerpsErrorCode.DefaultError
42
+
43
+ // Build the message
44
+ const errorMessage = message ?? error.message
45
+ const formattedMessage = `[${PERPS_SDK_ERROR_NAME}] ${errorMessage}\nLI.FI Perps SDK version: ${version}`
46
+
47
+ super(formattedMessage)
48
+
49
+ this.name = PERPS_SDK_ERROR_NAME
50
+ this.code = code
51
+ this.cause = error
52
+
53
+ // Preserve the original stack trace if available
54
+ if (error.stack) {
55
+ this.stack = `${this.stack}\nCaused by: ${error.stack}`
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Wrap any error in a PerpsSDKError.
61
+ *
62
+ * @param error - The error to wrap
63
+ * @param message - Optional custom message
64
+ * @returns PerpsSDKError instance
65
+ */
66
+ static wrap(error: unknown, message?: string): PerpsSDKError {
67
+ if (error instanceof PerpsSDKError) {
68
+ return error
69
+ }
70
+
71
+ if (error instanceof Error) {
72
+ return new PerpsSDKError(error, message)
73
+ }
74
+
75
+ // Convert non-Error to Error
76
+ const wrappedError = new Error(String(error))
77
+ return new PerpsSDKError(wrappedError, message)
78
+ }
79
+ }
@@ -0,0 +1,41 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { version } from '../version.js'
3
+ import { PerpsErrorName } from './constants.js'
4
+ import { PerpsError } from './PerpsError.js'
5
+
6
+ /**
7
+ * Error thrown when server-side operations fail (network errors, timeouts, etc.)
8
+ */
9
+ export class ServerError extends PerpsError {
10
+ override name = PerpsErrorName.ServerError
11
+
12
+ constructor(message: string, code = PerpsErrorCode.ServerError) {
13
+ super(code, message)
14
+ this.name = PerpsErrorName.ServerError
15
+
16
+ // Override message format
17
+ this.message = `[${PerpsErrorName.ServerError}] ${message}\nLI.FI Perps SDK version: ${version}`
18
+ }
19
+
20
+ /**
21
+ * Create a ServerError for a network failure.
22
+ *
23
+ * @param cause - The original error
24
+ */
25
+ static networkError(cause?: Error): ServerError {
26
+ const message = cause?.message ?? 'Network request failed'
27
+ return new ServerError(message)
28
+ }
29
+
30
+ /**
31
+ * Create a ServerError for a timeout.
32
+ *
33
+ * @param operation - The operation that timed out
34
+ */
35
+ static timeout(operation: string): ServerError {
36
+ return new ServerError(
37
+ `${operation} timed out`,
38
+ PerpsErrorCode.TimeoutError
39
+ )
40
+ }
41
+ }
@@ -0,0 +1,38 @@
1
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
+ import { version } from '../version.js'
3
+ import { PerpsErrorName } from './constants.js'
4
+ import { PerpsError } from './PerpsError.js'
5
+
6
+ /**
7
+ * Error thrown when validation fails (invalid parameters, missing required fields, etc.)
8
+ */
9
+ export class ValidationError extends PerpsError {
10
+ override name = PerpsErrorName.ValidationError
11
+
12
+ constructor(message: string) {
13
+ super(PerpsErrorCode.ValidationError, message)
14
+ this.name = PerpsErrorName.ValidationError
15
+
16
+ // Override message format
17
+ this.message = `[${PerpsErrorName.ValidationError}] ${message}\nLI.FI Perps SDK version: ${version}`
18
+ }
19
+
20
+ /**
21
+ * Create a ValidationError from a validation failure.
22
+ *
23
+ * @param field - The field that failed validation
24
+ * @param reason - The reason for validation failure
25
+ */
26
+ static field(field: string, reason: string): ValidationError {
27
+ return new ValidationError(`Invalid ${field}: ${reason}`)
28
+ }
29
+
30
+ /**
31
+ * Create a ValidationError for a missing required field.
32
+ *
33
+ * @param field - The name of the missing field
34
+ */
35
+ static required(field: string): ValidationError {
36
+ return new ValidationError(`${field} is required`)
37
+ }
38
+ }
@@ -0,0 +1,15 @@
1
+ export enum PerpsErrorName {
2
+ PerpsError = 'PerpsError',
3
+ HTTPError = 'HTTPError',
4
+ ValidationError = 'ValidationError',
5
+ ServerError = 'ServerError',
6
+ ConfigError = 'ConfigError',
7
+ AgentError = 'AgentError',
8
+ }
9
+
10
+ export enum PerpsErrorMessage {
11
+ UnknownError = 'Unknown error occurred.',
12
+ ConfigNotInitialized = 'SDK not configured. Call createPerpsConfig() first.',
13
+ AgentNotFound = 'Agent not found. Call setSigningMode() first.',
14
+ InvalidSigningMode = 'Invalid signing mode for this operation.',
15
+ }