@lifi/perps-sdk 0.0.0-preview-64fca0d

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 (675) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/client/PerpsClient.d.ts +63 -0
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -0
  4. package/dist/cjs/client/PerpsClient.js +269 -0
  5. package/dist/cjs/client/PerpsClient.js.map +1 -0
  6. package/dist/cjs/client/bindProvider.d.ts +3 -0
  7. package/dist/cjs/client/bindProvider.d.ts.map +1 -0
  8. package/dist/cjs/client/bindProvider.js +9 -0
  9. package/dist/cjs/client/bindProvider.js.map +1 -0
  10. package/dist/cjs/client/createPerpsClient.d.ts +10 -0
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -0
  12. package/dist/cjs/client/createPerpsClient.js +54 -0
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -0
  14. package/dist/cjs/client/requireProvider.d.ts +3 -0
  15. package/dist/cjs/client/requireProvider.d.ts.map +1 -0
  16. package/dist/cjs/client/requireProvider.js +16 -0
  17. package/dist/cjs/client/requireProvider.js.map +1 -0
  18. package/dist/cjs/errors/PerpsError.d.ts +8 -0
  19. package/dist/cjs/errors/PerpsError.d.ts.map +1 -0
  20. package/dist/cjs/errors/PerpsError.js +15 -0
  21. package/dist/cjs/errors/PerpsError.js.map +1 -0
  22. package/dist/cjs/errors/constants.d.ts +5 -0
  23. package/dist/cjs/errors/constants.d.ts.map +1 -0
  24. package/dist/cjs/errors/constants.js +9 -0
  25. package/dist/cjs/errors/constants.js.map +1 -0
  26. package/dist/cjs/index.d.ts +78 -0
  27. package/dist/cjs/index.d.ts.map +1 -0
  28. package/dist/cjs/index.js +168 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/package.json +1 -0
  31. package/dist/cjs/registry/assetRegistry.d.ts +11 -0
  32. package/dist/cjs/registry/assetRegistry.d.ts.map +1 -0
  33. package/dist/cjs/registry/assetRegistry.js +39 -0
  34. package/dist/cjs/registry/assetRegistry.js.map +1 -0
  35. package/dist/cjs/registry/marketRegistry.d.ts +13 -0
  36. package/dist/cjs/registry/marketRegistry.d.ts.map +1 -0
  37. package/dist/cjs/registry/marketRegistry.js +58 -0
  38. package/dist/cjs/registry/marketRegistry.js.map +1 -0
  39. package/dist/cjs/registry/referenceDataRegistry.d.ts +20 -0
  40. package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -0
  41. package/dist/cjs/registry/referenceDataRegistry.js +59 -0
  42. package/dist/cjs/registry/referenceDataRegistry.js.map +1 -0
  43. package/dist/cjs/services/createAction.d.ts +13 -0
  44. package/dist/cjs/services/createAction.d.ts.map +1 -0
  45. package/dist/cjs/services/createAction.js +17 -0
  46. package/dist/cjs/services/createAction.js.map +1 -0
  47. package/dist/cjs/services/executeAction.d.ts +13 -0
  48. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  49. package/dist/cjs/services/executeAction.js +18 -0
  50. package/dist/cjs/services/executeAction.js.map +1 -0
  51. package/dist/cjs/services/getAccount.d.ts +10 -0
  52. package/dist/cjs/services/getAccount.d.ts.map +1 -0
  53. package/dist/cjs/services/getAccount.js +8 -0
  54. package/dist/cjs/services/getAccount.js.map +1 -0
  55. package/dist/cjs/services/getActivity.d.ts +15 -0
  56. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  57. package/dist/cjs/services/getActivity.js +15 -0
  58. package/dist/cjs/services/getActivity.js.map +1 -0
  59. package/dist/cjs/services/getAssets.d.ts +8 -0
  60. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  61. package/dist/cjs/services/getAssets.js +11 -0
  62. package/dist/cjs/services/getAssets.js.map +1 -0
  63. package/dist/cjs/services/getFills.d.ts +14 -0
  64. package/dist/cjs/services/getFills.d.ts.map +1 -0
  65. package/dist/cjs/services/getFills.js +14 -0
  66. package/dist/cjs/services/getFills.js.map +1 -0
  67. package/dist/cjs/services/getMarket.d.ts +9 -0
  68. package/dist/cjs/services/getMarket.d.ts.map +1 -0
  69. package/dist/cjs/services/getMarket.js +13 -0
  70. package/dist/cjs/services/getMarket.js.map +1 -0
  71. package/dist/cjs/services/getMarkets.d.ts +9 -0
  72. package/dist/cjs/services/getMarkets.d.ts.map +1 -0
  73. package/dist/cjs/services/getMarkets.js +12 -0
  74. package/dist/cjs/services/getMarkets.js.map +1 -0
  75. package/dist/cjs/services/getMeta.d.ts +5 -0
  76. package/dist/cjs/services/getMeta.d.ts.map +1 -0
  77. package/dist/cjs/services/getMeta.js +8 -0
  78. package/dist/cjs/services/getMeta.js.map +1 -0
  79. package/dist/cjs/services/getOhlcv.d.ts +13 -0
  80. package/dist/cjs/services/getOhlcv.d.ts.map +1 -0
  81. package/dist/cjs/services/getOhlcv.js +16 -0
  82. package/dist/cjs/services/getOhlcv.js.map +1 -0
  83. package/dist/cjs/services/getOrder.d.ts +11 -0
  84. package/dist/cjs/services/getOrder.d.ts.map +1 -0
  85. package/dist/cjs/services/getOrder.js +8 -0
  86. package/dist/cjs/services/getOrder.js.map +1 -0
  87. package/dist/cjs/services/getOrderbook.d.ts +10 -0
  88. package/dist/cjs/services/getOrderbook.d.ts.map +1 -0
  89. package/dist/cjs/services/getOrderbook.js +13 -0
  90. package/dist/cjs/services/getOrderbook.js.map +1 -0
  91. package/dist/cjs/services/getOrders.d.ts +13 -0
  92. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  93. package/dist/cjs/services/getOrders.js +13 -0
  94. package/dist/cjs/services/getOrders.js.map +1 -0
  95. package/dist/cjs/services/getPositions.d.ts +13 -0
  96. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  97. package/dist/cjs/services/getPositions.js +13 -0
  98. package/dist/cjs/services/getPositions.js.map +1 -0
  99. package/dist/cjs/services/getPrices.d.ts +9 -0
  100. package/dist/cjs/services/getPrices.d.ts.map +1 -0
  101. package/dist/cjs/services/getPrices.js +12 -0
  102. package/dist/cjs/services/getPrices.js.map +1 -0
  103. package/dist/cjs/services/getProviders.d.ts +5 -0
  104. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  105. package/dist/cjs/services/getProviders.js +8 -0
  106. package/dist/cjs/services/getProviders.js.map +1 -0
  107. package/dist/cjs/services/getQuote.d.ts +12 -0
  108. package/dist/cjs/services/getQuote.d.ts.map +1 -0
  109. package/dist/cjs/services/getQuote.js +13 -0
  110. package/dist/cjs/services/getQuote.js.map +1 -0
  111. package/dist/cjs/services/getTermsAcceptance.d.ts +6 -0
  112. package/dist/cjs/services/getTermsAcceptance.d.ts.map +1 -0
  113. package/dist/cjs/services/getTermsAcceptance.js +9 -0
  114. package/dist/cjs/services/getTermsAcceptance.js.map +1 -0
  115. package/dist/cjs/services/resolveQuote.d.ts +6 -0
  116. package/dist/cjs/services/resolveQuote.d.ts.map +1 -0
  117. package/dist/cjs/services/resolveQuote.js +36 -0
  118. package/dist/cjs/services/resolveQuote.js.map +1 -0
  119. package/dist/cjs/services/resolveSubscribeQuote.d.ts +6 -0
  120. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -0
  121. package/dist/cjs/services/resolveSubscribeQuote.js +63 -0
  122. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -0
  123. package/dist/cjs/storage/parseStoredRecord.d.ts +4 -0
  124. package/dist/cjs/storage/parseStoredRecord.d.ts.map +1 -0
  125. package/dist/cjs/storage/parseStoredRecord.js +26 -0
  126. package/dist/cjs/storage/parseStoredRecord.js.map +1 -0
  127. package/dist/cjs/storage/storage.d.ts +4 -0
  128. package/dist/cjs/storage/storage.d.ts.map +1 -0
  129. package/dist/cjs/storage/storage.js +47 -0
  130. package/dist/cjs/storage/storage.js.map +1 -0
  131. package/dist/cjs/storage/types.d.ts +6 -0
  132. package/dist/cjs/storage/types.d.ts.map +1 -0
  133. package/dist/cjs/storage/types.js +3 -0
  134. package/dist/cjs/storage/types.js.map +1 -0
  135. package/dist/cjs/transport/fetchWithRetry.d.ts +8 -0
  136. package/dist/cjs/transport/fetchWithRetry.d.ts.map +1 -0
  137. package/dist/cjs/transport/fetchWithRetry.js +81 -0
  138. package/dist/cjs/transport/fetchWithRetry.js.map +1 -0
  139. package/dist/cjs/transport/request.d.ts +8 -0
  140. package/dist/cjs/transport/request.d.ts.map +1 -0
  141. package/dist/cjs/transport/request.js +75 -0
  142. package/dist/cjs/transport/request.js.map +1 -0
  143. package/dist/cjs/transport/retryPolicy.d.ts +37 -0
  144. package/dist/cjs/transport/retryPolicy.d.ts.map +1 -0
  145. package/dist/cjs/transport/retryPolicy.js +79 -0
  146. package/dist/cjs/transport/retryPolicy.js.map +1 -0
  147. package/dist/cjs/types/api.d.ts +85 -0
  148. package/dist/cjs/types/api.d.ts.map +1 -0
  149. package/dist/cjs/types/api.js +3 -0
  150. package/dist/cjs/types/api.js.map +1 -0
  151. package/dist/cjs/types/config.d.ts +26 -0
  152. package/dist/cjs/types/config.d.ts.map +1 -0
  153. package/dist/cjs/types/config.js +3 -0
  154. package/dist/cjs/types/config.js.map +1 -0
  155. package/dist/cjs/types/provider.d.ts +84 -0
  156. package/dist/cjs/types/provider.d.ts.map +1 -0
  157. package/dist/cjs/types/provider.js +3 -0
  158. package/dist/cjs/types/provider.js.map +1 -0
  159. package/dist/cjs/utils/accountSummary.d.ts +3 -0
  160. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  161. package/dist/cjs/utils/accountSummary.js +25 -0
  162. package/dist/cjs/utils/accountSummary.js.map +1 -0
  163. package/dist/cjs/utils/assertNever.d.ts +2 -0
  164. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  165. package/dist/cjs/utils/assertNever.js +7 -0
  166. package/dist/cjs/utils/assertNever.js.map +1 -0
  167. package/dist/cjs/utils/calculations.d.ts +51 -0
  168. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  169. package/dist/cjs/utils/calculations.js +149 -0
  170. package/dist/cjs/utils/calculations.js.map +1 -0
  171. package/dist/cjs/utils/depositChain.d.ts +6 -0
  172. package/dist/cjs/utils/depositChain.d.ts.map +1 -0
  173. package/dist/cjs/utils/depositChain.js +13 -0
  174. package/dist/cjs/utils/depositChain.js.map +1 -0
  175. package/dist/cjs/utils/explorer.d.ts +9 -0
  176. package/dist/cjs/utils/explorer.d.ts.map +1 -0
  177. package/dist/cjs/utils/explorer.js +23 -0
  178. package/dist/cjs/utils/explorer.js.map +1 -0
  179. package/dist/cjs/utils/fillClassification.d.ts +3 -0
  180. package/dist/cjs/utils/fillClassification.d.ts.map +1 -0
  181. package/dist/cjs/utils/fillClassification.js +37 -0
  182. package/dist/cjs/utils/fillClassification.js.map +1 -0
  183. package/dist/cjs/utils/format.d.ts +13 -0
  184. package/dist/cjs/utils/format.d.ts.map +1 -0
  185. package/dist/cjs/utils/format.js +117 -0
  186. package/dist/cjs/utils/format.js.map +1 -0
  187. package/dist/cjs/utils/orderClassification.d.ts +10 -0
  188. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  189. package/dist/cjs/utils/orderClassification.js +49 -0
  190. package/dist/cjs/utils/orderClassification.js.map +1 -0
  191. package/dist/cjs/utils/orderMath.d.ts +6 -0
  192. package/dist/cjs/utils/orderMath.d.ts.map +1 -0
  193. package/dist/cjs/utils/orderMath.js +71 -0
  194. package/dist/cjs/utils/orderMath.js.map +1 -0
  195. package/dist/cjs/utils/parse.d.ts +2 -0
  196. package/dist/cjs/utils/parse.d.ts.map +1 -0
  197. package/dist/cjs/utils/parse.js +14 -0
  198. package/dist/cjs/utils/parse.js.map +1 -0
  199. package/dist/cjs/utils/positionMath.d.ts +32 -0
  200. package/dist/cjs/utils/positionMath.d.ts.map +1 -0
  201. package/dist/cjs/utils/positionMath.js +52 -0
  202. package/dist/cjs/utils/positionMath.js.map +1 -0
  203. package/dist/cjs/utils/signTypedData.d.ts +5 -0
  204. package/dist/cjs/utils/signTypedData.d.ts.map +1 -0
  205. package/dist/cjs/utils/signTypedData.js +23 -0
  206. package/dist/cjs/utils/signTypedData.js.map +1 -0
  207. package/dist/cjs/utils/sleep.d.ts +2 -0
  208. package/dist/cjs/utils/sleep.d.ts.map +1 -0
  209. package/dist/cjs/utils/sleep.js +6 -0
  210. package/dist/cjs/utils/sleep.js.map +1 -0
  211. package/dist/cjs/utils/units.d.ts +3 -0
  212. package/dist/cjs/utils/units.d.ts.map +1 -0
  213. package/dist/cjs/utils/units.js +18 -0
  214. package/dist/cjs/utils/units.js.map +1 -0
  215. package/dist/cjs/utils/validation.d.ts +2 -0
  216. package/dist/cjs/utils/validation.d.ts.map +1 -0
  217. package/dist/cjs/utils/validation.js +16 -0
  218. package/dist/cjs/utils/validation.js.map +1 -0
  219. package/dist/cjs/version.d.ts +3 -0
  220. package/dist/cjs/version.d.ts.map +1 -0
  221. package/dist/cjs/version.js +6 -0
  222. package/dist/cjs/version.js.map +1 -0
  223. package/dist/cjs/websocket/PerpsWsClient.d.ts +27 -0
  224. package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -0
  225. package/dist/cjs/websocket/PerpsWsClient.js +84 -0
  226. package/dist/cjs/websocket/PerpsWsClient.js.map +1 -0
  227. package/dist/cjs/websocket/ReconnectingWebSocket.d.ts +52 -0
  228. package/dist/cjs/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  229. package/dist/cjs/websocket/ReconnectingWebSocket.js +213 -0
  230. package/dist/cjs/websocket/ReconnectingWebSocket.js.map +1 -0
  231. package/dist/cjs/websocket/WsProviderBase.d.ts +31 -0
  232. package/dist/cjs/websocket/WsProviderBase.d.ts.map +1 -0
  233. package/dist/cjs/websocket/WsProviderBase.js +197 -0
  234. package/dist/cjs/websocket/WsProviderBase.js.map +1 -0
  235. package/dist/cjs/websocket/cachePromise.d.ts +2 -0
  236. package/dist/cjs/websocket/cachePromise.d.ts.map +1 -0
  237. package/dist/cjs/websocket/cachePromise.js +18 -0
  238. package/dist/cjs/websocket/cachePromise.js.map +1 -0
  239. package/dist/cjs/websocket/types.d.ts +15 -0
  240. package/dist/cjs/websocket/types.d.ts.map +1 -0
  241. package/dist/cjs/websocket/types.js +3 -0
  242. package/dist/cjs/websocket/types.js.map +1 -0
  243. package/dist/cjs/websocket/wsLog.d.ts +10 -0
  244. package/dist/cjs/websocket/wsLog.d.ts.map +1 -0
  245. package/dist/cjs/websocket/wsLog.js +31 -0
  246. package/dist/cjs/websocket/wsLog.js.map +1 -0
  247. package/dist/esm/client/PerpsClient.d.ts +285 -0
  248. package/dist/esm/client/PerpsClient.d.ts.map +1 -0
  249. package/dist/esm/client/PerpsClient.js +498 -0
  250. package/dist/esm/client/PerpsClient.js.map +1 -0
  251. package/dist/esm/client/bindProvider.d.ts +13 -0
  252. package/dist/esm/client/bindProvider.d.ts.map +1 -0
  253. package/dist/esm/client/bindProvider.js +16 -0
  254. package/dist/esm/client/bindProvider.js.map +1 -0
  255. package/dist/esm/client/createPerpsClient.d.ts +37 -0
  256. package/dist/esm/client/createPerpsClient.d.ts.map +1 -0
  257. package/dist/esm/client/createPerpsClient.js +76 -0
  258. package/dist/esm/client/createPerpsClient.js.map +1 -0
  259. package/dist/esm/client/requireProvider.d.ts +12 -0
  260. package/dist/esm/client/requireProvider.d.ts.map +1 -0
  261. package/dist/esm/client/requireProvider.js +22 -0
  262. package/dist/esm/client/requireProvider.js.map +1 -0
  263. package/dist/esm/errors/PerpsError.d.ts +16 -0
  264. package/dist/esm/errors/PerpsError.d.ts.map +1 -0
  265. package/dist/esm/errors/PerpsError.js +19 -0
  266. package/dist/esm/errors/PerpsError.js.map +1 -0
  267. package/dist/esm/errors/constants.d.ts +11 -0
  268. package/dist/esm/errors/constants.d.ts.map +1 -0
  269. package/dist/esm/errors/constants.js +12 -0
  270. package/dist/esm/errors/constants.js.map +1 -0
  271. package/dist/esm/index.d.ts +86 -0
  272. package/dist/esm/index.d.ts.map +1 -0
  273. package/dist/esm/index.js +63 -0
  274. package/dist/esm/index.js.map +1 -0
  275. package/dist/esm/package.json +1 -0
  276. package/dist/esm/registry/assetRegistry.d.ts +25 -0
  277. package/dist/esm/registry/assetRegistry.d.ts.map +1 -0
  278. package/dist/esm/registry/assetRegistry.js +48 -0
  279. package/dist/esm/registry/assetRegistry.js.map +1 -0
  280. package/dist/esm/registry/marketRegistry.d.ts +42 -0
  281. package/dist/esm/registry/marketRegistry.d.ts.map +1 -0
  282. package/dist/esm/registry/marketRegistry.js +81 -0
  283. package/dist/esm/registry/marketRegistry.js.map +1 -0
  284. package/dist/esm/registry/referenceDataRegistry.d.ts +44 -0
  285. package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -0
  286. package/dist/esm/registry/referenceDataRegistry.js +79 -0
  287. package/dist/esm/registry/referenceDataRegistry.js.map +1 -0
  288. package/dist/esm/services/createAction.d.ts +26 -0
  289. package/dist/esm/services/createAction.d.ts.map +1 -0
  290. package/dist/esm/services/createAction.js +22 -0
  291. package/dist/esm/services/createAction.js.map +1 -0
  292. package/dist/esm/services/executeAction.d.ts +26 -0
  293. package/dist/esm/services/executeAction.d.ts.map +1 -0
  294. package/dist/esm/services/executeAction.js +26 -0
  295. package/dist/esm/services/executeAction.js.map +1 -0
  296. package/dist/esm/services/getAccount.d.ts +35 -0
  297. package/dist/esm/services/getAccount.d.ts.map +1 -0
  298. package/dist/esm/services/getAccount.js +25 -0
  299. package/dist/esm/services/getAccount.js.map +1 -0
  300. package/dist/esm/services/getActivity.d.ts +39 -0
  301. package/dist/esm/services/getActivity.d.ts.map +1 -0
  302. package/dist/esm/services/getActivity.js +29 -0
  303. package/dist/esm/services/getActivity.js.map +1 -0
  304. package/dist/esm/services/getAssets.d.ts +27 -0
  305. package/dist/esm/services/getAssets.d.ts.map +1 -0
  306. package/dist/esm/services/getAssets.js +22 -0
  307. package/dist/esm/services/getAssets.js.map +1 -0
  308. package/dist/esm/services/getFills.d.ts +38 -0
  309. package/dist/esm/services/getFills.d.ts.map +1 -0
  310. package/dist/esm/services/getFills.js +28 -0
  311. package/dist/esm/services/getFills.js.map +1 -0
  312. package/dist/esm/services/getMarket.d.ts +34 -0
  313. package/dist/esm/services/getMarket.d.ts.map +1 -0
  314. package/dist/esm/services/getMarket.js +25 -0
  315. package/dist/esm/services/getMarket.js.map +1 -0
  316. package/dist/esm/services/getMarkets.d.ts +28 -0
  317. package/dist/esm/services/getMarkets.d.ts.map +1 -0
  318. package/dist/esm/services/getMarkets.js +22 -0
  319. package/dist/esm/services/getMarkets.js.map +1 -0
  320. package/dist/esm/services/getMeta.d.ts +21 -0
  321. package/dist/esm/services/getMeta.d.ts.map +1 -0
  322. package/dist/esm/services/getMeta.js +21 -0
  323. package/dist/esm/services/getMeta.js.map +1 -0
  324. package/dist/esm/services/getOhlcv.d.ts +36 -0
  325. package/dist/esm/services/getOhlcv.d.ts.map +1 -0
  326. package/dist/esm/services/getOhlcv.js +28 -0
  327. package/dist/esm/services/getOhlcv.js.map +1 -0
  328. package/dist/esm/services/getOrder.d.ts +33 -0
  329. package/dist/esm/services/getOrder.d.ts.map +1 -0
  330. package/dist/esm/services/getOrder.js +22 -0
  331. package/dist/esm/services/getOrder.js.map +1 -0
  332. package/dist/esm/services/getOrderbook.d.ts +24 -0
  333. package/dist/esm/services/getOrderbook.d.ts.map +1 -0
  334. package/dist/esm/services/getOrderbook.js +17 -0
  335. package/dist/esm/services/getOrderbook.js.map +1 -0
  336. package/dist/esm/services/getOrders.d.ts +35 -0
  337. package/dist/esm/services/getOrders.d.ts.map +1 -0
  338. package/dist/esm/services/getOrders.js +26 -0
  339. package/dist/esm/services/getOrders.js.map +1 -0
  340. package/dist/esm/services/getPositions.d.ts +35 -0
  341. package/dist/esm/services/getPositions.d.ts.map +1 -0
  342. package/dist/esm/services/getPositions.js +26 -0
  343. package/dist/esm/services/getPositions.js.map +1 -0
  344. package/dist/esm/services/getPrices.d.ts +21 -0
  345. package/dist/esm/services/getPrices.d.ts.map +1 -0
  346. package/dist/esm/services/getPrices.js +15 -0
  347. package/dist/esm/services/getPrices.js.map +1 -0
  348. package/dist/esm/services/getProviders.d.ts +22 -0
  349. package/dist/esm/services/getProviders.d.ts.map +1 -0
  350. package/dist/esm/services/getProviders.js +22 -0
  351. package/dist/esm/services/getProviders.js.map +1 -0
  352. package/dist/esm/services/getQuote.d.ts +42 -0
  353. package/dist/esm/services/getQuote.d.ts.map +1 -0
  354. package/dist/esm/services/getQuote.js +33 -0
  355. package/dist/esm/services/getQuote.js.map +1 -0
  356. package/dist/esm/services/getTermsAcceptance.d.ts +26 -0
  357. package/dist/esm/services/getTermsAcceptance.d.ts.map +1 -0
  358. package/dist/esm/services/getTermsAcceptance.js +26 -0
  359. package/dist/esm/services/getTermsAcceptance.js.map +1 -0
  360. package/dist/esm/services/resolveQuote.d.ts +26 -0
  361. package/dist/esm/services/resolveQuote.d.ts.map +1 -0
  362. package/dist/esm/services/resolveQuote.js +52 -0
  363. package/dist/esm/services/resolveQuote.js.map +1 -0
  364. package/dist/esm/services/resolveSubscribeQuote.d.ts +31 -0
  365. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -0
  366. package/dist/esm/services/resolveSubscribeQuote.js +84 -0
  367. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -0
  368. package/dist/esm/storage/parseStoredRecord.d.ts +29 -0
  369. package/dist/esm/storage/parseStoredRecord.d.ts.map +1 -0
  370. package/dist/esm/storage/parseStoredRecord.js +47 -0
  371. package/dist/esm/storage/parseStoredRecord.js.map +1 -0
  372. package/dist/esm/storage/storage.d.ts +15 -0
  373. package/dist/esm/storage/storage.d.ts.map +1 -0
  374. package/dist/esm/storage/storage.js +56 -0
  375. package/dist/esm/storage/storage.js.map +1 -0
  376. package/dist/esm/storage/types.d.ts +14 -0
  377. package/dist/esm/storage/types.d.ts.map +1 -0
  378. package/dist/esm/storage/types.js +2 -0
  379. package/dist/esm/storage/types.js.map +1 -0
  380. package/dist/esm/transport/fetchWithRetry.d.ts +22 -0
  381. package/dist/esm/transport/fetchWithRetry.d.ts.map +1 -0
  382. package/dist/esm/transport/fetchWithRetry.js +87 -0
  383. package/dist/esm/transport/fetchWithRetry.js.map +1 -0
  384. package/dist/esm/transport/request.d.ts +25 -0
  385. package/dist/esm/transport/request.d.ts.map +1 -0
  386. package/dist/esm/transport/request.js +82 -0
  387. package/dist/esm/transport/request.js.map +1 -0
  388. package/dist/esm/transport/retryPolicy.d.ts +106 -0
  389. package/dist/esm/transport/retryPolicy.d.ts.map +1 -0
  390. package/dist/esm/transport/retryPolicy.js +99 -0
  391. package/dist/esm/transport/retryPolicy.js.map +1 -0
  392. package/dist/esm/types/api.d.ts +214 -0
  393. package/dist/esm/types/api.d.ts.map +1 -0
  394. package/dist/esm/types/api.js +2 -0
  395. package/dist/esm/types/api.js.map +1 -0
  396. package/dist/esm/types/config.d.ts +70 -0
  397. package/dist/esm/types/config.d.ts.map +1 -0
  398. package/dist/esm/types/config.js +2 -0
  399. package/dist/esm/types/config.js.map +1 -0
  400. package/dist/esm/types/provider.d.ts +330 -0
  401. package/dist/esm/types/provider.d.ts.map +1 -0
  402. package/dist/esm/types/provider.js +2 -0
  403. package/dist/esm/types/provider.js.map +1 -0
  404. package/dist/esm/utils/accountSummary.d.ts +13 -0
  405. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  406. package/dist/esm/utils/accountSummary.js +32 -0
  407. package/dist/esm/utils/accountSummary.js.map +1 -0
  408. package/dist/esm/utils/assertNever.d.ts +20 -0
  409. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  410. package/dist/esm/utils/assertNever.js +22 -0
  411. package/dist/esm/utils/assertNever.js.map +1 -0
  412. package/dist/esm/utils/calculations.d.ts +223 -0
  413. package/dist/esm/utils/calculations.d.ts.map +1 -0
  414. package/dist/esm/utils/calculations.js +291 -0
  415. package/dist/esm/utils/calculations.js.map +1 -0
  416. package/dist/esm/utils/depositChain.d.ts +25 -0
  417. package/dist/esm/utils/depositChain.d.ts.map +1 -0
  418. package/dist/esm/utils/depositChain.js +23 -0
  419. package/dist/esm/utils/depositChain.js.map +1 -0
  420. package/dist/esm/utils/explorer.d.ts +33 -0
  421. package/dist/esm/utils/explorer.d.ts.map +1 -0
  422. package/dist/esm/utils/explorer.js +38 -0
  423. package/dist/esm/utils/explorer.js.map +1 -0
  424. package/dist/esm/utils/fillClassification.d.ts +13 -0
  425. package/dist/esm/utils/fillClassification.d.ts.map +1 -0
  426. package/dist/esm/utils/fillClassification.js +44 -0
  427. package/dist/esm/utils/fillClassification.js.map +1 -0
  428. package/dist/esm/utils/format.d.ts +66 -0
  429. package/dist/esm/utils/format.d.ts.map +1 -0
  430. package/dist/esm/utils/format.js +171 -0
  431. package/dist/esm/utils/format.js.map +1 -0
  432. package/dist/esm/utils/orderClassification.d.ts +47 -0
  433. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  434. package/dist/esm/utils/orderClassification.js +78 -0
  435. package/dist/esm/utils/orderClassification.js.map +1 -0
  436. package/dist/esm/utils/orderMath.d.ts +44 -0
  437. package/dist/esm/utils/orderMath.d.ts.map +1 -0
  438. package/dist/esm/utils/orderMath.js +103 -0
  439. package/dist/esm/utils/orderMath.js.map +1 -0
  440. package/dist/esm/utils/parse.d.ts +22 -0
  441. package/dist/esm/utils/parse.d.ts.map +1 -0
  442. package/dist/esm/utils/parse.js +31 -0
  443. package/dist/esm/utils/parse.js.map +1 -0
  444. package/dist/esm/utils/positionMath.d.ts +107 -0
  445. package/dist/esm/utils/positionMath.d.ts.map +1 -0
  446. package/dist/esm/utils/positionMath.js +119 -0
  447. package/dist/esm/utils/positionMath.js.map +1 -0
  448. package/dist/esm/utils/signTypedData.d.ts +18 -0
  449. package/dist/esm/utils/signTypedData.d.ts.map +1 -0
  450. package/dist/esm/utils/signTypedData.js +32 -0
  451. package/dist/esm/utils/signTypedData.js.map +1 -0
  452. package/dist/esm/utils/sleep.d.ts +7 -0
  453. package/dist/esm/utils/sleep.d.ts.map +1 -0
  454. package/dist/esm/utils/sleep.js +7 -0
  455. package/dist/esm/utils/sleep.js.map +1 -0
  456. package/dist/esm/utils/units.d.ts +27 -0
  457. package/dist/esm/utils/units.d.ts.map +1 -0
  458. package/dist/esm/utils/units.js +38 -0
  459. package/dist/esm/utils/units.js.map +1 -0
  460. package/dist/esm/utils/validation.d.ts +18 -0
  461. package/dist/esm/utils/validation.d.ts.map +1 -0
  462. package/dist/esm/utils/validation.js +29 -0
  463. package/dist/esm/utils/validation.js.map +1 -0
  464. package/dist/esm/version.d.ts +3 -0
  465. package/dist/esm/version.d.ts.map +1 -0
  466. package/dist/esm/version.js +3 -0
  467. package/dist/esm/version.js.map +1 -0
  468. package/dist/esm/websocket/PerpsWsClient.d.ts +100 -0
  469. package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -0
  470. package/dist/esm/websocket/PerpsWsClient.js +121 -0
  471. package/dist/esm/websocket/PerpsWsClient.js.map +1 -0
  472. package/dist/esm/websocket/ReconnectingWebSocket.d.ts +130 -0
  473. package/dist/esm/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  474. package/dist/esm/websocket/ReconnectingWebSocket.js +288 -0
  475. package/dist/esm/websocket/ReconnectingWebSocket.js.map +1 -0
  476. package/dist/esm/websocket/WsProviderBase.d.ts +89 -0
  477. package/dist/esm/websocket/WsProviderBase.d.ts.map +1 -0
  478. package/dist/esm/websocket/WsProviderBase.js +246 -0
  479. package/dist/esm/websocket/WsProviderBase.js.map +1 -0
  480. package/dist/esm/websocket/cachePromise.d.ts +14 -0
  481. package/dist/esm/websocket/cachePromise.d.ts.map +1 -0
  482. package/dist/esm/websocket/cachePromise.js +27 -0
  483. package/dist/esm/websocket/cachePromise.js.map +1 -0
  484. package/dist/esm/websocket/types.d.ts +60 -0
  485. package/dist/esm/websocket/types.d.ts.map +1 -0
  486. package/dist/esm/websocket/types.js +2 -0
  487. package/dist/esm/websocket/types.js.map +1 -0
  488. package/dist/esm/websocket/wsLog.d.ts +50 -0
  489. package/dist/esm/websocket/wsLog.d.ts.map +1 -0
  490. package/dist/esm/websocket/wsLog.js +68 -0
  491. package/dist/esm/websocket/wsLog.js.map +1 -0
  492. package/dist/types/client/PerpsClient.d.ts +285 -0
  493. package/dist/types/client/PerpsClient.d.ts.map +1 -0
  494. package/dist/types/client/bindProvider.d.ts +13 -0
  495. package/dist/types/client/bindProvider.d.ts.map +1 -0
  496. package/dist/types/client/createPerpsClient.d.ts +37 -0
  497. package/dist/types/client/createPerpsClient.d.ts.map +1 -0
  498. package/dist/types/client/requireProvider.d.ts +12 -0
  499. package/dist/types/client/requireProvider.d.ts.map +1 -0
  500. package/dist/types/errors/PerpsError.d.ts +16 -0
  501. package/dist/types/errors/PerpsError.d.ts.map +1 -0
  502. package/dist/types/errors/constants.d.ts +11 -0
  503. package/dist/types/errors/constants.d.ts.map +1 -0
  504. package/dist/types/index.d.ts +86 -0
  505. package/dist/types/index.d.ts.map +1 -0
  506. package/dist/types/registry/assetRegistry.d.ts +25 -0
  507. package/dist/types/registry/assetRegistry.d.ts.map +1 -0
  508. package/dist/types/registry/marketRegistry.d.ts +42 -0
  509. package/dist/types/registry/marketRegistry.d.ts.map +1 -0
  510. package/dist/types/registry/referenceDataRegistry.d.ts +44 -0
  511. package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -0
  512. package/dist/types/services/createAction.d.ts +26 -0
  513. package/dist/types/services/createAction.d.ts.map +1 -0
  514. package/dist/types/services/executeAction.d.ts +26 -0
  515. package/dist/types/services/executeAction.d.ts.map +1 -0
  516. package/dist/types/services/getAccount.d.ts +35 -0
  517. package/dist/types/services/getAccount.d.ts.map +1 -0
  518. package/dist/types/services/getActivity.d.ts +39 -0
  519. package/dist/types/services/getActivity.d.ts.map +1 -0
  520. package/dist/types/services/getAssets.d.ts +27 -0
  521. package/dist/types/services/getAssets.d.ts.map +1 -0
  522. package/dist/types/services/getFills.d.ts +38 -0
  523. package/dist/types/services/getFills.d.ts.map +1 -0
  524. package/dist/types/services/getMarket.d.ts +34 -0
  525. package/dist/types/services/getMarket.d.ts.map +1 -0
  526. package/dist/types/services/getMarkets.d.ts +28 -0
  527. package/dist/types/services/getMarkets.d.ts.map +1 -0
  528. package/dist/types/services/getMeta.d.ts +21 -0
  529. package/dist/types/services/getMeta.d.ts.map +1 -0
  530. package/dist/types/services/getOhlcv.d.ts +36 -0
  531. package/dist/types/services/getOhlcv.d.ts.map +1 -0
  532. package/dist/types/services/getOrder.d.ts +33 -0
  533. package/dist/types/services/getOrder.d.ts.map +1 -0
  534. package/dist/types/services/getOrderbook.d.ts +24 -0
  535. package/dist/types/services/getOrderbook.d.ts.map +1 -0
  536. package/dist/types/services/getOrders.d.ts +35 -0
  537. package/dist/types/services/getOrders.d.ts.map +1 -0
  538. package/dist/types/services/getPositions.d.ts +35 -0
  539. package/dist/types/services/getPositions.d.ts.map +1 -0
  540. package/dist/types/services/getPrices.d.ts +21 -0
  541. package/dist/types/services/getPrices.d.ts.map +1 -0
  542. package/dist/types/services/getProviders.d.ts +22 -0
  543. package/dist/types/services/getProviders.d.ts.map +1 -0
  544. package/dist/types/services/getQuote.d.ts +42 -0
  545. package/dist/types/services/getQuote.d.ts.map +1 -0
  546. package/dist/types/services/getTermsAcceptance.d.ts +26 -0
  547. package/dist/types/services/getTermsAcceptance.d.ts.map +1 -0
  548. package/dist/types/services/resolveQuote.d.ts +26 -0
  549. package/dist/types/services/resolveQuote.d.ts.map +1 -0
  550. package/dist/types/services/resolveSubscribeQuote.d.ts +31 -0
  551. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -0
  552. package/dist/types/storage/parseStoredRecord.d.ts +29 -0
  553. package/dist/types/storage/parseStoredRecord.d.ts.map +1 -0
  554. package/dist/types/storage/storage.d.ts +15 -0
  555. package/dist/types/storage/storage.d.ts.map +1 -0
  556. package/dist/types/storage/types.d.ts +14 -0
  557. package/dist/types/storage/types.d.ts.map +1 -0
  558. package/dist/types/transport/fetchWithRetry.d.ts +22 -0
  559. package/dist/types/transport/fetchWithRetry.d.ts.map +1 -0
  560. package/dist/types/transport/request.d.ts +25 -0
  561. package/dist/types/transport/request.d.ts.map +1 -0
  562. package/dist/types/transport/retryPolicy.d.ts +106 -0
  563. package/dist/types/transport/retryPolicy.d.ts.map +1 -0
  564. package/dist/types/types/api.d.ts +214 -0
  565. package/dist/types/types/api.d.ts.map +1 -0
  566. package/dist/types/types/config.d.ts +70 -0
  567. package/dist/types/types/config.d.ts.map +1 -0
  568. package/dist/types/types/provider.d.ts +330 -0
  569. package/dist/types/types/provider.d.ts.map +1 -0
  570. package/dist/types/utils/accountSummary.d.ts +13 -0
  571. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  572. package/dist/types/utils/assertNever.d.ts +20 -0
  573. package/dist/types/utils/assertNever.d.ts.map +1 -0
  574. package/dist/types/utils/calculations.d.ts +223 -0
  575. package/dist/types/utils/calculations.d.ts.map +1 -0
  576. package/dist/types/utils/depositChain.d.ts +25 -0
  577. package/dist/types/utils/depositChain.d.ts.map +1 -0
  578. package/dist/types/utils/explorer.d.ts +33 -0
  579. package/dist/types/utils/explorer.d.ts.map +1 -0
  580. package/dist/types/utils/fillClassification.d.ts +13 -0
  581. package/dist/types/utils/fillClassification.d.ts.map +1 -0
  582. package/dist/types/utils/format.d.ts +66 -0
  583. package/dist/types/utils/format.d.ts.map +1 -0
  584. package/dist/types/utils/orderClassification.d.ts +47 -0
  585. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  586. package/dist/types/utils/orderMath.d.ts +44 -0
  587. package/dist/types/utils/orderMath.d.ts.map +1 -0
  588. package/dist/types/utils/parse.d.ts +22 -0
  589. package/dist/types/utils/parse.d.ts.map +1 -0
  590. package/dist/types/utils/positionMath.d.ts +107 -0
  591. package/dist/types/utils/positionMath.d.ts.map +1 -0
  592. package/dist/types/utils/signTypedData.d.ts +18 -0
  593. package/dist/types/utils/signTypedData.d.ts.map +1 -0
  594. package/dist/types/utils/sleep.d.ts +7 -0
  595. package/dist/types/utils/sleep.d.ts.map +1 -0
  596. package/dist/types/utils/units.d.ts +27 -0
  597. package/dist/types/utils/units.d.ts.map +1 -0
  598. package/dist/types/utils/validation.d.ts +18 -0
  599. package/dist/types/utils/validation.d.ts.map +1 -0
  600. package/dist/types/version.d.ts +3 -0
  601. package/dist/types/version.d.ts.map +1 -0
  602. package/dist/types/websocket/PerpsWsClient.d.ts +100 -0
  603. package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -0
  604. package/dist/types/websocket/ReconnectingWebSocket.d.ts +130 -0
  605. package/dist/types/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  606. package/dist/types/websocket/WsProviderBase.d.ts +89 -0
  607. package/dist/types/websocket/WsProviderBase.d.ts.map +1 -0
  608. package/dist/types/websocket/cachePromise.d.ts +14 -0
  609. package/dist/types/websocket/cachePromise.d.ts.map +1 -0
  610. package/dist/types/websocket/types.d.ts +60 -0
  611. package/dist/types/websocket/types.d.ts.map +1 -0
  612. package/dist/types/websocket/wsLog.d.ts +50 -0
  613. package/dist/types/websocket/wsLog.d.ts.map +1 -0
  614. package/package.json +63 -0
  615. package/src/client/PerpsClient.ts +686 -0
  616. package/src/client/bindProvider.ts +24 -0
  617. package/src/client/createPerpsClient.ts +100 -0
  618. package/src/client/requireProvider.ts +29 -0
  619. package/src/errors/PerpsError.ts +23 -0
  620. package/src/errors/constants.ts +10 -0
  621. package/src/index.ts +215 -0
  622. package/src/registry/assetRegistry.ts +62 -0
  623. package/src/registry/marketRegistry.ts +100 -0
  624. package/src/registry/referenceDataRegistry.ts +95 -0
  625. package/src/services/createAction.ts +52 -0
  626. package/src/services/executeAction.ts +56 -0
  627. package/src/services/getAccount.ts +46 -0
  628. package/src/services/getActivity.ts +57 -0
  629. package/src/services/getAssets.ts +38 -0
  630. package/src/services/getFills.ts +55 -0
  631. package/src/services/getMarket.ts +52 -0
  632. package/src/services/getMarkets.ts +40 -0
  633. package/src/services/getMeta.ts +32 -0
  634. package/src/services/getOhlcv.ts +52 -0
  635. package/src/services/getOrder.ts +44 -0
  636. package/src/services/getOrderbook.ts +37 -0
  637. package/src/services/getOrders.ts +51 -0
  638. package/src/services/getPositions.ts +51 -0
  639. package/src/services/getPrices.ts +33 -0
  640. package/src/services/getProviders.ts +33 -0
  641. package/src/services/getQuote.ts +58 -0
  642. package/src/services/getTermsAcceptance.ts +34 -0
  643. package/src/services/resolveQuote.ts +90 -0
  644. package/src/services/resolveSubscribeQuote.ts +107 -0
  645. package/src/storage/parseStoredRecord.ts +55 -0
  646. package/src/storage/storage.ts +60 -0
  647. package/src/storage/types.ts +13 -0
  648. package/src/transport/fetchWithRetry.ts +116 -0
  649. package/src/transport/request.ts +123 -0
  650. package/src/transport/retryPolicy.ts +202 -0
  651. package/src/types/api.ts +239 -0
  652. package/src/types/config.ts +79 -0
  653. package/src/types/provider.ts +429 -0
  654. package/src/utils/accountSummary.ts +46 -0
  655. package/src/utils/assertNever.ts +23 -0
  656. package/src/utils/calculations.ts +407 -0
  657. package/src/utils/depositChain.ts +37 -0
  658. package/src/utils/explorer.ts +51 -0
  659. package/src/utils/fillClassification.ts +51 -0
  660. package/src/utils/format.ts +212 -0
  661. package/src/utils/orderClassification.ts +96 -0
  662. package/src/utils/orderMath.ts +134 -0
  663. package/src/utils/parse.ts +30 -0
  664. package/src/utils/positionMath.ts +149 -0
  665. package/src/utils/signTypedData.ts +41 -0
  666. package/src/utils/sleep.ts +7 -0
  667. package/src/utils/units.ts +39 -0
  668. package/src/utils/validation.ts +38 -0
  669. package/src/version.ts +2 -0
  670. package/src/websocket/PerpsWsClient.ts +204 -0
  671. package/src/websocket/ReconnectingWebSocket.ts +353 -0
  672. package/src/websocket/WsProviderBase.ts +333 -0
  673. package/src/websocket/cachePromise.ts +30 -0
  674. package/src/websocket/types.ts +75 -0
  675. package/src/websocket/wsLog.ts +82 -0
@@ -0,0 +1,686 @@
1
+ import type {
2
+ AccountResponse,
3
+ AccountSummary,
4
+ ActionParamsMap,
5
+ ActionStep,
6
+ CreateActionResponse,
7
+ ExecuteActionResponse,
8
+ MarketRef,
9
+ Position,
10
+ Provider,
11
+ ProviderAction,
12
+ SignedActionStep,
13
+ } from '@lifi/perps-types'
14
+ import { ActionType, PerpsErrorCode } from '@lifi/perps-types'
15
+ import type { Address } from 'viem'
16
+ import { PerpsError } from '../errors/PerpsError.js'
17
+ import { createAction } from '../services/createAction.js'
18
+ import { executeAction } from '../services/executeAction.js'
19
+ import { getAccount as fetchAccount } from '../services/getAccount.js'
20
+ import { getProviders } from '../services/getProviders.js'
21
+ import type {
22
+ BuildProviderSetupParams,
23
+ CancelOrdersParams,
24
+ ExecuteProviderSetupParams,
25
+ ExecuteProviderSetupResult,
26
+ GetAccountResult,
27
+ GetSetupParams,
28
+ ModifyOrdersParams,
29
+ PerpsClientOptions,
30
+ PlaceOrderParams,
31
+ PlaceTriggerOrderParams,
32
+ ProviderSetup,
33
+ WithdrawParams,
34
+ } from '../types/api.js'
35
+ import type {
36
+ ActionSignerContribution,
37
+ PerpsProvider,
38
+ PerpsSDKClient,
39
+ SignActionsContext,
40
+ } from '../types/provider.js'
41
+ import { createPerpsClient } from './createPerpsClient.js'
42
+ import { requireProvider as resolveProvider } from './requireProvider.js'
43
+
44
+ /**
45
+ * Look up an action's descriptor in the provider's metadata. Throws if the
46
+ * action isn't declared — defensive: better to fail loudly than to mis-sign.
47
+ */
48
+ function findActionDescriptor(
49
+ metadata: Provider,
50
+ action: ActionType
51
+ ): ProviderAction {
52
+ const descriptor = [
53
+ ...metadata.setup,
54
+ ...metadata.options,
55
+ ...metadata.actions,
56
+ ].find((d) => d.type === action)
57
+ if (!descriptor) {
58
+ throw new PerpsError(
59
+ PerpsErrorCode.SDKError,
60
+ `Provider '${metadata.key}' does not declare action '${action}'.`
61
+ )
62
+ }
63
+ return descriptor
64
+ }
65
+
66
+ /**
67
+ * The primary high-level perps API: wraps a {@link PerpsSDKClient} and owns the
68
+ * end-to-end signing pipeline for provider setup, orders, and account-level
69
+ * actions. Construct via `new PerpsClient(options)` or the SDK's higher-level
70
+ * wiring.
71
+ *
72
+ * @public
73
+ */
74
+ export class PerpsClient {
75
+ private sdkClient: PerpsSDKClient
76
+ private providerMetadataCache: Map<string, Provider> = new Map()
77
+ private _userWallet: PerpsSDKClient['userWallet'] | undefined
78
+
79
+ constructor(options: PerpsClientOptions) {
80
+ this.sdkClient = createPerpsClient({
81
+ integrator: options.integrator,
82
+ apiKey: options.apiKey,
83
+ apiUrl: options.apiUrl,
84
+ providers: options.providers,
85
+ })
86
+ }
87
+
88
+ /**
89
+ * Set or update the end-user's wallet. Used whenever an action's descriptor
90
+ * names the user wallet in its `signers` list. Pass undefined to clear.
91
+ *
92
+ * @public
93
+ */
94
+ setUserWallet(userWallet: PerpsSDKClient['userWallet']): void {
95
+ this._userWallet = userWallet
96
+ Object.defineProperty(this.sdkClient, 'userWallet', {
97
+ get: () => this._userWallet,
98
+ configurable: true,
99
+ })
100
+ }
101
+
102
+ /**
103
+ * The underlying low-level {@link PerpsSDKClient} (config, user wallet,
104
+ * provider registry) backing this instance.
105
+ *
106
+ * @public
107
+ */
108
+ get client(): PerpsSDKClient {
109
+ return this.sdkClient
110
+ }
111
+
112
+ private async getProviderMetadata(provider: string): Promise<Provider> {
113
+ const cached = this.providerMetadataCache.get(provider)
114
+ if (cached) {
115
+ return cached
116
+ }
117
+
118
+ const { providers } = await getProviders(this.sdkClient)
119
+ for (const d of providers) {
120
+ this.providerMetadataCache.set(d.key, d)
121
+ }
122
+
123
+ const metadata = this.providerMetadataCache.get(provider)
124
+ if (!metadata) {
125
+ const error = new PerpsError(
126
+ PerpsErrorCode.SDKError,
127
+ `Unsupported provider: ${provider}`
128
+ )
129
+ error.tool = '@lifi/perps-sdk'
130
+ throw error
131
+ }
132
+ return metadata
133
+ }
134
+
135
+ /**
136
+ * Resolve the registered provider plugin for `provider`, throwing a
137
+ * `PerpsError` when the caller has not registered one via the SDK's
138
+ * `providers` option. The plugin owns signer identity and write-side signing.
139
+ */
140
+ private requireProvider(provider: string): PerpsProvider {
141
+ return resolveProvider(this.sdkClient, provider)
142
+ }
143
+
144
+ /**
145
+ * Ask the provider plugin for the signer-bearing wire fields of `action` —
146
+ * the on-wire `signerAddress` and any signer-derived params (e.g.
147
+ * Hyperliquid's `agentAddress` for `APPROVE_AGENT`). Forwards the descriptor's
148
+ * `signers` so the plugin can branch on signer role. Returns empty when the
149
+ * plugin signs as the user or with a non-EVM credential. Core constructs no
150
+ * `signerAddress` itself; signer identity is plugin-owned.
151
+ */
152
+ private async resolveActionRequest(
153
+ provider: string,
154
+ descriptor: ProviderAction,
155
+ address: Address
156
+ ): Promise<ActionSignerContribution> {
157
+ const plugin = this.requireProvider(provider)
158
+ if (typeof plugin.resolveActionRequest !== 'function') {
159
+ return {}
160
+ }
161
+ return plugin.resolveActionRequest(
162
+ descriptor.type,
163
+ address,
164
+ descriptor.signers
165
+ )
166
+ }
167
+
168
+ /**
169
+ * Delegate signing of `actions` to the provider plugin. The plugin owns
170
+ * every signing arm and branches on the descriptor's `signers` internally,
171
+ * reading the end-user's wallet from the {@link SignActionsContext} when an
172
+ * arm signs as the user.
173
+ */
174
+ private async delegateSignActions(
175
+ provider: string,
176
+ address: Address,
177
+ descriptor: ProviderAction,
178
+ actions: ActionStep[]
179
+ ): Promise<SignedActionStep[]> {
180
+ const plugin = this.requireProvider(provider)
181
+ if (typeof plugin.signActions !== 'function') {
182
+ throw new PerpsError(
183
+ PerpsErrorCode.SDKError,
184
+ `Provider '${provider}' does not implement signActions for ` +
185
+ `signingMethod '${descriptor.signingMethod}'.`
186
+ )
187
+ }
188
+ return plugin.signActions(
189
+ descriptor.signingMethod,
190
+ actions,
191
+ address,
192
+ this.buildSignActionsContext(descriptor)
193
+ )
194
+ }
195
+
196
+ /**
197
+ * Assemble the per-call context the provider plugin needs in order to sign:
198
+ * the end-user's wallet and the descriptor's declared `signers`. Core
199
+ * forwards `signers` as data so the plugin can pick WHO signs; it does not
200
+ * branch on them. Provider-owned session credentials (the Hyperliquid agent
201
+ * keypair, Lighter's API key) are resolved inside the provider's
202
+ * `signActions`, not threaded through here.
203
+ */
204
+ private buildSignActionsContext(
205
+ descriptor: ProviderAction
206
+ ): SignActionsContext {
207
+ const ctx: SignActionsContext = { signers: descriptor.signers }
208
+ if (this.sdkClient.userWallet !== undefined) {
209
+ ctx.userWallet = this.sdkClient.userWallet
210
+ }
211
+ return ctx
212
+ }
213
+
214
+ /**
215
+ * Sign a single provider setup action step by delegating to the provider
216
+ * plugin, which branches on the step's signing scheme internally. Lets
217
+ * consumers collect signed setup actions without embedding per-method
218
+ * signing logic.
219
+ *
220
+ * @throws {PerpsError} When the step's action is not declared by the provider.
221
+ * @public
222
+ */
223
+ async signProviderSetupAction(
224
+ provider: string,
225
+ address: Address,
226
+ step: ActionStep
227
+ ): Promise<SignedActionStep> {
228
+ const metadata = await this.getProviderMetadata(provider)
229
+ const descriptor = findActionDescriptor(metadata, step.action)
230
+ const [signed] = await this.delegateSignActions(
231
+ provider,
232
+ address,
233
+ descriptor,
234
+ [step]
235
+ )
236
+ return signed
237
+ }
238
+
239
+ /**
240
+ * Build (but do not sign or submit) the unsigned action steps for `action`,
241
+ * letting the provider plugin contribute any signer-bearing request fields.
242
+ *
243
+ * @public
244
+ */
245
+ async buildAction<T extends ActionType>(
246
+ action: T,
247
+ params: { provider: string; address: Address; params: ActionParamsMap[T] }
248
+ ): Promise<CreateActionResponse> {
249
+ const metadata = await this.getProviderMetadata(params.provider)
250
+ const descriptor = findActionDescriptor(metadata, action)
251
+ const { signerAddress, params: signerParams } =
252
+ await this.resolveActionRequest(
253
+ params.provider,
254
+ descriptor,
255
+ params.address
256
+ )
257
+ return createAction(this.sdkClient, {
258
+ provider: params.provider,
259
+ address: params.address,
260
+ signerAddress,
261
+ action,
262
+ params: {
263
+ ...params.params,
264
+ ...signerParams,
265
+ } as ActionParamsMap[T],
266
+ })
267
+ }
268
+
269
+ /**
270
+ * Fetch the user's account state from the backend and attach the
271
+ * SDK-projected `settings` array — one `AccountConfigSetting` per
272
+ * descriptor on `Provider.setup` + `Provider.options`. Callers read
273
+ * `result.settings` directly without re-deriving values from the typed
274
+ * `AccountConfig`.
275
+ *
276
+ * @throws {PerpsError} When the provider plugin is not registered, or the
277
+ * backend account fetch fails.
278
+ * @public
279
+ */
280
+ async getAccount(params: {
281
+ provider: string
282
+ address: Address
283
+ }): Promise<GetAccountResult> {
284
+ const plugin = this.requireProvider(params.provider)
285
+ const [response, metadata] = await Promise.all([
286
+ fetchAccount(this.sdkClient, params),
287
+ this.getProviderMetadata(params.provider),
288
+ ])
289
+ const settings = plugin.projectConfig(
290
+ response.config,
291
+ metadata.setup,
292
+ metadata.options
293
+ )
294
+ return { ...response, settings }
295
+ }
296
+
297
+ /**
298
+ * Roll an already-fetched {@link AccountResponse} (plus its positions) up
299
+ * into an {@link AccountSummary}, delegating to the owning provider so the
300
+ * venue-specific collateral and margin semantics are applied correctly.
301
+ */
302
+ getPortfolioSummary(
303
+ account: AccountResponse,
304
+ positions: Position[]
305
+ ): AccountSummary {
306
+ return this.requireProvider(account.provider).getPortfolioSummary(
307
+ account,
308
+ positions
309
+ )
310
+ }
311
+
312
+ /**
313
+ * Thin existence check for a provider account at `address`. Returns
314
+ * `true` when `getAccount` resolves, `false` when the backend reports
315
+ * `PerpsErrorCode.AccountNotFound`, and re-throws on any other error
316
+ * (transport failures, validation errors, server errors).
317
+ *
318
+ * @throws {PerpsError} On any backend error other than
319
+ * `PerpsErrorCode.AccountNotFound`.
320
+ * @public
321
+ */
322
+ async accountExists(provider: string, address: Address): Promise<boolean> {
323
+ try {
324
+ await fetchAccount(this.sdkClient, { provider, address })
325
+ return true
326
+ } catch (err) {
327
+ if (
328
+ err instanceof PerpsError &&
329
+ err.code === PerpsErrorCode.AccountNotFound
330
+ ) {
331
+ return false
332
+ }
333
+ throw err
334
+ }
335
+ }
336
+
337
+ /**
338
+ * Return the unsatisfied entries on `Provider.setup` for this account as a
339
+ * flat, self-describing list. Trading is gated on `isReady === true`.
340
+ *
341
+ * `Provider.options` descriptors are NEVER returned here — options are
342
+ * post-setup tunables and never gate trading. Option state is surfaced
343
+ * separately via `getAccount().settings`.
344
+ *
345
+ * @public
346
+ */
347
+ async checkSetup(params: GetSetupParams): Promise<ProviderSetup> {
348
+ const { provider, address } = params
349
+
350
+ // The backend filters already-satisfied setup actions and returns typed
351
+ // data for those still outstanding; each plugin contributes its own
352
+ // signer-bearing request fields.
353
+ const { actions } = await this.buildProviderSetup({ provider, address })
354
+
355
+ return {
356
+ setup: actions,
357
+ isReady: actions.length === 0,
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Build the unsigned setup `ActionStep`s still outstanding for an account,
363
+ * ordered by descriptor `sequence`. The backend filters already-satisfied
364
+ * setup; each plugin contributes its own signer-bearing request fields and
365
+ * any local-state params (e.g. Lighter's known pubkey).
366
+ *
367
+ * @public
368
+ */
369
+ async buildProviderSetup(
370
+ params: BuildProviderSetupParams
371
+ ): Promise<CreateActionResponse> {
372
+ const { provider, address } = params
373
+
374
+ const metadata = await this.getProviderMetadata(provider)
375
+ const orderedSetup = [...metadata.setup].sort(
376
+ (a, b) =>
377
+ (a.sequence ?? Number.MAX_SAFE_INTEGER) -
378
+ (b.sequence ?? Number.MAX_SAFE_INTEGER)
379
+ )
380
+
381
+ const plugin = this.sdkClient.getProvider(provider)
382
+ const allActions: ActionStep[] = []
383
+ for (const descriptor of orderedSetup) {
384
+ const action = descriptor.type
385
+ const { signerAddress, params: signerParams } =
386
+ await this.resolveActionRequest(provider, descriptor, address)
387
+ const localParams = plugin?.resolveSetupParams
388
+ ? await plugin.resolveSetupParams(action, address)
389
+ : {}
390
+ const { actions } = await createAction(this.sdkClient, {
391
+ provider,
392
+ address,
393
+ signerAddress,
394
+ action,
395
+ params: {
396
+ ...signerParams,
397
+ ...localParams,
398
+ } as Record<string, never>,
399
+ })
400
+ allActions.push(...actions)
401
+ }
402
+
403
+ return { actions: allActions }
404
+ }
405
+
406
+ /**
407
+ * Submit the signed setup steps returned by `checkSetup` (and signed by the
408
+ * caller / `signProviderSetupAction`). Routes the batch on the first step's
409
+ * action and lets the plugin contribute that action's `signerAddress`.
410
+ * Throws on any per-step venue rejection.
411
+ *
412
+ * @public
413
+ */
414
+ async executeProviderSetup(
415
+ params: ExecuteProviderSetupParams
416
+ ): Promise<ExecuteProviderSetupResult> {
417
+ const { provider, address, setup, signedActions } = params
418
+
419
+ if (signedActions.length === 0) {
420
+ return { results: { results: [] } }
421
+ }
422
+
423
+ const action = setup[0]?.action ?? signedActions[0].action
424
+ const metadata = await this.getProviderMetadata(provider)
425
+ const descriptor = findActionDescriptor(metadata, action)
426
+ const { signerAddress } = await this.resolveActionRequest(
427
+ provider,
428
+ descriptor,
429
+ address
430
+ )
431
+
432
+ const results = await executeAction(this.sdkClient, {
433
+ provider,
434
+ address,
435
+ // The submitting account: the plugin-resolved signer (Hyperliquid's
436
+ // agent) when present, else the end-user's address.
437
+ signerAddress: signerAddress ?? address,
438
+ action,
439
+ actions: signedActions,
440
+ })
441
+
442
+ const failure = results.results.find((r) => !r.success)
443
+ if (failure) {
444
+ throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error)
445
+ }
446
+
447
+ return { results }
448
+ }
449
+
450
+ /**
451
+ * Sign and submit one pre-staged setup `ActionStep` end-to-end.
452
+ *
453
+ * The caller is expected to have already obtained the step from a prior
454
+ * {@link checkSetup} call (typically cached by the widget's react-query) —
455
+ * we do NOT refetch. This avoids the double `createAction` round-trip and
456
+ * keeps the nonce that was allocated at staging time committed all the way
457
+ * through submit. If the cached step has gone stale (Lighter's `/nextNonce`
458
+ * advanced underneath us), `executeProviderSetup` will surface a nonce
459
+ * conflict that the caller invalidates on, refetches `checkSetup`, and
460
+ * retries with a fresh step.
461
+ *
462
+ * @throws {PerpsError} When the step's action is not in the provider's
463
+ * `setup` descriptors.
464
+ * @public
465
+ */
466
+ async executeProviderSetupAction(params: {
467
+ provider: string
468
+ address: Address
469
+ step: ActionStep
470
+ }): Promise<void> {
471
+ const { provider, address, step } = params
472
+
473
+ const metadata = await this.getProviderMetadata(provider)
474
+ const descriptor = metadata.setup.find((d) => d.type === step.action)
475
+ if (!descriptor) {
476
+ throw new PerpsError(
477
+ PerpsErrorCode.SDKError,
478
+ `Action '${step.action}' is not in '${provider}'.setup`
479
+ )
480
+ }
481
+
482
+ const signed = await this.signProviderSetupAction(provider, address, step)
483
+ await this.executeProviderSetup({
484
+ provider,
485
+ address,
486
+ setup: [step],
487
+ signedActions: [signed],
488
+ })
489
+ }
490
+
491
+ /**
492
+ * Sign and submit a single provider-option change (a `Provider.options`
493
+ * tunable such as Lighter `ACCOUNT_TYPE` or Hyperliquid `ACCOUNT_MODE`)
494
+ * end-to-end, throwing on a venue rejection.
495
+ *
496
+ * Options are dispatched through the same {@link execute} pipeline as
497
+ * trades, but unlike a trade an option change is a single mandatory action:
498
+ * a per-action `success: false` (returned as a 200 OK) means the user's
499
+ * selection was rejected and must surface, not be silently dropped. This
500
+ * wrapper inspects the result and throws a {@link PerpsError} carrying the
501
+ * venue `error`, giving options the same throw contract that setup has via
502
+ * {@link executeProviderSetupAction}. The only structural difference is that
503
+ * an option carries `params` (the selected value) rather than a pre-staged
504
+ * step.
505
+ *
506
+ * `execute` itself is unchanged — it still returns results without throwing,
507
+ * which the trade hooks rely on for partial-fill handling.
508
+ *
509
+ * @throws {PerpsError} `PerpsErrorCode.ExchangeRejected` carrying the venue
510
+ * error when any returned result has `success: false`; also the errors
511
+ * `execute` itself can throw (unregistered provider, no signer, signing
512
+ * failure).
513
+ * @public
514
+ */
515
+ async executeProviderOption<T extends ActionType>(params: {
516
+ provider: string
517
+ address: Address
518
+ action: T
519
+ params: ActionParamsMap[T]
520
+ }): Promise<void> {
521
+ const { results } = await this.execute(params)
522
+ const failure = results.find((r) => !r.success)
523
+ if (failure) {
524
+ throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error)
525
+ }
526
+ }
527
+
528
+ /**
529
+ * Place a market or limit order. Convenience wrapper over {@link execute}
530
+ * with `ActionType.PLACE_ORDER`.
531
+ *
532
+ * @throws {PerpsError} When the provider is unregistered or the action
533
+ * cannot be signed/submitted.
534
+ * @example
535
+ * ```ts
536
+ * await client.placeOrder({
537
+ * provider: 'hyperliquid',
538
+ * address: '0xUser',
539
+ * market: { symbol: 'ETH' },
540
+ * side: 'buy',
541
+ * size: '0.1',
542
+ * })
543
+ * ```
544
+ * @public
545
+ */
546
+ async placeOrder(params: PlaceOrderParams): Promise<ExecuteActionResponse> {
547
+ return this.execute({ ...params, action: ActionType.PLACE_ORDER, params })
548
+ }
549
+
550
+ /**
551
+ * Place a trigger (take-profit / stop-loss) order. Convenience wrapper over
552
+ * {@link execute} with `ActionType.PLACE_TRIGGER_ORDER`.
553
+ *
554
+ * @throws {PerpsError} When the provider is unregistered or the action
555
+ * cannot be signed/submitted.
556
+ * @public
557
+ */
558
+ async placeTriggerOrder(
559
+ params: PlaceTriggerOrderParams
560
+ ): Promise<ExecuteActionResponse> {
561
+ return this.execute({
562
+ ...params,
563
+ action: ActionType.PLACE_TRIGGER_ORDER,
564
+ params,
565
+ })
566
+ }
567
+
568
+ /**
569
+ * Cancel one or more open orders. Convenience wrapper over {@link execute}
570
+ * with `ActionType.CANCEL_ORDER`.
571
+ *
572
+ * @throws {PerpsError} When the provider is unregistered or the action
573
+ * cannot be signed/submitted.
574
+ * @public
575
+ */
576
+ async cancelOrders(
577
+ params: CancelOrdersParams
578
+ ): Promise<ExecuteActionResponse> {
579
+ return this.execute({ ...params, action: ActionType.CANCEL_ORDER, params })
580
+ }
581
+
582
+ /**
583
+ * Modify one or more open orders. Convenience wrapper over {@link execute}
584
+ * with `ActionType.MODIFY_ORDER`.
585
+ *
586
+ * @throws {PerpsError} When the provider is unregistered or the action
587
+ * cannot be signed/submitted.
588
+ * @public
589
+ */
590
+ async modifyOrders(
591
+ params: ModifyOrdersParams
592
+ ): Promise<ExecuteActionResponse> {
593
+ return this.execute({ ...params, action: ActionType.MODIFY_ORDER, params })
594
+ }
595
+
596
+ /**
597
+ * Add or remove isolated-position margin. Convenience wrapper over
598
+ * {@link execute} with `ActionType.UPDATE_POSITION_MARGIN`.
599
+ *
600
+ * @throws {PerpsError} When the provider is unregistered or the action
601
+ * cannot be signed/submitted.
602
+ * @public
603
+ */
604
+ async updatePositionMargin(params: {
605
+ provider: string
606
+ address: Address
607
+ market: MarketRef
608
+ action: 'add' | 'remove'
609
+ amount: string
610
+ }): Promise<ExecuteActionResponse> {
611
+ return this.execute({
612
+ ...params,
613
+ action: ActionType.UPDATE_POSITION_MARGIN,
614
+ params,
615
+ })
616
+ }
617
+
618
+ /**
619
+ * Withdraw funds from the provider account. Convenience wrapper over
620
+ * {@link execute} with `ActionType.WITHDRAWAL`.
621
+ *
622
+ * @throws {PerpsError} When the provider is unregistered or the action
623
+ * cannot be signed/submitted.
624
+ * @public
625
+ */
626
+ async withdraw(params: WithdrawParams): Promise<ExecuteActionResponse> {
627
+ return this.execute({
628
+ provider: params.provider,
629
+ address: params.address,
630
+ action: ActionType.WITHDRAWAL,
631
+ params: params.withdrawal,
632
+ })
633
+ }
634
+
635
+ /**
636
+ * Execute any action through the SDK's signing pipeline: fetch the unsigned
637
+ * steps, delegate signing to the provider plugin (which branches on the
638
+ * descriptor's scheme and signer internally), and submit. Core stays
639
+ * signer-agnostic — the plugin owns WHO signs and HOW.
640
+ *
641
+ * @throws {PerpsError} When the action is not declared by the provider,
642
+ * the plugin cannot sign it, or submission fails.
643
+ * @public
644
+ */
645
+ async execute<T extends ActionType>(params: {
646
+ provider: string
647
+ address: Address
648
+ action: T
649
+ params: ActionParamsMap[T]
650
+ }): Promise<ExecuteActionResponse> {
651
+ const { provider, address, action } = params
652
+ const metadata = await this.getProviderMetadata(provider)
653
+ const descriptor = findActionDescriptor(metadata, action)
654
+
655
+ const { signerAddress, params: signerParams } =
656
+ await this.resolveActionRequest(provider, descriptor, address)
657
+
658
+ const { actions } = await createAction(this.sdkClient, {
659
+ provider,
660
+ address,
661
+ signerAddress,
662
+ action,
663
+ params: {
664
+ ...params.params,
665
+ ...signerParams,
666
+ } as ActionParamsMap[T],
667
+ })
668
+
669
+ const signedActions = await this.delegateSignActions(
670
+ provider,
671
+ address,
672
+ descriptor,
673
+ actions
674
+ )
675
+
676
+ return executeAction(this.sdkClient, {
677
+ provider,
678
+ address,
679
+ // The submitting account: the plugin-resolved signer (Hyperliquid's
680
+ // agent) when present, else the end-user's address.
681
+ signerAddress: signerAddress ?? address,
682
+ action,
683
+ actions: signedActions,
684
+ })
685
+ }
686
+ }
@@ -0,0 +1,24 @@
1
+ import type {
2
+ PerpsProvider,
3
+ PerpsProviderPlugin,
4
+ PerpsSDKClient,
5
+ } from '../types/provider.js'
6
+
7
+ /**
8
+ * Inject `client` into a {@link PerpsProviderPlugin} once via its
9
+ * {@link PerpsProviderPlugin.bind} hook, returning the runtime
10
+ * {@link PerpsProvider} — the plugin with its one-shot `bind` member dropped so
11
+ * consumers cannot re-bind a live provider. The read methods are already
12
+ * clientless (`getX(params, options?)`); they resolve their runtime deps from
13
+ * the context the plugin captured during `bind`.
14
+ *
15
+ * @internal
16
+ */
17
+ export function bindProvider(
18
+ plugin: PerpsProviderPlugin,
19
+ client: PerpsSDKClient
20
+ ): PerpsProvider {
21
+ plugin.bind(client)
22
+ const { bind: _bind, ...provider } = plugin
23
+ return provider
24
+ }