@lifi/perps-sdk 0.1.1-alpha.9 → 1.0.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 (959) hide show
  1. package/README.md +157 -20
  2. package/dist/cjs/client/PerpsClient.d.ts +57 -24
  3. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  4. package/dist/cjs/client/PerpsClient.js +218 -208
  5. package/dist/cjs/client/PerpsClient.js.map +1 -1
  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 +7 -25
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  12. package/dist/cjs/client/createPerpsClient.js +28 -8
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  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 +2 -3
  19. package/dist/cjs/errors/PerpsError.d.ts.map +1 -1
  20. package/dist/cjs/errors/PerpsError.js +3 -15
  21. package/dist/cjs/errors/PerpsError.js.map +1 -1
  22. package/dist/cjs/errors/constants.d.ts +2 -12
  23. package/dist/cjs/errors/constants.d.ts.map +1 -1
  24. package/dist/cjs/errors/constants.js +3 -14
  25. package/dist/cjs/errors/constants.js.map +1 -1
  26. package/dist/cjs/index.d.ts +58 -34
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +122 -45
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/registry/assetRegistry.d.ts +11 -0
  31. package/dist/cjs/registry/assetRegistry.d.ts.map +1 -0
  32. package/dist/cjs/registry/assetRegistry.js +39 -0
  33. package/dist/cjs/registry/assetRegistry.js.map +1 -0
  34. package/dist/cjs/registry/marketRegistry.d.ts +13 -0
  35. package/dist/cjs/registry/marketRegistry.d.ts.map +1 -0
  36. package/dist/cjs/registry/marketRegistry.js +58 -0
  37. package/dist/cjs/registry/marketRegistry.js.map +1 -0
  38. package/dist/cjs/registry/referenceDataRegistry.d.ts +20 -0
  39. package/dist/cjs/registry/referenceDataRegistry.d.ts.map +1 -0
  40. package/dist/cjs/registry/referenceDataRegistry.js +59 -0
  41. package/dist/cjs/registry/referenceDataRegistry.js.map +1 -0
  42. package/dist/cjs/services/createAction.d.ts +13 -0
  43. package/dist/cjs/services/createAction.d.ts.map +1 -0
  44. package/dist/cjs/services/createAction.js +17 -0
  45. package/dist/cjs/services/createAction.js.map +1 -0
  46. package/dist/cjs/services/executeAction.d.ts +13 -0
  47. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  48. package/dist/cjs/services/{submitAuthorization.js → executeAction.js} +8 -6
  49. package/dist/cjs/services/executeAction.js.map +1 -0
  50. package/dist/cjs/services/getAccount.d.ts +5 -3
  51. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  52. package/dist/cjs/services/getAccount.js +2 -6
  53. package/dist/cjs/services/getAccount.js.map +1 -1
  54. package/dist/cjs/services/getActivity.d.ts +15 -0
  55. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  56. package/dist/cjs/services/getActivity.js +15 -0
  57. package/dist/cjs/services/getActivity.js.map +1 -0
  58. package/dist/cjs/services/getAssets.d.ts +8 -0
  59. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  60. package/dist/cjs/services/getAssets.js +11 -0
  61. package/dist/cjs/services/getAssets.js.map +1 -0
  62. package/dist/cjs/services/getFills.d.ts +14 -0
  63. package/dist/cjs/services/getFills.d.ts.map +1 -0
  64. package/dist/cjs/services/getFills.js +14 -0
  65. package/dist/cjs/services/getFills.js.map +1 -0
  66. package/dist/cjs/services/getMarket.d.ts +4 -3
  67. package/dist/cjs/services/getMarket.d.ts.map +1 -1
  68. package/dist/cjs/services/getMarket.js +6 -4
  69. package/dist/cjs/services/getMarket.js.map +1 -1
  70. package/dist/cjs/services/getMarkets.d.ts +4 -2
  71. package/dist/cjs/services/getMarkets.d.ts.map +1 -1
  72. package/dist/cjs/services/getMarkets.js +5 -2
  73. package/dist/cjs/services/getMarkets.js.map +1 -1
  74. package/dist/cjs/services/getMeta.d.ts +5 -0
  75. package/dist/cjs/services/getMeta.d.ts.map +1 -0
  76. package/dist/cjs/services/getMeta.js +8 -0
  77. package/dist/cjs/services/getMeta.js.map +1 -0
  78. package/dist/cjs/services/getOhlcv.d.ts +4 -3
  79. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  80. package/dist/cjs/services/getOhlcv.js +4 -3
  81. package/dist/cjs/services/getOhlcv.js.map +1 -1
  82. package/dist/cjs/services/getOrder.d.ts +5 -3
  83. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  84. package/dist/cjs/services/getOrder.js +2 -6
  85. package/dist/cjs/services/getOrder.js.map +1 -1
  86. package/dist/cjs/services/getOrderbook.d.ts +4 -3
  87. package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
  88. package/dist/cjs/services/getOrderbook.js +4 -3
  89. package/dist/cjs/services/getOrderbook.js.map +1 -1
  90. package/dist/cjs/services/getOrders.d.ts +13 -0
  91. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  92. package/dist/cjs/services/getOrders.js +13 -0
  93. package/dist/cjs/services/getOrders.js.map +1 -0
  94. package/dist/cjs/services/getPositions.d.ts +13 -0
  95. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  96. package/dist/cjs/services/getPositions.js +13 -0
  97. package/dist/cjs/services/getPositions.js.map +1 -0
  98. package/dist/cjs/services/getPrices.d.ts +4 -3
  99. package/dist/cjs/services/getPrices.d.ts.map +1 -1
  100. package/dist/cjs/services/getPrices.js +3 -3
  101. package/dist/cjs/services/getPrices.js.map +1 -1
  102. package/dist/cjs/services/getProviders.d.ts +5 -0
  103. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  104. package/dist/cjs/services/getProviders.js +8 -0
  105. package/dist/cjs/services/getProviders.js.map +1 -0
  106. package/dist/cjs/services/getQuote.d.ts +12 -0
  107. package/dist/cjs/services/getQuote.d.ts.map +1 -0
  108. package/dist/cjs/services/getQuote.js +13 -0
  109. package/dist/cjs/services/getQuote.js.map +1 -0
  110. package/dist/cjs/services/getTermsAcceptance.d.ts +6 -0
  111. package/dist/cjs/services/getTermsAcceptance.d.ts.map +1 -0
  112. package/dist/cjs/services/getTermsAcceptance.js +9 -0
  113. package/dist/cjs/services/getTermsAcceptance.js.map +1 -0
  114. package/dist/cjs/services/resolveQuote.d.ts +7 -0
  115. package/dist/cjs/services/resolveQuote.d.ts.map +1 -0
  116. package/dist/cjs/services/resolveQuote.js +50 -0
  117. package/dist/cjs/services/resolveQuote.js.map +1 -0
  118. package/dist/cjs/services/resolveSubscribeQuote.d.ts +6 -0
  119. package/dist/cjs/services/resolveSubscribeQuote.d.ts.map +1 -0
  120. package/dist/cjs/services/resolveSubscribeQuote.js +65 -0
  121. package/dist/cjs/services/resolveSubscribeQuote.js.map +1 -0
  122. package/dist/cjs/storage/parseStoredRecord.d.ts +4 -0
  123. package/dist/cjs/storage/parseStoredRecord.d.ts.map +1 -0
  124. package/dist/cjs/storage/parseStoredRecord.js +26 -0
  125. package/dist/cjs/storage/parseStoredRecord.js.map +1 -0
  126. package/dist/cjs/storage/storage.d.ts.map +1 -0
  127. package/dist/cjs/storage/storage.js.map +1 -0
  128. package/dist/cjs/{agent → storage}/types.d.ts +0 -5
  129. package/dist/cjs/storage/types.d.ts.map +1 -0
  130. package/dist/cjs/{agent → storage}/types.js.map +1 -1
  131. package/dist/cjs/transport/fetchWithRetry.d.ts +8 -0
  132. package/dist/cjs/transport/fetchWithRetry.d.ts.map +1 -0
  133. package/dist/cjs/transport/fetchWithRetry.js +81 -0
  134. package/dist/cjs/transport/fetchWithRetry.js.map +1 -0
  135. package/dist/cjs/{utils → transport}/request.d.ts +3 -2
  136. package/dist/cjs/transport/request.d.ts.map +1 -0
  137. package/dist/cjs/transport/request.js +75 -0
  138. package/dist/cjs/transport/request.js.map +1 -0
  139. package/dist/cjs/transport/retryPolicy.d.ts +37 -0
  140. package/dist/cjs/transport/retryPolicy.d.ts.map +1 -0
  141. package/dist/cjs/transport/retryPolicy.js +79 -0
  142. package/dist/cjs/transport/retryPolicy.js.map +1 -0
  143. package/dist/cjs/types/api.d.ts +85 -0
  144. package/dist/cjs/types/api.d.ts.map +1 -0
  145. package/dist/cjs/{dex/types.js → types/api.js} +1 -1
  146. package/dist/cjs/types/api.js.map +1 -0
  147. package/dist/cjs/types/config.d.ts +26 -0
  148. package/dist/cjs/types/config.d.ts.map +1 -0
  149. package/dist/cjs/{realtime/hyperliquid/types.js → types/config.js} +1 -1
  150. package/dist/cjs/types/config.js.map +1 -0
  151. package/dist/cjs/types/provider.d.ts +84 -0
  152. package/dist/cjs/types/provider.d.ts.map +1 -0
  153. package/dist/cjs/types/provider.js +3 -0
  154. package/dist/cjs/types/provider.js.map +1 -0
  155. package/dist/cjs/utils/accountSummary.d.ts +3 -0
  156. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  157. package/dist/cjs/utils/accountSummary.js +25 -0
  158. package/dist/cjs/utils/accountSummary.js.map +1 -0
  159. package/dist/cjs/utils/assertNever.d.ts +2 -0
  160. package/dist/cjs/utils/assertNever.d.ts.map +1 -0
  161. package/dist/cjs/utils/assertNever.js +7 -0
  162. package/dist/cjs/utils/assertNever.js.map +1 -0
  163. package/dist/cjs/utils/calculations.d.ts +52 -0
  164. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  165. package/dist/cjs/utils/calculations.js +148 -0
  166. package/dist/cjs/utils/calculations.js.map +1 -0
  167. package/dist/cjs/utils/depositChain.d.ts +6 -0
  168. package/dist/cjs/utils/depositChain.d.ts.map +1 -0
  169. package/dist/cjs/utils/depositChain.js +13 -0
  170. package/dist/cjs/utils/depositChain.js.map +1 -0
  171. package/dist/cjs/utils/explorer.d.ts +9 -0
  172. package/dist/cjs/utils/explorer.d.ts.map +1 -0
  173. package/dist/cjs/utils/explorer.js +23 -0
  174. package/dist/cjs/utils/explorer.js.map +1 -0
  175. package/dist/cjs/utils/fillClassification.d.ts +3 -0
  176. package/dist/cjs/utils/fillClassification.d.ts.map +1 -0
  177. package/dist/cjs/utils/fillClassification.js +37 -0
  178. package/dist/cjs/utils/fillClassification.js.map +1 -0
  179. package/dist/cjs/utils/format.d.ts +13 -0
  180. package/dist/cjs/utils/format.d.ts.map +1 -0
  181. package/dist/cjs/utils/format.js +117 -0
  182. package/dist/cjs/utils/format.js.map +1 -0
  183. package/dist/cjs/utils/orderClassification.d.ts +10 -0
  184. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  185. package/dist/cjs/utils/orderClassification.js +49 -0
  186. package/dist/cjs/utils/orderClassification.js.map +1 -0
  187. package/dist/cjs/utils/orderMath.d.ts +6 -0
  188. package/dist/cjs/utils/orderMath.d.ts.map +1 -0
  189. package/dist/cjs/utils/orderMath.js +71 -0
  190. package/dist/cjs/utils/orderMath.js.map +1 -0
  191. package/dist/cjs/utils/parse.d.ts +2 -0
  192. package/dist/cjs/utils/parse.d.ts.map +1 -0
  193. package/dist/cjs/utils/parse.js +14 -0
  194. package/dist/cjs/utils/parse.js.map +1 -0
  195. package/dist/cjs/utils/positionMath.d.ts +32 -0
  196. package/dist/cjs/utils/positionMath.d.ts.map +1 -0
  197. package/dist/cjs/utils/positionMath.js +52 -0
  198. package/dist/cjs/utils/positionMath.js.map +1 -0
  199. package/dist/cjs/utils/signTypedData.d.ts +3 -1
  200. package/dist/cjs/utils/signTypedData.d.ts.map +1 -1
  201. package/dist/cjs/utils/signTypedData.js +11 -3
  202. package/dist/cjs/utils/signTypedData.js.map +1 -1
  203. package/dist/cjs/utils/sleep.d.ts.map +1 -1
  204. package/dist/cjs/utils/sleep.js.map +1 -1
  205. package/dist/cjs/utils/units.d.ts +3 -0
  206. package/dist/cjs/utils/units.d.ts.map +1 -0
  207. package/dist/cjs/utils/units.js +18 -0
  208. package/dist/cjs/utils/units.js.map +1 -0
  209. package/dist/cjs/utils/validation.d.ts +2 -0
  210. package/dist/cjs/utils/validation.d.ts.map +1 -0
  211. package/dist/cjs/utils/validation.js +16 -0
  212. package/dist/cjs/utils/validation.js.map +1 -0
  213. package/dist/cjs/version.d.ts +1 -1
  214. package/dist/cjs/version.d.ts.map +1 -1
  215. package/dist/cjs/version.js +1 -1
  216. package/dist/cjs/version.js.map +1 -1
  217. package/dist/cjs/websocket/PerpsWsClient.d.ts +27 -0
  218. package/dist/cjs/websocket/PerpsWsClient.d.ts.map +1 -0
  219. package/dist/cjs/websocket/PerpsWsClient.js +84 -0
  220. package/dist/cjs/websocket/PerpsWsClient.js.map +1 -0
  221. package/dist/{esm/realtime → cjs/websocket}/ReconnectingWebSocket.d.ts +23 -7
  222. package/dist/cjs/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  223. package/dist/cjs/websocket/ReconnectingWebSocket.js +213 -0
  224. package/dist/cjs/websocket/ReconnectingWebSocket.js.map +1 -0
  225. package/dist/cjs/websocket/WsProviderBase.d.ts +31 -0
  226. package/dist/cjs/websocket/WsProviderBase.d.ts.map +1 -0
  227. package/dist/cjs/websocket/WsProviderBase.js +197 -0
  228. package/dist/cjs/websocket/WsProviderBase.js.map +1 -0
  229. package/dist/cjs/websocket/cachePromise.d.ts +2 -0
  230. package/dist/cjs/websocket/cachePromise.d.ts.map +1 -0
  231. package/dist/cjs/websocket/cachePromise.js +18 -0
  232. package/dist/cjs/websocket/cachePromise.js.map +1 -0
  233. package/dist/cjs/websocket/types.d.ts +15 -0
  234. package/dist/cjs/websocket/types.d.ts.map +1 -0
  235. package/dist/cjs/{dex → websocket}/types.js.map +1 -1
  236. package/dist/cjs/websocket/wsLog.d.ts +10 -0
  237. package/dist/cjs/websocket/wsLog.d.ts.map +1 -0
  238. package/dist/cjs/websocket/wsLog.js +31 -0
  239. package/dist/cjs/websocket/wsLog.js.map +1 -0
  240. package/dist/esm/client/PerpsClient.d.ts +223 -136
  241. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  242. package/dist/esm/client/PerpsClient.js +399 -339
  243. package/dist/esm/client/PerpsClient.js.map +1 -1
  244. package/dist/esm/client/bindProvider.d.ts +13 -0
  245. package/dist/esm/client/bindProvider.d.ts.map +1 -0
  246. package/dist/esm/client/bindProvider.js +16 -0
  247. package/dist/esm/client/bindProvider.js.map +1 -0
  248. package/dist/esm/client/createPerpsClient.d.ts +24 -64
  249. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  250. package/dist/esm/client/createPerpsClient.js +45 -17
  251. package/dist/esm/client/createPerpsClient.js.map +1 -1
  252. package/dist/esm/client/requireProvider.d.ts +12 -0
  253. package/dist/esm/client/requireProvider.d.ts.map +1 -0
  254. package/dist/esm/client/requireProvider.js +22 -0
  255. package/dist/esm/client/requireProvider.js.map +1 -0
  256. package/dist/esm/errors/PerpsError.d.ts +10 -3
  257. package/dist/esm/errors/PerpsError.d.ts.map +1 -1
  258. package/dist/esm/errors/PerpsError.js +11 -15
  259. package/dist/esm/errors/PerpsError.js.map +1 -1
  260. package/dist/esm/errors/constants.d.ts +8 -12
  261. package/dist/esm/errors/constants.d.ts.map +1 -1
  262. package/dist/esm/errors/constants.js +8 -13
  263. package/dist/esm/errors/constants.js.map +1 -1
  264. package/dist/esm/index.d.ts +66 -34
  265. package/dist/esm/index.d.ts.map +1 -1
  266. package/dist/esm/index.js +49 -29
  267. package/dist/esm/index.js.map +1 -1
  268. package/dist/esm/registry/assetRegistry.d.ts +25 -0
  269. package/dist/esm/registry/assetRegistry.d.ts.map +1 -0
  270. package/dist/esm/registry/assetRegistry.js +48 -0
  271. package/dist/esm/registry/assetRegistry.js.map +1 -0
  272. package/dist/esm/registry/marketRegistry.d.ts +42 -0
  273. package/dist/esm/registry/marketRegistry.d.ts.map +1 -0
  274. package/dist/esm/registry/marketRegistry.js +81 -0
  275. package/dist/esm/registry/marketRegistry.js.map +1 -0
  276. package/dist/esm/registry/referenceDataRegistry.d.ts +44 -0
  277. package/dist/esm/registry/referenceDataRegistry.d.ts.map +1 -0
  278. package/dist/esm/registry/referenceDataRegistry.js +79 -0
  279. package/dist/esm/registry/referenceDataRegistry.js.map +1 -0
  280. package/dist/esm/services/createAction.d.ts +26 -0
  281. package/dist/esm/services/createAction.d.ts.map +1 -0
  282. package/dist/esm/services/createAction.js +22 -0
  283. package/dist/esm/services/createAction.js.map +1 -0
  284. package/dist/esm/services/executeAction.d.ts +26 -0
  285. package/dist/esm/services/executeAction.d.ts.map +1 -0
  286. package/dist/esm/services/executeAction.js +26 -0
  287. package/dist/esm/services/executeAction.js.map +1 -0
  288. package/dist/esm/services/getAccount.d.ts +21 -18
  289. package/dist/esm/services/getAccount.d.ts.map +1 -1
  290. package/dist/esm/services/getAccount.js +13 -19
  291. package/dist/esm/services/getAccount.js.map +1 -1
  292. package/dist/esm/services/getActivity.d.ts +39 -0
  293. package/dist/esm/services/getActivity.d.ts.map +1 -0
  294. package/dist/esm/services/getActivity.js +29 -0
  295. package/dist/esm/services/getActivity.js.map +1 -0
  296. package/dist/esm/services/getAssets.d.ts +27 -0
  297. package/dist/esm/services/getAssets.d.ts.map +1 -0
  298. package/dist/esm/services/getAssets.js +22 -0
  299. package/dist/esm/services/getAssets.js.map +1 -0
  300. package/dist/esm/services/getFills.d.ts +38 -0
  301. package/dist/esm/services/getFills.d.ts.map +1 -0
  302. package/dist/esm/services/getFills.js +28 -0
  303. package/dist/esm/services/getFills.js.map +1 -0
  304. package/dist/esm/services/getMarket.d.ts +22 -15
  305. package/dist/esm/services/getMarket.d.ts.map +1 -1
  306. package/dist/esm/services/getMarket.js +14 -14
  307. package/dist/esm/services/getMarket.js.map +1 -1
  308. package/dist/esm/services/getMarkets.d.ts +16 -13
  309. package/dist/esm/services/getMarkets.d.ts.map +1 -1
  310. package/dist/esm/services/getMarkets.js +11 -12
  311. package/dist/esm/services/getMarkets.js.map +1 -1
  312. package/dist/esm/services/getMeta.d.ts +19 -0
  313. package/dist/esm/services/getMeta.d.ts.map +1 -0
  314. package/dist/esm/services/getMeta.js +19 -0
  315. package/dist/esm/services/getMeta.js.map +1 -0
  316. package/dist/esm/services/getOhlcv.d.ts +17 -21
  317. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  318. package/dist/esm/services/getOhlcv.js +9 -15
  319. package/dist/esm/services/getOhlcv.js.map +1 -1
  320. package/dist/esm/services/getOrder.d.ts +18 -18
  321. package/dist/esm/services/getOrder.d.ts.map +1 -1
  322. package/dist/esm/services/getOrder.js +10 -18
  323. package/dist/esm/services/getOrder.js.map +1 -1
  324. package/dist/esm/services/getOrderbook.d.ts +14 -24
  325. package/dist/esm/services/getOrderbook.d.ts.map +1 -1
  326. package/dist/esm/services/getOrderbook.js +8 -22
  327. package/dist/esm/services/getOrderbook.js.map +1 -1
  328. package/dist/esm/services/getOrders.d.ts +35 -0
  329. package/dist/esm/services/getOrders.d.ts.map +1 -0
  330. package/dist/esm/services/getOrders.js +26 -0
  331. package/dist/esm/services/getOrders.js.map +1 -0
  332. package/dist/esm/services/getPositions.d.ts +35 -0
  333. package/dist/esm/services/getPositions.d.ts.map +1 -0
  334. package/dist/esm/services/getPositions.js +26 -0
  335. package/dist/esm/services/getPositions.js.map +1 -0
  336. package/dist/esm/services/getPrices.d.ts +13 -25
  337. package/dist/esm/services/getPrices.d.ts.map +1 -1
  338. package/dist/esm/services/getPrices.js +6 -23
  339. package/dist/esm/services/getPrices.js.map +1 -1
  340. package/dist/esm/services/getProviders.d.ts +20 -0
  341. package/dist/esm/services/getProviders.d.ts.map +1 -0
  342. package/dist/esm/services/getProviders.js +20 -0
  343. package/dist/esm/services/getProviders.js.map +1 -0
  344. package/dist/esm/services/getQuote.d.ts +42 -0
  345. package/dist/esm/services/getQuote.d.ts.map +1 -0
  346. package/dist/esm/services/getQuote.js +33 -0
  347. package/dist/esm/services/getQuote.js.map +1 -0
  348. package/dist/esm/services/getTermsAcceptance.d.ts +24 -0
  349. package/dist/esm/services/getTermsAcceptance.d.ts.map +1 -0
  350. package/dist/esm/services/getTermsAcceptance.js +24 -0
  351. package/dist/esm/services/getTermsAcceptance.js.map +1 -0
  352. package/dist/esm/services/resolveQuote.d.ts +36 -0
  353. package/dist/esm/services/resolveQuote.d.ts.map +1 -0
  354. package/dist/esm/services/resolveQuote.js +74 -0
  355. package/dist/esm/services/resolveQuote.js.map +1 -0
  356. package/dist/esm/services/resolveSubscribeQuote.d.ts +31 -0
  357. package/dist/esm/services/resolveSubscribeQuote.d.ts.map +1 -0
  358. package/dist/esm/services/resolveSubscribeQuote.js +86 -0
  359. package/dist/esm/services/resolveSubscribeQuote.js.map +1 -0
  360. package/dist/esm/storage/parseStoredRecord.d.ts +29 -0
  361. package/dist/esm/storage/parseStoredRecord.d.ts.map +1 -0
  362. package/dist/esm/storage/parseStoredRecord.js +47 -0
  363. package/dist/esm/storage/parseStoredRecord.js.map +1 -0
  364. package/dist/{types/agent → esm/storage}/storage.d.ts +6 -3
  365. package/dist/esm/storage/storage.d.ts.map +1 -0
  366. package/dist/esm/{agent → storage}/storage.js +6 -4
  367. package/dist/esm/storage/storage.js.map +1 -0
  368. package/dist/esm/storage/types.d.ts +14 -0
  369. package/dist/esm/storage/types.d.ts.map +1 -0
  370. package/dist/{cjs/client → esm/storage}/types.js.map +1 -1
  371. package/dist/esm/transport/fetchWithRetry.d.ts +22 -0
  372. package/dist/esm/transport/fetchWithRetry.d.ts.map +1 -0
  373. package/dist/esm/transport/fetchWithRetry.js +87 -0
  374. package/dist/esm/transport/fetchWithRetry.js.map +1 -0
  375. package/dist/esm/transport/request.d.ts +25 -0
  376. package/dist/esm/transport/request.d.ts.map +1 -0
  377. package/dist/esm/transport/request.js +82 -0
  378. package/dist/esm/transport/request.js.map +1 -0
  379. package/dist/esm/transport/retryPolicy.d.ts +106 -0
  380. package/dist/esm/transport/retryPolicy.d.ts.map +1 -0
  381. package/dist/esm/transport/retryPolicy.js +99 -0
  382. package/dist/esm/transport/retryPolicy.js.map +1 -0
  383. package/dist/esm/types/api.d.ts +214 -0
  384. package/dist/esm/types/api.d.ts.map +1 -0
  385. package/dist/esm/types/api.js +2 -0
  386. package/dist/esm/types/api.js.map +1 -0
  387. package/dist/esm/types/config.d.ts +70 -0
  388. package/dist/esm/types/config.d.ts.map +1 -0
  389. package/dist/esm/types/config.js +2 -0
  390. package/dist/esm/types/config.js.map +1 -0
  391. package/dist/esm/types/provider.d.ts +330 -0
  392. package/dist/esm/types/provider.d.ts.map +1 -0
  393. package/dist/esm/types/provider.js +2 -0
  394. package/dist/esm/types/provider.js.map +1 -0
  395. package/dist/esm/utils/accountSummary.d.ts +13 -0
  396. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  397. package/dist/esm/utils/accountSummary.js +32 -0
  398. package/dist/esm/utils/accountSummary.js.map +1 -0
  399. package/dist/esm/utils/assertNever.d.ts +20 -0
  400. package/dist/esm/utils/assertNever.d.ts.map +1 -0
  401. package/dist/esm/utils/assertNever.js +22 -0
  402. package/dist/esm/utils/assertNever.js.map +1 -0
  403. package/dist/esm/utils/calculations.d.ts +225 -0
  404. package/dist/esm/utils/calculations.d.ts.map +1 -0
  405. package/dist/esm/utils/calculations.js +291 -0
  406. package/dist/esm/utils/calculations.js.map +1 -0
  407. package/dist/esm/utils/depositChain.d.ts +25 -0
  408. package/dist/esm/utils/depositChain.d.ts.map +1 -0
  409. package/dist/esm/utils/depositChain.js +23 -0
  410. package/dist/esm/utils/depositChain.js.map +1 -0
  411. package/dist/esm/utils/explorer.d.ts +33 -0
  412. package/dist/esm/utils/explorer.d.ts.map +1 -0
  413. package/dist/esm/utils/explorer.js +38 -0
  414. package/dist/esm/utils/explorer.js.map +1 -0
  415. package/dist/esm/utils/fillClassification.d.ts +13 -0
  416. package/dist/esm/utils/fillClassification.d.ts.map +1 -0
  417. package/dist/esm/utils/fillClassification.js +44 -0
  418. package/dist/esm/utils/fillClassification.js.map +1 -0
  419. package/dist/esm/utils/format.d.ts +66 -0
  420. package/dist/esm/utils/format.d.ts.map +1 -0
  421. package/dist/esm/utils/format.js +171 -0
  422. package/dist/esm/utils/format.js.map +1 -0
  423. package/dist/esm/utils/orderClassification.d.ts +47 -0
  424. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  425. package/dist/esm/utils/orderClassification.js +78 -0
  426. package/dist/esm/utils/orderClassification.js.map +1 -0
  427. package/dist/esm/utils/orderMath.d.ts +44 -0
  428. package/dist/esm/utils/orderMath.d.ts.map +1 -0
  429. package/dist/esm/utils/orderMath.js +103 -0
  430. package/dist/esm/utils/orderMath.js.map +1 -0
  431. package/dist/esm/utils/parse.d.ts +21 -0
  432. package/dist/esm/utils/parse.d.ts.map +1 -0
  433. package/dist/esm/utils/parse.js +30 -0
  434. package/dist/esm/utils/parse.js.map +1 -0
  435. package/dist/esm/utils/positionMath.d.ts +107 -0
  436. package/dist/esm/utils/positionMath.d.ts.map +1 -0
  437. package/dist/esm/utils/positionMath.js +119 -0
  438. package/dist/esm/utils/positionMath.js.map +1 -0
  439. package/dist/esm/utils/signTypedData.d.ts +13 -10
  440. package/dist/esm/utils/signTypedData.d.ts.map +1 -1
  441. package/dist/esm/utils/signTypedData.js +20 -13
  442. package/dist/esm/utils/signTypedData.js.map +1 -1
  443. package/dist/esm/utils/sleep.d.ts +5 -0
  444. package/dist/esm/utils/sleep.d.ts.map +1 -1
  445. package/dist/esm/utils/sleep.js +5 -0
  446. package/dist/esm/utils/sleep.js.map +1 -1
  447. package/dist/esm/utils/units.d.ts +27 -0
  448. package/dist/esm/utils/units.d.ts.map +1 -0
  449. package/dist/esm/utils/units.js +38 -0
  450. package/dist/esm/utils/units.js.map +1 -0
  451. package/dist/esm/utils/validation.d.ts +18 -0
  452. package/dist/esm/utils/validation.d.ts.map +1 -0
  453. package/dist/esm/utils/validation.js +29 -0
  454. package/dist/esm/utils/validation.js.map +1 -0
  455. package/dist/esm/version.d.ts +1 -1
  456. package/dist/esm/version.d.ts.map +1 -1
  457. package/dist/esm/version.js +1 -1
  458. package/dist/esm/version.js.map +1 -1
  459. package/dist/esm/websocket/PerpsWsClient.d.ts +100 -0
  460. package/dist/esm/websocket/PerpsWsClient.d.ts.map +1 -0
  461. package/dist/esm/websocket/PerpsWsClient.js +121 -0
  462. package/dist/esm/websocket/PerpsWsClient.js.map +1 -0
  463. package/dist/esm/websocket/ReconnectingWebSocket.d.ts +130 -0
  464. package/dist/esm/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  465. package/dist/esm/websocket/ReconnectingWebSocket.js +288 -0
  466. package/dist/esm/websocket/ReconnectingWebSocket.js.map +1 -0
  467. package/dist/esm/websocket/WsProviderBase.d.ts +89 -0
  468. package/dist/esm/websocket/WsProviderBase.d.ts.map +1 -0
  469. package/dist/esm/websocket/WsProviderBase.js +246 -0
  470. package/dist/esm/websocket/WsProviderBase.js.map +1 -0
  471. package/dist/esm/websocket/cachePromise.d.ts +14 -0
  472. package/dist/esm/websocket/cachePromise.d.ts.map +1 -0
  473. package/dist/esm/websocket/cachePromise.js +27 -0
  474. package/dist/esm/websocket/cachePromise.js.map +1 -0
  475. package/dist/esm/websocket/types.d.ts +60 -0
  476. package/dist/esm/websocket/types.d.ts.map +1 -0
  477. package/dist/{cjs/realtime → esm/websocket}/types.js.map +1 -1
  478. package/dist/esm/websocket/wsLog.d.ts +50 -0
  479. package/dist/esm/websocket/wsLog.d.ts.map +1 -0
  480. package/dist/esm/websocket/wsLog.js +68 -0
  481. package/dist/esm/websocket/wsLog.js.map +1 -0
  482. package/dist/types/client/PerpsClient.d.ts +223 -136
  483. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  484. package/dist/types/client/bindProvider.d.ts +13 -0
  485. package/dist/types/client/bindProvider.d.ts.map +1 -0
  486. package/dist/types/client/createPerpsClient.d.ts +24 -64
  487. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  488. package/dist/types/client/requireProvider.d.ts +12 -0
  489. package/dist/types/client/requireProvider.d.ts.map +1 -0
  490. package/dist/types/errors/PerpsError.d.ts +10 -3
  491. package/dist/types/errors/PerpsError.d.ts.map +1 -1
  492. package/dist/types/errors/constants.d.ts +8 -12
  493. package/dist/types/errors/constants.d.ts.map +1 -1
  494. package/dist/types/index.d.ts +66 -34
  495. package/dist/types/index.d.ts.map +1 -1
  496. package/dist/types/registry/assetRegistry.d.ts +25 -0
  497. package/dist/types/registry/assetRegistry.d.ts.map +1 -0
  498. package/dist/types/registry/marketRegistry.d.ts +42 -0
  499. package/dist/types/registry/marketRegistry.d.ts.map +1 -0
  500. package/dist/types/registry/referenceDataRegistry.d.ts +44 -0
  501. package/dist/types/registry/referenceDataRegistry.d.ts.map +1 -0
  502. package/dist/types/services/createAction.d.ts +26 -0
  503. package/dist/types/services/createAction.d.ts.map +1 -0
  504. package/dist/types/services/executeAction.d.ts +26 -0
  505. package/dist/types/services/executeAction.d.ts.map +1 -0
  506. package/dist/types/services/getAccount.d.ts +21 -18
  507. package/dist/types/services/getAccount.d.ts.map +1 -1
  508. package/dist/types/services/getActivity.d.ts +39 -0
  509. package/dist/types/services/getActivity.d.ts.map +1 -0
  510. package/dist/types/services/getAssets.d.ts +27 -0
  511. package/dist/types/services/getAssets.d.ts.map +1 -0
  512. package/dist/types/services/getFills.d.ts +38 -0
  513. package/dist/types/services/getFills.d.ts.map +1 -0
  514. package/dist/types/services/getMarket.d.ts +22 -15
  515. package/dist/types/services/getMarket.d.ts.map +1 -1
  516. package/dist/types/services/getMarkets.d.ts +16 -13
  517. package/dist/types/services/getMarkets.d.ts.map +1 -1
  518. package/dist/types/services/getMeta.d.ts +19 -0
  519. package/dist/types/services/getMeta.d.ts.map +1 -0
  520. package/dist/types/services/getOhlcv.d.ts +17 -21
  521. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  522. package/dist/types/services/getOrder.d.ts +18 -18
  523. package/dist/types/services/getOrder.d.ts.map +1 -1
  524. package/dist/types/services/getOrderbook.d.ts +14 -24
  525. package/dist/types/services/getOrderbook.d.ts.map +1 -1
  526. package/dist/types/services/getOrders.d.ts +35 -0
  527. package/dist/types/services/getOrders.d.ts.map +1 -0
  528. package/dist/types/services/getPositions.d.ts +35 -0
  529. package/dist/types/services/getPositions.d.ts.map +1 -0
  530. package/dist/types/services/getPrices.d.ts +13 -25
  531. package/dist/types/services/getPrices.d.ts.map +1 -1
  532. package/dist/types/services/getProviders.d.ts +20 -0
  533. package/dist/types/services/getProviders.d.ts.map +1 -0
  534. package/dist/types/services/getQuote.d.ts +42 -0
  535. package/dist/types/services/getQuote.d.ts.map +1 -0
  536. package/dist/types/services/getTermsAcceptance.d.ts +24 -0
  537. package/dist/types/services/getTermsAcceptance.d.ts.map +1 -0
  538. package/dist/types/services/resolveQuote.d.ts +36 -0
  539. package/dist/types/services/resolveQuote.d.ts.map +1 -0
  540. package/dist/types/services/resolveSubscribeQuote.d.ts +31 -0
  541. package/dist/types/services/resolveSubscribeQuote.d.ts.map +1 -0
  542. package/dist/types/storage/parseStoredRecord.d.ts +29 -0
  543. package/dist/types/storage/parseStoredRecord.d.ts.map +1 -0
  544. package/dist/{esm/agent → types/storage}/storage.d.ts +6 -3
  545. package/dist/types/storage/storage.d.ts.map +1 -0
  546. package/dist/types/storage/types.d.ts +14 -0
  547. package/dist/types/storage/types.d.ts.map +1 -0
  548. package/dist/types/transport/fetchWithRetry.d.ts +22 -0
  549. package/dist/types/transport/fetchWithRetry.d.ts.map +1 -0
  550. package/dist/types/transport/request.d.ts +25 -0
  551. package/dist/types/transport/request.d.ts.map +1 -0
  552. package/dist/types/transport/retryPolicy.d.ts +106 -0
  553. package/dist/types/transport/retryPolicy.d.ts.map +1 -0
  554. package/dist/types/types/api.d.ts +214 -0
  555. package/dist/types/types/api.d.ts.map +1 -0
  556. package/dist/types/types/config.d.ts +70 -0
  557. package/dist/types/types/config.d.ts.map +1 -0
  558. package/dist/types/types/provider.d.ts +330 -0
  559. package/dist/types/types/provider.d.ts.map +1 -0
  560. package/dist/types/utils/accountSummary.d.ts +13 -0
  561. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  562. package/dist/types/utils/assertNever.d.ts +20 -0
  563. package/dist/types/utils/assertNever.d.ts.map +1 -0
  564. package/dist/types/utils/calculations.d.ts +225 -0
  565. package/dist/types/utils/calculations.d.ts.map +1 -0
  566. package/dist/types/utils/depositChain.d.ts +25 -0
  567. package/dist/types/utils/depositChain.d.ts.map +1 -0
  568. package/dist/types/utils/explorer.d.ts +33 -0
  569. package/dist/types/utils/explorer.d.ts.map +1 -0
  570. package/dist/types/utils/fillClassification.d.ts +13 -0
  571. package/dist/types/utils/fillClassification.d.ts.map +1 -0
  572. package/dist/types/utils/format.d.ts +66 -0
  573. package/dist/types/utils/format.d.ts.map +1 -0
  574. package/dist/types/utils/orderClassification.d.ts +47 -0
  575. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  576. package/dist/types/utils/orderMath.d.ts +44 -0
  577. package/dist/types/utils/orderMath.d.ts.map +1 -0
  578. package/dist/types/utils/parse.d.ts +21 -0
  579. package/dist/types/utils/parse.d.ts.map +1 -0
  580. package/dist/types/utils/positionMath.d.ts +107 -0
  581. package/dist/types/utils/positionMath.d.ts.map +1 -0
  582. package/dist/types/utils/signTypedData.d.ts +13 -10
  583. package/dist/types/utils/signTypedData.d.ts.map +1 -1
  584. package/dist/types/utils/sleep.d.ts +5 -0
  585. package/dist/types/utils/sleep.d.ts.map +1 -1
  586. package/dist/types/utils/units.d.ts +27 -0
  587. package/dist/types/utils/units.d.ts.map +1 -0
  588. package/dist/types/utils/validation.d.ts +18 -0
  589. package/dist/types/utils/validation.d.ts.map +1 -0
  590. package/dist/types/version.d.ts +1 -1
  591. package/dist/types/version.d.ts.map +1 -1
  592. package/dist/types/websocket/PerpsWsClient.d.ts +100 -0
  593. package/dist/types/websocket/PerpsWsClient.d.ts.map +1 -0
  594. package/dist/types/websocket/ReconnectingWebSocket.d.ts +130 -0
  595. package/dist/types/websocket/ReconnectingWebSocket.d.ts.map +1 -0
  596. package/dist/types/websocket/WsProviderBase.d.ts +89 -0
  597. package/dist/types/websocket/WsProviderBase.d.ts.map +1 -0
  598. package/dist/types/websocket/cachePromise.d.ts +14 -0
  599. package/dist/types/websocket/cachePromise.d.ts.map +1 -0
  600. package/dist/types/websocket/types.d.ts +60 -0
  601. package/dist/types/websocket/types.d.ts.map +1 -0
  602. package/dist/types/websocket/wsLog.d.ts +50 -0
  603. package/dist/types/websocket/wsLog.d.ts.map +1 -0
  604. package/package.json +12 -50
  605. package/src/client/PerpsClient.ts +549 -435
  606. package/src/client/bindProvider.ts +24 -0
  607. package/src/client/createPerpsClient.ts +61 -80
  608. package/src/client/requireProvider.ts +29 -0
  609. package/src/errors/PerpsError.ts +11 -22
  610. package/src/errors/constants.ts +8 -13
  611. package/src/index.ts +189 -65
  612. package/src/registry/assetRegistry.ts +62 -0
  613. package/src/registry/marketRegistry.ts +100 -0
  614. package/src/registry/referenceDataRegistry.ts +95 -0
  615. package/src/services/createAction.ts +52 -0
  616. package/src/services/executeAction.ts +56 -0
  617. package/src/services/getAccount.ts +26 -27
  618. package/src/services/getActivity.ts +57 -0
  619. package/src/services/getAssets.ts +38 -0
  620. package/src/services/getFills.ts +55 -0
  621. package/src/services/getMarket.ts +34 -23
  622. package/src/services/getMarkets.ts +21 -18
  623. package/src/services/getMeta.ts +30 -0
  624. package/src/services/getOhlcv.ts +21 -27
  625. package/src/services/getOrder.ts +23 -27
  626. package/src/services/getOrderbook.ts +18 -30
  627. package/src/services/getOrders.ts +51 -0
  628. package/src/services/getPositions.ts +51 -0
  629. package/src/services/getPrices.ts +16 -31
  630. package/src/services/getProviders.ts +31 -0
  631. package/src/services/getQuote.ts +58 -0
  632. package/src/services/getTermsAcceptance.ts +32 -0
  633. package/src/services/resolveQuote.ts +122 -0
  634. package/src/services/resolveSubscribeQuote.ts +109 -0
  635. package/src/storage/parseStoredRecord.ts +55 -0
  636. package/src/{agent → storage}/storage.ts +6 -4
  637. package/src/storage/types.ts +13 -0
  638. package/src/transport/fetchWithRetry.ts +116 -0
  639. package/src/transport/request.ts +123 -0
  640. package/src/transport/retryPolicy.ts +202 -0
  641. package/src/types/api.ts +239 -0
  642. package/src/types/config.ts +79 -0
  643. package/src/types/provider.ts +429 -0
  644. package/src/utils/accountSummary.ts +46 -0
  645. package/src/utils/assertNever.ts +23 -0
  646. package/src/utils/calculations.ts +406 -0
  647. package/src/utils/depositChain.ts +37 -0
  648. package/src/utils/explorer.ts +51 -0
  649. package/src/utils/fillClassification.ts +51 -0
  650. package/src/utils/format.ts +212 -0
  651. package/src/utils/orderClassification.ts +96 -0
  652. package/src/utils/orderMath.ts +134 -0
  653. package/src/utils/parse.ts +29 -0
  654. package/src/utils/positionMath.ts +149 -0
  655. package/src/utils/signTypedData.ts +25 -15
  656. package/src/utils/sleep.ts +5 -0
  657. package/src/utils/units.ts +39 -0
  658. package/src/utils/validation.ts +38 -0
  659. package/src/version.ts +1 -1
  660. package/src/websocket/PerpsWsClient.ts +204 -0
  661. package/src/websocket/ReconnectingWebSocket.ts +353 -0
  662. package/src/websocket/WsProviderBase.ts +333 -0
  663. package/src/websocket/cachePromise.ts +30 -0
  664. package/src/websocket/types.ts +75 -0
  665. package/src/websocket/wsLog.ts +82 -0
  666. package/dist/cjs/agent/AgentManager.d.ts +0 -15
  667. package/dist/cjs/agent/AgentManager.d.ts.map +0 -1
  668. package/dist/cjs/agent/AgentManager.js +0 -80
  669. package/dist/cjs/agent/AgentManager.js.map +0 -1
  670. package/dist/cjs/agent/storage.d.ts.map +0 -1
  671. package/dist/cjs/agent/storage.js.map +0 -1
  672. package/dist/cjs/agent/types.d.ts.map +0 -1
  673. package/dist/cjs/client/types.d.ts +0 -62
  674. package/dist/cjs/client/types.d.ts.map +0 -1
  675. package/dist/cjs/dex/hyperliquid.d.ts +0 -3
  676. package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
  677. package/dist/cjs/dex/hyperliquid.js +0 -21
  678. package/dist/cjs/dex/hyperliquid.js.map +0 -1
  679. package/dist/cjs/dex/registry.d.ts +0 -3
  680. package/dist/cjs/dex/registry.d.ts.map +0 -1
  681. package/dist/cjs/dex/registry.js +0 -16
  682. package/dist/cjs/dex/registry.js.map +0 -1
  683. package/dist/cjs/dex/types.d.ts +0 -13
  684. package/dist/cjs/dex/types.d.ts.map +0 -1
  685. package/dist/cjs/errors/AgentError.d.ts +0 -10
  686. package/dist/cjs/errors/AgentError.d.ts.map +0 -1
  687. package/dist/cjs/errors/AgentError.js +0 -23
  688. package/dist/cjs/errors/AgentError.js.map +0 -1
  689. package/dist/cjs/errors/HTTPError.d.ts +0 -11
  690. package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
  691. package/dist/cjs/errors/HTTPError.js +0 -62
  692. package/dist/cjs/errors/HTTPError.js.map +0 -1
  693. package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
  694. package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
  695. package/dist/cjs/errors/PerpsSDKError.js +0 -36
  696. package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
  697. package/dist/cjs/errors/ServerError.d.ts +0 -10
  698. package/dist/cjs/errors/ServerError.d.ts.map +0 -1
  699. package/dist/cjs/errors/ServerError.js +0 -24
  700. package/dist/cjs/errors/ServerError.js.map +0 -1
  701. package/dist/cjs/errors/ValidationError.d.ts +0 -9
  702. package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
  703. package/dist/cjs/errors/ValidationError.js +0 -23
  704. package/dist/cjs/errors/ValidationError.js.map +0 -1
  705. package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
  706. package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
  707. package/dist/cjs/errors/utils/rootCause.js +0 -41
  708. package/dist/cjs/errors/utils/rootCause.js.map +0 -1
  709. package/dist/cjs/realtime/PerpsWsClient.d.ts +0 -14
  710. package/dist/cjs/realtime/PerpsWsClient.d.ts.map +0 -1
  711. package/dist/cjs/realtime/PerpsWsClient.js +0 -56
  712. package/dist/cjs/realtime/PerpsWsClient.js.map +0 -1
  713. package/dist/cjs/realtime/ReconnectingWebSocket.d.ts +0 -36
  714. package/dist/cjs/realtime/ReconnectingWebSocket.d.ts.map +0 -1
  715. package/dist/cjs/realtime/ReconnectingWebSocket.js +0 -132
  716. package/dist/cjs/realtime/ReconnectingWebSocket.js.map +0 -1
  717. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
  718. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
  719. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +0 -225
  720. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +0 -1
  721. package/dist/cjs/realtime/hyperliquid/types.d.ts +0 -35
  722. package/dist/cjs/realtime/hyperliquid/types.d.ts.map +0 -1
  723. package/dist/cjs/realtime/hyperliquid/types.js.map +0 -1
  724. package/dist/cjs/realtime/types.d.ts +0 -10
  725. package/dist/cjs/realtime/types.d.ts.map +0 -1
  726. package/dist/cjs/realtime/types.js +0 -3
  727. package/dist/cjs/services/cancelOrder.d.ts +0 -10
  728. package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
  729. package/dist/cjs/services/cancelOrder.js +0 -16
  730. package/dist/cjs/services/cancelOrder.js.map +0 -1
  731. package/dist/cjs/services/createAuthorization.d.ts +0 -10
  732. package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
  733. package/dist/cjs/services/createAuthorization.js +0 -16
  734. package/dist/cjs/services/createAuthorization.js.map +0 -1
  735. package/dist/cjs/services/createOrder.d.ts +0 -21
  736. package/dist/cjs/services/createOrder.d.ts.map +0 -1
  737. package/dist/cjs/services/createOrder.js +0 -27
  738. package/dist/cjs/services/createOrder.js.map +0 -1
  739. package/dist/cjs/services/createWithdrawal.d.ts +0 -9
  740. package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
  741. package/dist/cjs/services/createWithdrawal.js +0 -15
  742. package/dist/cjs/services/createWithdrawal.js.map +0 -1
  743. package/dist/cjs/services/getDexes.d.ts +0 -4
  744. package/dist/cjs/services/getDexes.d.ts.map +0 -1
  745. package/dist/cjs/services/getDexes.js +0 -8
  746. package/dist/cjs/services/getDexes.js.map +0 -1
  747. package/dist/cjs/services/getHistory.d.ts +0 -10
  748. package/dist/cjs/services/getHistory.d.ts.map +0 -1
  749. package/dist/cjs/services/getHistory.js +0 -14
  750. package/dist/cjs/services/getHistory.js.map +0 -1
  751. package/dist/cjs/services/submitAuthorization.d.ts +0 -10
  752. package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
  753. package/dist/cjs/services/submitAuthorization.js.map +0 -1
  754. package/dist/cjs/services/submitOrder.d.ts +0 -10
  755. package/dist/cjs/services/submitOrder.d.ts.map +0 -1
  756. package/dist/cjs/services/submitOrder.js +0 -16
  757. package/dist/cjs/services/submitOrder.js.map +0 -1
  758. package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
  759. package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
  760. package/dist/cjs/services/submitWithdrawal.js +0 -15
  761. package/dist/cjs/services/submitWithdrawal.js.map +0 -1
  762. package/dist/cjs/utils/request.d.ts.map +0 -1
  763. package/dist/cjs/utils/request.js +0 -60
  764. package/dist/cjs/utils/request.js.map +0 -1
  765. package/dist/esm/agent/AgentManager.d.ts +0 -45
  766. package/dist/esm/agent/AgentManager.d.ts.map +0 -1
  767. package/dist/esm/agent/AgentManager.js +0 -110
  768. package/dist/esm/agent/AgentManager.js.map +0 -1
  769. package/dist/esm/agent/storage.d.ts.map +0 -1
  770. package/dist/esm/agent/storage.js.map +0 -1
  771. package/dist/esm/agent/types.d.ts +0 -23
  772. package/dist/esm/agent/types.d.ts.map +0 -1
  773. package/dist/esm/agent/types.js.map +0 -1
  774. package/dist/esm/client/types.d.ts +0 -134
  775. package/dist/esm/client/types.d.ts.map +0 -1
  776. package/dist/esm/client/types.js.map +0 -1
  777. package/dist/esm/dex/hyperliquid.d.ts +0 -3
  778. package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
  779. package/dist/esm/dex/hyperliquid.js +0 -19
  780. package/dist/esm/dex/hyperliquid.js.map +0 -1
  781. package/dist/esm/dex/registry.d.ts +0 -3
  782. package/dist/esm/dex/registry.d.ts.map +0 -1
  783. package/dist/esm/dex/registry.js +0 -13
  784. package/dist/esm/dex/registry.js.map +0 -1
  785. package/dist/esm/dex/types.d.ts +0 -15
  786. package/dist/esm/dex/types.d.ts.map +0 -1
  787. package/dist/esm/dex/types.js +0 -2
  788. package/dist/esm/dex/types.js.map +0 -1
  789. package/dist/esm/errors/AgentError.d.ts +0 -25
  790. package/dist/esm/errors/AgentError.d.ts.map +0 -1
  791. package/dist/esm/errors/AgentError.js +0 -35
  792. package/dist/esm/errors/AgentError.js.map +0 -1
  793. package/dist/esm/errors/HTTPError.d.ts +0 -11
  794. package/dist/esm/errors/HTTPError.d.ts.map +0 -1
  795. package/dist/esm/errors/HTTPError.js +0 -61
  796. package/dist/esm/errors/HTTPError.js.map +0 -1
  797. package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
  798. package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
  799. package/dist/esm/errors/PerpsSDKError.js +0 -67
  800. package/dist/esm/errors/PerpsSDKError.js.map +0 -1
  801. package/dist/esm/errors/ServerError.d.ts +0 -23
  802. package/dist/esm/errors/ServerError.d.ts.map +0 -1
  803. package/dist/esm/errors/ServerError.js +0 -34
  804. package/dist/esm/errors/ServerError.js.map +0 -1
  805. package/dist/esm/errors/ValidationError.d.ts +0 -23
  806. package/dist/esm/errors/ValidationError.d.ts.map +0 -1
  807. package/dist/esm/errors/ValidationError.js +0 -34
  808. package/dist/esm/errors/ValidationError.js.map +0 -1
  809. package/dist/esm/errors/utils/rootCause.d.ts +0 -71
  810. package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
  811. package/dist/esm/errors/utils/rootCause.js +0 -99
  812. package/dist/esm/errors/utils/rootCause.js.map +0 -1
  813. package/dist/esm/realtime/PerpsWsClient.d.ts +0 -14
  814. package/dist/esm/realtime/PerpsWsClient.d.ts.map +0 -1
  815. package/dist/esm/realtime/PerpsWsClient.js +0 -52
  816. package/dist/esm/realtime/PerpsWsClient.js.map +0 -1
  817. package/dist/esm/realtime/ReconnectingWebSocket.d.ts.map +0 -1
  818. package/dist/esm/realtime/ReconnectingWebSocket.js +0 -128
  819. package/dist/esm/realtime/ReconnectingWebSocket.js.map +0 -1
  820. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
  821. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
  822. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +0 -222
  823. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +0 -1
  824. package/dist/esm/realtime/hyperliquid/types.d.ts +0 -35
  825. package/dist/esm/realtime/hyperliquid/types.d.ts.map +0 -1
  826. package/dist/esm/realtime/hyperliquid/types.js +0 -4
  827. package/dist/esm/realtime/hyperliquid/types.js.map +0 -1
  828. package/dist/esm/realtime/types.d.ts +0 -10
  829. package/dist/esm/realtime/types.d.ts.map +0 -1
  830. package/dist/esm/realtime/types.js +0 -2
  831. package/dist/esm/realtime/types.js.map +0 -1
  832. package/dist/esm/services/cancelOrder.d.ts +0 -51
  833. package/dist/esm/services/cancelOrder.d.ts.map +0 -1
  834. package/dist/esm/services/cancelOrder.js +0 -50
  835. package/dist/esm/services/cancelOrder.js.map +0 -1
  836. package/dist/esm/services/createAuthorization.d.ts +0 -51
  837. package/dist/esm/services/createAuthorization.d.ts.map +0 -1
  838. package/dist/esm/services/createAuthorization.js +0 -50
  839. package/dist/esm/services/createAuthorization.js.map +0 -1
  840. package/dist/esm/services/createOrder.d.ts +0 -74
  841. package/dist/esm/services/createOrder.d.ts.map +0 -1
  842. package/dist/esm/services/createOrder.js +0 -62
  843. package/dist/esm/services/createOrder.js.map +0 -1
  844. package/dist/esm/services/createWithdrawal.d.ts +0 -49
  845. package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
  846. package/dist/esm/services/createWithdrawal.js +0 -49
  847. package/dist/esm/services/createWithdrawal.js.map +0 -1
  848. package/dist/esm/services/getDexes.d.ts +0 -20
  849. package/dist/esm/services/getDexes.d.ts.map +0 -1
  850. package/dist/esm/services/getDexes.js +0 -21
  851. package/dist/esm/services/getDexes.js.map +0 -1
  852. package/dist/esm/services/getHistory.d.ts +0 -45
  853. package/dist/esm/services/getHistory.d.ts.map +0 -1
  854. package/dist/esm/services/getHistory.js +0 -42
  855. package/dist/esm/services/getHistory.js.map +0 -1
  856. package/dist/esm/services/submitAuthorization.d.ts +0 -42
  857. package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
  858. package/dist/esm/services/submitAuthorization.js +0 -41
  859. package/dist/esm/services/submitAuthorization.js.map +0 -1
  860. package/dist/esm/services/submitOrder.d.ts +0 -44
  861. package/dist/esm/services/submitOrder.d.ts.map +0 -1
  862. package/dist/esm/services/submitOrder.js +0 -43
  863. package/dist/esm/services/submitOrder.js.map +0 -1
  864. package/dist/esm/services/submitWithdrawal.d.ts +0 -40
  865. package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
  866. package/dist/esm/services/submitWithdrawal.js +0 -40
  867. package/dist/esm/services/submitWithdrawal.js.map +0 -1
  868. package/dist/esm/utils/request.d.ts +0 -26
  869. package/dist/esm/utils/request.d.ts.map +0 -1
  870. package/dist/esm/utils/request.js +0 -78
  871. package/dist/esm/utils/request.js.map +0 -1
  872. package/dist/types/agent/AgentManager.d.ts +0 -45
  873. package/dist/types/agent/AgentManager.d.ts.map +0 -1
  874. package/dist/types/agent/storage.d.ts.map +0 -1
  875. package/dist/types/agent/types.d.ts +0 -23
  876. package/dist/types/agent/types.d.ts.map +0 -1
  877. package/dist/types/client/types.d.ts +0 -134
  878. package/dist/types/client/types.d.ts.map +0 -1
  879. package/dist/types/dex/hyperliquid.d.ts +0 -3
  880. package/dist/types/dex/hyperliquid.d.ts.map +0 -1
  881. package/dist/types/dex/registry.d.ts +0 -3
  882. package/dist/types/dex/registry.d.ts.map +0 -1
  883. package/dist/types/dex/types.d.ts +0 -15
  884. package/dist/types/dex/types.d.ts.map +0 -1
  885. package/dist/types/errors/AgentError.d.ts +0 -25
  886. package/dist/types/errors/AgentError.d.ts.map +0 -1
  887. package/dist/types/errors/HTTPError.d.ts +0 -11
  888. package/dist/types/errors/HTTPError.d.ts.map +0 -1
  889. package/dist/types/errors/PerpsSDKError.d.ts +0 -40
  890. package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
  891. package/dist/types/errors/ServerError.d.ts +0 -23
  892. package/dist/types/errors/ServerError.d.ts.map +0 -1
  893. package/dist/types/errors/ValidationError.d.ts +0 -23
  894. package/dist/types/errors/ValidationError.d.ts.map +0 -1
  895. package/dist/types/errors/utils/rootCause.d.ts +0 -71
  896. package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
  897. package/dist/types/realtime/PerpsWsClient.d.ts +0 -14
  898. package/dist/types/realtime/PerpsWsClient.d.ts.map +0 -1
  899. package/dist/types/realtime/ReconnectingWebSocket.d.ts +0 -36
  900. package/dist/types/realtime/ReconnectingWebSocket.d.ts.map +0 -1
  901. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +0 -26
  902. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +0 -1
  903. package/dist/types/realtime/hyperliquid/types.d.ts +0 -35
  904. package/dist/types/realtime/hyperliquid/types.d.ts.map +0 -1
  905. package/dist/types/realtime/types.d.ts +0 -10
  906. package/dist/types/realtime/types.d.ts.map +0 -1
  907. package/dist/types/services/cancelOrder.d.ts +0 -51
  908. package/dist/types/services/cancelOrder.d.ts.map +0 -1
  909. package/dist/types/services/createAuthorization.d.ts +0 -51
  910. package/dist/types/services/createAuthorization.d.ts.map +0 -1
  911. package/dist/types/services/createOrder.d.ts +0 -74
  912. package/dist/types/services/createOrder.d.ts.map +0 -1
  913. package/dist/types/services/createWithdrawal.d.ts +0 -49
  914. package/dist/types/services/createWithdrawal.d.ts.map +0 -1
  915. package/dist/types/services/getDexes.d.ts +0 -20
  916. package/dist/types/services/getDexes.d.ts.map +0 -1
  917. package/dist/types/services/getHistory.d.ts +0 -45
  918. package/dist/types/services/getHistory.d.ts.map +0 -1
  919. package/dist/types/services/submitAuthorization.d.ts +0 -42
  920. package/dist/types/services/submitAuthorization.d.ts.map +0 -1
  921. package/dist/types/services/submitOrder.d.ts +0 -44
  922. package/dist/types/services/submitOrder.d.ts.map +0 -1
  923. package/dist/types/services/submitWithdrawal.d.ts +0 -40
  924. package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
  925. package/dist/types/utils/request.d.ts +0 -26
  926. package/dist/types/utils/request.d.ts.map +0 -1
  927. package/src/agent/AgentManager.ts +0 -135
  928. package/src/agent/types.ts +0 -24
  929. package/src/client/types.ts +0 -162
  930. package/src/dex/hyperliquid.ts +0 -20
  931. package/src/dex/registry.ts +0 -15
  932. package/src/dex/types.ts +0 -16
  933. package/src/errors/AgentError.ts +0 -43
  934. package/src/errors/HTTPError.ts +0 -72
  935. package/src/errors/PerpsSDKError.ts +0 -79
  936. package/src/errors/ServerError.ts +0 -41
  937. package/src/errors/ValidationError.ts +0 -38
  938. package/src/errors/utils/rootCause.ts +0 -112
  939. package/src/realtime/PerpsWsClient.ts +0 -73
  940. package/src/realtime/ReconnectingWebSocket.ts +0 -156
  941. package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +0 -278
  942. package/src/realtime/hyperliquid/types.ts +0 -48
  943. package/src/realtime/types.ts +0 -16
  944. package/src/services/cancelOrder.ts +0 -75
  945. package/src/services/createAuthorization.ts +0 -79
  946. package/src/services/createOrder.ts +0 -116
  947. package/src/services/createWithdrawal.ts +0 -76
  948. package/src/services/getDexes.ts +0 -34
  949. package/src/services/getHistory.ts +0 -62
  950. package/src/services/submitAuthorization.ts +0 -70
  951. package/src/services/submitOrder.ts +0 -72
  952. package/src/services/submitWithdrawal.ts +0 -67
  953. package/src/utils/request.ts +0 -116
  954. /package/dist/cjs/{agent → storage}/storage.d.ts +0 -0
  955. /package/dist/cjs/{agent → storage}/storage.js +0 -0
  956. /package/dist/cjs/{agent → storage}/types.js +0 -0
  957. /package/dist/cjs/{client → websocket}/types.js +0 -0
  958. /package/dist/esm/{agent → storage}/types.js +0 -0
  959. /package/dist/esm/{client → websocket}/types.js +0 -0
@@ -1,438 +1,498 @@
1
- import { PerpsErrorCode } from '@lifi/perps-types';
2
- import { getDexAuthProvider } from '../dex/registry.js';
3
- import { PerpsErrorMessage } from '../errors/constants.js';
1
+ import { ActionType, PerpsErrorCode } from '@lifi/perps-types';
4
2
  import { PerpsError } from '../errors/PerpsError.js';
5
- import { cancelOrder } from '../services/cancelOrder.js';
6
- import { createAuthorization } from '../services/createAuthorization.js';
7
- import { createOrder } from '../services/createOrder.js';
8
- import { createWithdrawal } from '../services/createWithdrawal.js';
9
- import { submitAuthorization } from '../services/submitAuthorization.js';
10
- import { submitOrder } from '../services/submitOrder.js';
11
- import { submitWithdrawal } from '../services/submitWithdrawal.js';
12
- import { signTypedData } from '../utils/signTypedData.js';
3
+ import { createAction } from '../services/createAction.js';
4
+ import { executeAction } from '../services/executeAction.js';
5
+ import { getAccount as fetchAccount } from '../services/getAccount.js';
6
+ import { getProviders } from '../services/getProviders.js';
13
7
  import { createPerpsClient } from './createPerpsClient.js';
8
+ import { requireProvider as resolveProvider } from './requireProvider.js';
14
9
  /**
15
- * Stateful client for managing signing modes and trading operations.
16
- *
17
- * The PerpsClient provides two signing modes:
18
- * - `USER`: User wallet signs each action (wallet popup per action)
19
- * - `USER_AGENT`: SDK-generated agent signs actions (no popups after setup)
20
- *
21
- * In `USER_AGENT` mode, the client:
22
- * - Generates an agent keypair stored in localStorage (or custom storage)
23
- * - Auto-injects agent address into authorization requests
24
- * - Auto-signs trading actions with the agent key
25
- *
26
- * @remarks
27
- * The example below uses Hyperliquid. Authorization keys and parameters are DEX-specific.
28
- *
29
- * @example
30
- * ```ts
31
- * const perps = new PerpsClient({ integrator: 'my-app' })
32
- *
33
- * // Set up agent signing for a user + DEX pair
34
- * await perps.setSigningMode(userAddress, 'hyperliquid', 'USER_AGENT')
35
- *
36
- * // Check and execute required authorizations
37
- * const required = await perps.getRequiredAuthorizations({
38
- * dex: 'hyperliquid',
39
- * address: userAddress,
40
- * })
41
- *
42
- * // ... sign actions with user wallet ...
10
+ * Look up an action's descriptor in the provider's metadata. Throws if the
11
+ * action isn't declared — defensive: better to fail loudly than to mis-sign.
12
+ */
13
+ function findActionDescriptor(metadata, action) {
14
+ const descriptor = [
15
+ ...metadata.setup,
16
+ ...metadata.options,
17
+ ...metadata.actions,
18
+ ].find((d) => d.type === action);
19
+ if (!descriptor) {
20
+ throw new PerpsError(PerpsErrorCode.SDKError, `Provider '${metadata.key}' does not declare action '${action}'.`);
21
+ }
22
+ return descriptor;
23
+ }
24
+ /**
25
+ * The primary high-level perps API: wraps a {@link PerpsSDKClient} and owns the
26
+ * end-to-end signing pipeline for provider setup, orders, and account-level
27
+ * actions. Construct via `new PerpsClient(options)` or the SDK's higher-level
28
+ * wiring.
43
29
  *
44
- * // Place orders (agent signs automatically)
45
- * const result = await perps.placeOrder({
46
- * address: userAddress,
47
- * dex: 'hyperliquid',
48
- * symbol: 'BTC',
49
- * side: 'BUY',
50
- * type: 'MARKET',
51
- * size: '0.1',
52
- * price: '95000.00'
53
- * })
54
- * ```
30
+ * @public
55
31
  */
56
32
  export class PerpsClient {
57
33
  sdkClient;
58
- signingModes = new Map();
34
+ providerMetadataCache = new Map();
35
+ _userWallet;
59
36
  constructor(options) {
60
37
  this.sdkClient = createPerpsClient({
61
38
  integrator: options.integrator,
62
39
  apiKey: options.apiKey,
63
40
  apiUrl: options.apiUrl,
64
- storage: options.storage,
41
+ providers: options.providers,
65
42
  });
66
43
  }
67
44
  /**
68
- * Get the underlying SDK client for use with service functions.
69
- */
70
- get client() {
71
- return this.sdkClient;
72
- }
73
- /**
74
- * Get the storage key for a user + DEX pair.
45
+ * Set or update the end-user's wallet. Used whenever an action's descriptor
46
+ * names the user wallet in its `signers` list. Pass undefined to clear.
47
+ *
48
+ * @public
75
49
  */
76
- modeKey(address, dex) {
77
- return `${address.toLowerCase()}:${dex.toLowerCase()}`;
50
+ setUserWallet(userWallet) {
51
+ this._userWallet = userWallet;
52
+ Object.defineProperty(this.sdkClient, 'userWallet', {
53
+ get: () => this._userWallet,
54
+ configurable: true,
55
+ });
78
56
  }
79
57
  /**
80
- * Set the signing mode for a user + DEX pair.
58
+ * The underlying low-level {@link PerpsSDKClient} (config, user wallet,
59
+ * provider registry) backing this instance.
81
60
  *
82
- * In `USER_AGENT` mode, generates an agent keypair if one doesn't exist.
83
- *
84
- * @param address - User wallet address
85
- * @param dex - DEX identifier
86
- * @param mode - Signing mode to set
61
+ * @public
87
62
  */
88
- async setSigningMode(address, dex, mode) {
89
- const key = this.modeKey(address, dex);
90
- this.signingModes.set(key, mode);
91
- if (mode === 'USER_AGENT') {
92
- // Generate agent keypair if not exists
93
- await this.sdkClient.agentManager.getOrCreateAgent(address, dex);
63
+ get client() {
64
+ return this.sdkClient;
65
+ }
66
+ async getProviderMetadata(provider) {
67
+ const cached = this.providerMetadataCache.get(provider);
68
+ if (cached) {
69
+ return cached;
70
+ }
71
+ const { providers } = await getProviders(this.sdkClient);
72
+ for (const d of providers) {
73
+ this.providerMetadataCache.set(d.key, d);
74
+ }
75
+ const metadata = this.providerMetadataCache.get(provider);
76
+ if (!metadata) {
77
+ const error = new PerpsError(PerpsErrorCode.SDKError, `Unsupported provider: ${provider}`);
78
+ error.tool = '@lifi/perps-sdk';
79
+ throw error;
94
80
  }
81
+ return metadata;
95
82
  }
96
83
  /**
97
- * Get the current signing mode for a user + DEX pair.
98
- * Defaults to `USER` if not set.
84
+ * Resolve the registered provider plugin for `provider`, throwing a
85
+ * `PerpsError` when the caller has not registered one via the SDK's
86
+ * `providers` option. The plugin owns signer identity and write-side signing.
99
87
  */
100
- getSigningMode(address, dex) {
101
- return this.signingModes.get(this.modeKey(address, dex)) ?? 'USER';
88
+ requireProvider(provider) {
89
+ return resolveProvider(this.sdkClient, provider);
102
90
  }
103
91
  /**
104
- * Get the agent address for a user + DEX pair.
105
- *
106
- * @throws {PerpsError} If in USER mode or agent not found
92
+ * Ask the provider plugin for the signer-bearing wire fields of `action` —
93
+ * the on-wire `signerAddress` and any signer-derived params (e.g.
94
+ * Hyperliquid's `agentAddress` for `APPROVE_AGENT`). Forwards the descriptor's
95
+ * `signers` so the plugin can branch on signer role. Returns empty when the
96
+ * plugin signs as the user or with a non-EVM credential. Core constructs no
97
+ * `signerAddress` itself; signer identity is plugin-owned.
107
98
  */
108
- async getAgentAddress(address, dex) {
109
- const agent = await this.sdkClient.agentManager.getAgent(address, dex);
110
- return agent.address;
99
+ async resolveActionRequest(provider, descriptor, address) {
100
+ const plugin = this.requireProvider(provider);
101
+ if (typeof plugin.resolveActionRequest !== 'function') {
102
+ return {};
103
+ }
104
+ return plugin.resolveActionRequest(descriptor.type, address, descriptor.signers);
111
105
  }
112
106
  /**
113
- * Check if an agent exists for a user + DEX pair.
107
+ * Delegate signing of `actions` to the provider plugin. The plugin owns
108
+ * every signing arm and branches on the descriptor's `signers` internally,
109
+ * reading the end-user's wallet from the {@link SignActionsContext} when an
110
+ * arm signs as the user.
114
111
  */
115
- async hasAgent(address, dex) {
116
- return this.sdkClient.agentManager.hasAgent(address, dex);
112
+ async delegateSignActions(provider, address, descriptor, actions) {
113
+ const plugin = this.requireProvider(provider);
114
+ if (typeof plugin.signActions !== 'function') {
115
+ throw new PerpsError(PerpsErrorCode.SDKError, `Provider '${provider}' does not implement signActions for ` +
116
+ `signingMethod '${descriptor.signingMethod}'.`);
117
+ }
118
+ return plugin.signActions(descriptor.signingMethod, actions, address, this.buildSignActionsContext(descriptor));
117
119
  }
118
120
  /**
119
- * Remove the agent for a user + DEX pair.
120
- * Also resets signing mode to USER.
121
+ * Assemble the per-call context the provider plugin needs in order to sign:
122
+ * the end-user's wallet and the descriptor's declared `signers`. Core
123
+ * forwards `signers` as data so the plugin can pick WHO signs; it does not
124
+ * branch on them. Provider-owned session credentials (the Hyperliquid agent
125
+ * keypair, Lighter's API key) are resolved inside the provider's
126
+ * `signActions`, not threaded through here.
121
127
  */
122
- async removeAgent(address, dex) {
123
- await this.sdkClient.agentManager.removeAgent(address, dex);
124
- this.signingModes.delete(this.modeKey(address, dex));
128
+ buildSignActionsContext(descriptor) {
129
+ const ctx = { signers: descriptor.signers };
130
+ if (this.sdkClient.userWallet !== undefined) {
131
+ ctx.userWallet = this.sdkClient.userWallet;
132
+ }
133
+ return ctx;
125
134
  }
126
135
  /**
127
- * Build authorization payloads for signing.
136
+ * Sign a single provider setup action step by delegating to the provider
137
+ * plugin, which branches on the step's signing scheme internally. Lets
138
+ * consumers collect signed setup actions without embedding per-method
139
+ * signing logic.
128
140
  *
129
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
130
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
141
+ * @throws {PerpsError} When the step's action is not declared by the provider.
142
+ * @public
143
+ */
144
+ async signProviderSetupAction(provider, address, step) {
145
+ const metadata = await this.getProviderMetadata(provider);
146
+ const descriptor = findActionDescriptor(metadata, step.action);
147
+ const [signed] = await this.delegateSignActions(provider, address, descriptor, [step]);
148
+ return signed;
149
+ }
150
+ /**
151
+ * Build (but do not sign or submit) the unsigned action steps for `action`,
152
+ * letting the provider plugin contribute any signer-bearing request fields.
131
153
  *
132
- * @param params - Authorization parameters
133
- * @returns Authorization actions with typed data for signing
154
+ * @public
134
155
  */
135
- async buildAuthorization(params) {
136
- const mode = this.getSigningMode(params.address, params.dex);
137
- let { signerAddress } = params;
138
- if (mode === 'USER_AGENT') {
139
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
140
- signerAddress = signerAddress ?? agent.address;
141
- }
142
- return createAuthorization(this.sdkClient, {
143
- ...params,
156
+ async buildAction(action, params) {
157
+ const metadata = await this.getProviderMetadata(params.provider);
158
+ const descriptor = findActionDescriptor(metadata, action);
159
+ const { signerAddress, params: signerParams } = await this.resolveActionRequest(params.provider, descriptor, params.address);
160
+ return createAction(this.sdkClient, {
161
+ provider: params.provider,
162
+ address: params.address,
144
163
  signerAddress,
164
+ action,
165
+ params: {
166
+ ...params.params,
167
+ ...signerParams,
168
+ },
145
169
  });
146
170
  }
147
171
  /**
148
- * Submit signed authorizations.
172
+ * Fetch the user's account state from the backend and attach the
173
+ * SDK-projected `settings` array — one `AccountConfigSetting` per
174
+ * descriptor on `Provider.setup` + `Provider.options`. Callers read
175
+ * `result.settings` directly without re-deriving values from the typed
176
+ * `AccountConfig`.
149
177
  *
150
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
151
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
178
+ * @throws {PerpsError} When the provider plugin is not registered, or the
179
+ * backend account fetch fails.
180
+ * @public
181
+ */
182
+ async getAccount(params) {
183
+ const plugin = this.requireProvider(params.provider);
184
+ const [response, metadata] = await Promise.all([
185
+ fetchAccount(this.sdkClient, params),
186
+ this.getProviderMetadata(params.provider),
187
+ ]);
188
+ const settings = plugin.projectConfig(response.config, metadata.setup, metadata.options);
189
+ return { ...response, settings };
190
+ }
191
+ /**
192
+ * Roll an already-fetched {@link AccountResponse} (plus its positions) up
193
+ * into an {@link AccountSummary}, delegating to the owning provider so the
194
+ * venue-specific collateral and margin semantics are applied correctly.
195
+ */
196
+ getAccountSummary(account, positions) {
197
+ return this.requireProvider(account.provider).getAccountSummary(account, positions);
198
+ }
199
+ /**
200
+ * Thin existence check for a provider account at `address`. Returns
201
+ * `true` when `getAccount` resolves, `false` when the backend reports
202
+ * `PerpsErrorCode.AccountNotFound`, and re-throws on any other error
203
+ * (transport failures, validation errors, server errors).
152
204
  *
153
- * @param params - Signed authorization parameters
205
+ * @throws {PerpsError} On any backend error other than
206
+ * `PerpsErrorCode.AccountNotFound`.
207
+ * @public
154
208
  */
155
- async submitAuthorizations(params) {
156
- const mode = this.getSigningMode(params.address, params.dex);
157
- let { signerAddress } = params;
158
- if (mode === 'USER_AGENT') {
159
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
160
- signerAddress = signerAddress ?? agent.address;
209
+ async accountExists(provider, address) {
210
+ try {
211
+ await fetchAccount(this.sdkClient, { provider, address });
212
+ return true;
213
+ }
214
+ catch (err) {
215
+ if (err instanceof PerpsError &&
216
+ err.code === PerpsErrorCode.AccountNotFound) {
217
+ return false;
218
+ }
219
+ throw err;
161
220
  }
162
- return submitAuthorization(this.sdkClient, { ...params, signerAddress });
163
221
  }
164
222
  /**
165
- * Build order payloads for signing.
223
+ * Return the unsatisfied entries on `Provider.setup` for this account as a
224
+ * flat, self-describing list. Trading is gated on `isReady === true`.
166
225
  *
167
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
168
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
226
+ * `Provider.options` descriptors are NEVER returned here options are
227
+ * post-setup tunables and never gate trading. Option state is surfaced
228
+ * separately via `getAccount().settings`.
169
229
  *
170
- * @param params - Order parameters
171
- * @returns Order actions with typed data for signing
230
+ * @public
172
231
  */
173
- async buildOrder(params) {
174
- const mode = this.getSigningMode(params.address, params.dex);
175
- let signerAddress;
176
- if (mode === 'USER_AGENT') {
177
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
178
- signerAddress = agent.address;
179
- }
180
- return createOrder(this.sdkClient, {
181
- dex: params.dex,
182
- address: params.address,
183
- signerAddress,
184
- clientOrderId: params.clientOrderId,
185
- symbol: params.symbol,
186
- side: params.side,
187
- type: params.type,
188
- size: params.size,
189
- price: params.price,
190
- leverage: params.leverage,
191
- reduceOnly: params.reduceOnly,
192
- timeInForce: params.timeInForce,
193
- expiresAt: params.expiresAt,
194
- takeProfit: params.takeProfit,
195
- stopLoss: params.stopLoss,
196
- });
232
+ async checkSetup(params) {
233
+ const { provider, address } = params;
234
+ // The backend filters already-satisfied setup actions and returns typed
235
+ // data for those still outstanding; each plugin contributes its own
236
+ // signer-bearing request fields.
237
+ const { actions } = await this.buildProviderSetup({ provider, address });
238
+ return {
239
+ setup: actions,
240
+ isReady: actions.length === 0,
241
+ };
197
242
  }
198
243
  /**
199
- * Build cancel order payloads for signing.
244
+ * Build the unsigned setup `ActionStep`s still outstanding for an account,
245
+ * ordered by descriptor `sequence`. The backend filters already-satisfied
246
+ * setup; each plugin contributes its own signer-bearing request fields and
247
+ * any local-state params (e.g. Lighter's known pubkey).
200
248
  *
201
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
202
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
203
- *
204
- * @param params - Cancel parameters
205
- * @returns Cancel actions with typed data for signing
249
+ * @public
206
250
  */
207
- async buildCancelOrder(params) {
208
- const mode = this.getSigningMode(params.address, params.dex);
209
- let signerAddress;
210
- if (mode === 'USER_AGENT') {
211
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
212
- signerAddress = agent.address;
251
+ async buildProviderSetup(params) {
252
+ const { provider, address } = params;
253
+ const metadata = await this.getProviderMetadata(provider);
254
+ const orderedSetup = [...metadata.setup].sort((a, b) => (a.sequence ?? Number.MAX_SAFE_INTEGER) -
255
+ (b.sequence ?? Number.MAX_SAFE_INTEGER));
256
+ const plugin = this.sdkClient.getProvider(provider);
257
+ const allActions = [];
258
+ for (const descriptor of orderedSetup) {
259
+ const action = descriptor.type;
260
+ const { signerAddress, params: signerParams } = await this.resolveActionRequest(provider, descriptor, address);
261
+ const localParams = plugin?.resolveSetupParams
262
+ ? await plugin.resolveSetupParams(action, address)
263
+ : {};
264
+ const { actions } = await createAction(this.sdkClient, {
265
+ provider,
266
+ address,
267
+ signerAddress,
268
+ action,
269
+ params: {
270
+ ...signerParams,
271
+ ...localParams,
272
+ },
273
+ });
274
+ allActions.push(...actions);
213
275
  }
214
- return cancelOrder(this.sdkClient, {
215
- dex: params.dex,
216
- address: params.address,
217
- signerAddress,
218
- ids: params.ids,
219
- });
276
+ return { actions: allActions };
220
277
  }
221
278
  /**
222
- * Place an order with automatic agent signing.
223
- *
224
- * **Requires USER_AGENT mode.** For USER mode, use `buildOrder()` + `submitSignedOrder()`.
279
+ * Submit the signed setup steps returned by `checkSetup` (and signed by the
280
+ * caller / `signProviderSetupAction`). Routes the batch on the first step's
281
+ * action and lets the plugin contribute that action's `signerAddress`.
282
+ * Throws on any per-step venue rejection.
225
283
  *
226
- * @param params - Order parameters
227
- * @returns Order submission results
228
- * @throws {PerpsError} If not in USER_AGENT mode
284
+ * @public
229
285
  */
230
- async placeOrder(params) {
231
- const mode = this.getSigningMode(params.address, params.dex);
232
- if (mode !== 'USER_AGENT') {
233
- throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} placeOrder() requires USER_AGENT mode. Use createOrder() + submitOrder() for USER mode.`);
286
+ async executeProviderSetup(params) {
287
+ const { provider, address, setup, signedActions } = params;
288
+ if (signedActions.length === 0) {
289
+ return { results: { results: [] } };
234
290
  }
235
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
236
- // 1. Create order payloads
237
- const { actions } = await createOrder(this.sdkClient, {
238
- dex: params.dex,
239
- address: params.address,
240
- signerAddress: agent.address,
241
- clientOrderId: params.clientOrderId,
242
- symbol: params.symbol,
243
- side: params.side,
244
- type: params.type,
245
- size: params.size,
246
- price: params.price,
247
- leverage: params.leverage,
248
- reduceOnly: params.reduceOnly,
249
- timeInForce: params.timeInForce,
250
- expiresAt: params.expiresAt,
251
- takeProfit: params.takeProfit,
252
- stopLoss: params.stopLoss,
253
- });
254
- // 2. Sign each action with agent key
255
- const signedActions = await Promise.all(actions.map(async (a) => ({
256
- action: a.action,
257
- typedData: a.typedData,
258
- signature: await signTypedData(agent.privateKey, a.typedData),
259
- })));
260
- // 3. Submit
261
- return submitOrder(this.sdkClient, {
262
- dex: params.dex,
263
- address: params.address,
264
- signerAddress: agent.address,
291
+ const action = setup[0]?.action ?? signedActions[0].action;
292
+ const metadata = await this.getProviderMetadata(provider);
293
+ const descriptor = findActionDescriptor(metadata, action);
294
+ const { signerAddress } = await this.resolveActionRequest(provider, descriptor, address);
295
+ const results = await executeAction(this.sdkClient, {
296
+ provider,
297
+ address,
298
+ // The submitting account: the plugin-resolved signer (Hyperliquid's
299
+ // agent) when present, else the end-user's address.
300
+ signerAddress: signerAddress ?? address,
301
+ action,
265
302
  actions: signedActions,
266
303
  });
304
+ const failure = results.results.find((r) => !r.success);
305
+ if (failure) {
306
+ throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error);
307
+ }
308
+ return { results };
267
309
  }
268
310
  /**
269
- * Cancel orders with automatic agent signing.
311
+ * Sign and submit one pre-staged setup `ActionStep` end-to-end.
270
312
  *
271
- * **Requires USER_AGENT mode.** For USER mode, use `buildCancelOrder()` + `submitSignedOrder()`.
313
+ * The caller is expected to have already obtained the step from a prior
314
+ * {@link checkSetup} call (typically cached by the widget's react-query) —
315
+ * we do NOT refetch. This avoids the double `createAction` round-trip and
316
+ * keeps the nonce that was allocated at staging time committed all the way
317
+ * through submit. If the cached step has gone stale (Lighter's `/nextNonce`
318
+ * advanced underneath us), `executeProviderSetup` will surface a nonce
319
+ * conflict that the caller invalidates on, refetches `checkSetup`, and
320
+ * retries with a fresh step.
272
321
  *
273
- * @param params - Cancel parameters
274
- * @returns Cancel submission results
275
- * @throws {PerpsError} If not in USER_AGENT mode
322
+ * @throws {PerpsError} When the step's action is not in the provider's
323
+ * `setup` descriptors.
324
+ * @public
276
325
  */
277
- async cancelOrders(params) {
278
- const mode = this.getSigningMode(params.address, params.dex);
279
- if (mode !== 'USER_AGENT') {
280
- throw new PerpsError(PerpsErrorCode.ValidationError, `${PerpsErrorMessage.InvalidSigningMode} cancelOrders() requires USER_AGENT mode. Use cancelOrder() + submitOrder() for USER mode.`);
326
+ async executeProviderSetupAction(params) {
327
+ const { provider, address, step } = params;
328
+ const metadata = await this.getProviderMetadata(provider);
329
+ const descriptor = metadata.setup.find((d) => d.type === step.action);
330
+ if (!descriptor) {
331
+ throw new PerpsError(PerpsErrorCode.SDKError, `Action '${step.action}' is not in '${provider}'.setup`);
281
332
  }
282
- const agent = await this.sdkClient.agentManager.getAgent(params.address, params.dex);
283
- // 1. Create cancel payloads
284
- const { actions } = await cancelOrder(this.sdkClient, {
285
- dex: params.dex,
286
- address: params.address,
287
- signerAddress: agent.address,
288
- ids: params.ids,
289
- });
290
- // 2. Sign each action with agent key
291
- const signedActions = await Promise.all(actions.map(async (a) => ({
292
- action: a.action,
293
- typedData: a.typedData,
294
- signature: await signTypedData(agent.privateKey, a.typedData),
295
- })));
296
- // 3. Submit
297
- return submitOrder(this.sdkClient, {
298
- dex: params.dex,
299
- address: params.address,
300
- signerAddress: agent.address,
301
- actions: signedActions,
333
+ const signed = await this.signProviderSetupAction(provider, address, step);
334
+ await this.executeProviderSetup({
335
+ provider,
336
+ address,
337
+ setup: [step],
338
+ signedActions: [signed],
302
339
  });
303
340
  }
304
341
  /**
305
- * Submit pre-signed order actions.
342
+ * Sign and submit a single provider-option change (a `Provider.options`
343
+ * tunable such as Lighter `ACCOUNT_TYPE` or Hyperliquid `ACCOUNT_MODE`)
344
+ * end-to-end, throwing on a venue rejection.
306
345
  *
307
- * Use this for USER mode when you've already signed the actions with the user's wallet.
308
- * Auto-injects `signerAddress` if not provided (defaults to `address`).
346
+ * Options are dispatched through the same {@link execute} pipeline as
347
+ * trades, but unlike a trade an option change is a single mandatory action:
348
+ * a per-action `success: false` (returned as a 200 OK) means the user's
349
+ * selection was rejected and must surface, not be silently dropped. This
350
+ * wrapper inspects the result and throws a {@link PerpsError} carrying the
351
+ * venue `error`, giving options the same throw contract that setup has via
352
+ * {@link executeProviderSetupAction}. The only structural difference is that
353
+ * an option carries `params` (the selected value) rather than a pre-staged
354
+ * step.
309
355
  *
310
- * @param params - Signed order parameters
356
+ * `execute` itself is unchanged it still returns results without throwing,
357
+ * which the trade hooks rely on for partial-fill handling.
358
+ *
359
+ * @throws {PerpsError} `PerpsErrorCode.ExchangeRejected` carrying the venue
360
+ * error when any returned result has `success: false`; also the errors
361
+ * `execute` itself can throw (unregistered provider, no signer, signing
362
+ * failure).
363
+ * @public
311
364
  */
312
- async submitSignedOrder(params) {
313
- return submitOrder(this.sdkClient, params);
365
+ async executeProviderOption(params) {
366
+ const { results } = await this.execute(params);
367
+ const failure = results.find((r) => !r.success);
368
+ if (failure) {
369
+ throw new PerpsError(PerpsErrorCode.ExchangeRejected, failure.error);
370
+ }
314
371
  }
315
372
  /**
316
- * Build a withdrawal payload for the user to sign.
373
+ * Place a market or limit order. Convenience wrapper over {@link execute}
374
+ * with `ActionType.PLACE_ORDER`.
317
375
  *
318
- * Withdrawals are user-signed only agents cannot initiate withdrawals.
319
- * No agent injection is performed regardless of signing mode.
376
+ * @throws {PerpsError} When the provider is unregistered or the action
377
+ * cannot be signed/submitted.
378
+ * @example
379
+ * ```ts
380
+ * await client.placeOrder({
381
+ * provider: 'hyperliquid',
382
+ * address: '0xUser',
383
+ * market: { symbol: 'ETH' },
384
+ * side: 'buy',
385
+ * size: '0.1',
386
+ * })
387
+ * ```
388
+ * @public
389
+ */
390
+ async placeOrder(params) {
391
+ return this.execute({ ...params, action: ActionType.PLACE_ORDER, params });
392
+ }
393
+ /**
394
+ * Place a trigger (take-profit / stop-loss) order. Convenience wrapper over
395
+ * {@link execute} with `ActionType.PLACE_TRIGGER_ORDER`.
320
396
  *
321
- * @param params - Withdrawal parameters
322
- * @returns Withdrawal action with typed data for signing
397
+ * @throws {PerpsError} When the provider is unregistered or the action
398
+ * cannot be signed/submitted.
399
+ * @public
323
400
  */
324
- async buildWithdrawal(params) {
325
- return createWithdrawal(this.sdkClient, {
326
- dex: params.dex,
327
- address: params.address,
328
- withdrawal: params.withdrawal,
401
+ async placeTriggerOrder(params) {
402
+ return this.execute({
403
+ ...params,
404
+ action: ActionType.PLACE_TRIGGER_ORDER,
405
+ params,
329
406
  });
330
407
  }
331
408
  /**
332
- * Submit a signed withdrawal.
333
- *
334
- * Withdrawals are user-signed only — agents cannot initiate withdrawals.
409
+ * Cancel one or more open orders. Convenience wrapper over {@link execute}
410
+ * with `ActionType.CANCEL_ORDER`.
335
411
  *
336
- * @param params - Signed withdrawal parameters
337
- * @returns Withdrawal result
412
+ * @throws {PerpsError} When the provider is unregistered or the action
413
+ * cannot be signed/submitted.
414
+ * @public
338
415
  */
339
- async submitWithdrawal(params) {
340
- return submitWithdrawal(this.sdkClient, params);
416
+ async cancelOrders(params) {
417
+ return this.execute({ ...params, action: ActionType.CANCEL_ORDER, params });
341
418
  }
342
419
  /**
343
- * Determine which authorizations (if any) the user needs to sign before trading.
420
+ * Modify one or more open orders. Convenience wrapper over {@link execute}
421
+ * with `ActionType.MODIFY_ORDER`.
344
422
  *
345
- * Uses the dex auth provider to determine what authorizations to request,
346
- * then calls buildAuthorization — the backend filters already-valid auths
347
- * and returns only what's needed.
423
+ * @throws {PerpsError} When the provider is unregistered or the action
424
+ * cannot be signed/submitted.
425
+ * @public
426
+ */
427
+ async modifyOrders(params) {
428
+ return this.execute({ ...params, action: ActionType.MODIFY_ORDER, params });
429
+ }
430
+ /**
431
+ * Add or remove isolated-position margin. Convenience wrapper over
432
+ * {@link execute} with `ActionType.UPDATE_POSITION_MARGIN`.
348
433
  *
349
- * @param params - Parameters including dex, address, and dex-specific config
350
- * @returns Which authorizations are needed and whether the user is ready to trade
434
+ * @throws {PerpsError} When the provider is unregistered or the action
435
+ * cannot be signed/submitted.
436
+ * @public
351
437
  */
352
- async getRequiredAuthorizations(params) {
353
- const { dex, address } = params;
354
- const mode = this.getSigningMode(address, dex);
355
- const provider = getDexAuthProvider(dex);
356
- // Ensure agent exists in USER_AGENT mode
357
- let agentAddress;
358
- if (mode === 'USER_AGENT') {
359
- const agent = await this.sdkClient.agentManager.getOrCreateAgent(address, dex);
360
- agentAddress = agent.address;
361
- }
362
- // Provider declares auth inputs categorized as user/agent
363
- const authInputs = provider.getAuthorizationInputs({
364
- signingMode: mode,
365
- agentAddress,
438
+ async updatePositionMargin(params) {
439
+ return this.execute({
440
+ ...params,
441
+ action: ActionType.UPDATE_POSITION_MARGIN,
442
+ params,
366
443
  });
367
- const allInputs = [...authInputs.user, ...authInputs.agent];
368
- if (allInputs.length === 0) {
369
- return { userAuthorizations: [], agentAuthorizations: [], isReady: true };
370
- }
371
- // Send ALL to backend — it filters already-satisfied ones and returns typed data
372
- const { actions } = await this.buildAuthorization({
373
- dex,
374
- address,
375
- authorizations: allInputs,
444
+ }
445
+ /**
446
+ * Withdraw funds from the provider account. Convenience wrapper over
447
+ * {@link execute} with `ActionType.WITHDRAWAL`.
448
+ *
449
+ * @throws {PerpsError} When the provider is unregistered or the action
450
+ * cannot be signed/submitted.
451
+ * @public
452
+ */
453
+ async withdraw(params) {
454
+ return this.execute({
455
+ provider: params.provider,
456
+ address: params.address,
457
+ action: ActionType.WITHDRAWAL,
458
+ params: params.withdrawal,
376
459
  });
377
- if (actions.length === 0) {
378
- return { userAuthorizations: [], agentAuthorizations: [], isReady: true };
379
- }
380
- // Categorize backend results using provider's original key sets
381
- const agentKeys = new Set(authInputs.agent.map((a) => a.key));
382
- const userAuthorizations = actions.filter((a) => !agentKeys.has(a.action));
383
- const agentAuthorizations = actions.filter((a) => agentKeys.has(a.action));
384
- return {
385
- userAuthorizations,
386
- agentAuthorizations,
387
- isReady: false,
388
- };
389
460
  }
390
461
  /**
391
- * Execute authorizations: submit user-signed actions, then auto-sign and submit
392
- * any agent authorizations.
462
+ * Execute any action through the SDK's signing pipeline: fetch the unsigned
463
+ * steps, delegate signing to the provider plugin (which branches on the
464
+ * descriptor's scheme and signer internally), and submit. Core stays
465
+ * signer-agnostic — the plugin owns WHO signs and HOW.
393
466
  *
394
- * @param params - User-signed actions and the required authorizations result
395
- * @returns Combined results from user and agent submissions
467
+ * @throws {PerpsError} When the action is not declared by the provider,
468
+ * the plugin cannot sign it, or submission fails.
469
+ * @public
396
470
  */
397
- async executeAuthorizations(params) {
398
- const { dex, address, required, userSignedActions } = params;
399
- const mode = this.getSigningMode(address, dex);
400
- // 1. Submit user-signed actions (if any)
401
- let userResults = { results: [] };
402
- if (userSignedActions.length > 0) {
403
- const signerAddress = mode === 'USER_AGENT'
404
- ? (await this.sdkClient.agentManager.getAgent(address, dex)).address
405
- : address;
406
- userResults = await submitAuthorization(this.sdkClient, {
407
- dex,
408
- address,
409
- signerAddress,
410
- actions: userSignedActions,
411
- });
412
- // Check for failures - return early if any user auth failed
413
- const failed = userResults.results.find((r) => !r.success);
414
- if (failed) {
415
- return { userResults };
416
- }
417
- }
418
- // 2. Auto-sign and submit agent authorizations (if any)
419
- // Typed data already built by getRequiredAuthorizations — just sign and submit
420
- if (required.agentAuthorizations.length > 0 && mode === 'USER_AGENT') {
421
- const agent = await this.sdkClient.agentManager.getAgent(address, dex);
422
- const signedAgentActions = await Promise.all(required.agentAuthorizations.map(async (action) => ({
423
- action: action.action,
424
- typedData: action.typedData,
425
- signature: await signTypedData(agent.privateKey, action.typedData),
426
- })));
427
- const agentResults = await submitAuthorization(this.sdkClient, {
428
- dex,
429
- address,
430
- signerAddress: agent.address,
431
- actions: signedAgentActions,
432
- });
433
- return { userResults, agentResults };
434
- }
435
- return { userResults };
471
+ async execute(params) {
472
+ const { provider, address, action } = params;
473
+ const metadata = await this.getProviderMetadata(provider);
474
+ const descriptor = findActionDescriptor(metadata, action);
475
+ const { signerAddress, params: signerParams } = await this.resolveActionRequest(provider, descriptor, address);
476
+ const { actions } = await createAction(this.sdkClient, {
477
+ provider,
478
+ address,
479
+ signerAddress,
480
+ action,
481
+ params: {
482
+ ...params.params,
483
+ ...signerParams,
484
+ },
485
+ });
486
+ const signedActions = await this.delegateSignActions(provider, address, descriptor, actions);
487
+ return executeAction(this.sdkClient, {
488
+ provider,
489
+ address,
490
+ // The submitting account: the plugin-resolved signer (Hyperliquid's
491
+ // agent) when present, else the end-user's address.
492
+ signerAddress: signerAddress ?? address,
493
+ action,
494
+ actions: signedActions,
495
+ });
436
496
  }
437
497
  }
438
498
  //# sourceMappingURL=PerpsClient.js.map