@lifi/perps-sdk 0.1.1-alpha.4 → 0.1.1-alpha.40

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 (595) hide show
  1. package/README.md +38 -15
  2. package/dist/cjs/agent/AgentManager.d.ts +5 -5
  3. package/dist/cjs/agent/AgentManager.d.ts.map +1 -1
  4. package/dist/cjs/agent/AgentManager.js +16 -14
  5. package/dist/cjs/agent/AgentManager.js.map +1 -1
  6. package/dist/cjs/client/PerpsClient.d.ts +70 -21
  7. package/dist/cjs/client/PerpsClient.d.ts.map +1 -1
  8. package/dist/cjs/client/PerpsClient.js +323 -175
  9. package/dist/cjs/client/PerpsClient.js.map +1 -1
  10. package/dist/cjs/client/createPerpsClient.d.ts +12 -2
  11. package/dist/cjs/client/createPerpsClient.d.ts.map +1 -1
  12. package/dist/cjs/client/createPerpsClient.js +6 -5
  13. package/dist/cjs/client/createPerpsClient.js.map +1 -1
  14. package/dist/cjs/client/types.d.ts +42 -25
  15. package/dist/cjs/client/types.d.ts.map +1 -1
  16. package/dist/cjs/client/types.js +6 -0
  17. package/dist/cjs/client/types.js.map +1 -1
  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 +0 -10
  23. package/dist/cjs/errors/constants.d.ts.map +1 -1
  24. package/dist/cjs/errors/constants.js +1 -12
  25. package/dist/cjs/errors/constants.js.map +1 -1
  26. package/dist/cjs/index.d.ts +31 -32
  27. package/dist/cjs/index.d.ts.map +1 -1
  28. package/dist/cjs/index.js +58 -42
  29. package/dist/cjs/index.js.map +1 -1
  30. package/dist/cjs/realtime/PerpsWsClient.d.ts +1 -0
  31. package/dist/cjs/realtime/PerpsWsClient.d.ts.map +1 -1
  32. package/dist/cjs/realtime/PerpsWsClient.js +28 -23
  33. package/dist/cjs/realtime/PerpsWsClient.js.map +1 -1
  34. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts +9 -5
  35. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  36. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js +162 -52
  37. package/dist/cjs/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  38. package/dist/cjs/realtime/hyperliquid/types.d.ts +11 -9
  39. package/dist/cjs/realtime/hyperliquid/types.d.ts.map +1 -1
  40. package/dist/cjs/services/createAction.d.ts +11 -0
  41. package/dist/cjs/services/createAction.d.ts.map +1 -0
  42. package/dist/cjs/services/{submitAuthorization.js → createAction.js} +7 -6
  43. package/dist/cjs/services/createAction.js.map +1 -0
  44. package/dist/cjs/services/executeAction.d.ts +11 -0
  45. package/dist/cjs/services/executeAction.d.ts.map +1 -0
  46. package/dist/cjs/services/{submitOrder.js → executeAction.js} +6 -5
  47. package/dist/cjs/services/executeAction.js.map +1 -0
  48. package/dist/cjs/services/getAccount.d.ts +1 -1
  49. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  50. package/dist/cjs/services/getAccount.js +1 -1
  51. package/dist/cjs/services/getAccount.js.map +1 -1
  52. package/dist/cjs/services/getActivity.d.ts +13 -0
  53. package/dist/cjs/services/getActivity.d.ts.map +1 -0
  54. package/dist/cjs/services/getActivity.js +21 -0
  55. package/dist/cjs/services/getActivity.js.map +1 -0
  56. package/dist/cjs/services/getAsset.d.ts +8 -0
  57. package/dist/cjs/services/getAsset.d.ts.map +1 -0
  58. package/dist/cjs/services/{getMarkets.js → getAsset.js} +6 -4
  59. package/dist/cjs/services/getAsset.js.map +1 -0
  60. package/dist/cjs/services/getAssets.d.ts +7 -0
  61. package/dist/cjs/services/getAssets.d.ts.map +1 -0
  62. package/dist/cjs/services/{getMarket.js → getAssets.js} +5 -5
  63. package/dist/cjs/services/getAssets.js.map +1 -0
  64. package/dist/cjs/services/getFills.d.ts +12 -0
  65. package/dist/cjs/services/getFills.d.ts.map +1 -0
  66. package/dist/cjs/services/{getHistory.js → getFills.js} +7 -5
  67. package/dist/cjs/services/getFills.js.map +1 -0
  68. package/dist/cjs/services/getOhlcv.d.ts +1 -1
  69. package/dist/cjs/services/getOhlcv.d.ts.map +1 -1
  70. package/dist/cjs/services/getOhlcv.js +1 -1
  71. package/dist/cjs/services/getOhlcv.js.map +1 -1
  72. package/dist/cjs/services/getOrder.d.ts +1 -1
  73. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  74. package/dist/cjs/services/getOrder.js +1 -1
  75. package/dist/cjs/services/getOrder.js.map +1 -1
  76. package/dist/cjs/services/getOrderbook.d.ts +1 -1
  77. package/dist/cjs/services/getOrderbook.d.ts.map +1 -1
  78. package/dist/cjs/services/getOrderbook.js +1 -1
  79. package/dist/cjs/services/getOrderbook.js.map +1 -1
  80. package/dist/cjs/services/getOrders.d.ts +11 -0
  81. package/dist/cjs/services/getOrders.d.ts.map +1 -0
  82. package/dist/cjs/services/getOrders.js +15 -0
  83. package/dist/cjs/services/getOrders.js.map +1 -0
  84. package/dist/cjs/services/getPositions.d.ts +11 -0
  85. package/dist/cjs/services/getPositions.d.ts.map +1 -0
  86. package/dist/cjs/services/getPositions.js +15 -0
  87. package/dist/cjs/services/getPositions.js.map +1 -0
  88. package/dist/cjs/services/getPrices.d.ts +1 -1
  89. package/dist/cjs/services/getPrices.d.ts.map +1 -1
  90. package/dist/cjs/services/getPrices.js +1 -1
  91. package/dist/cjs/services/getPrices.js.map +1 -1
  92. package/dist/cjs/services/getProviders.d.ts +4 -0
  93. package/dist/cjs/services/getProviders.d.ts.map +1 -0
  94. package/dist/cjs/services/{getDexes.js → getProviders.js} +4 -4
  95. package/dist/cjs/services/getProviders.js.map +1 -0
  96. package/dist/cjs/utils/accountSummary.d.ts +9 -0
  97. package/dist/cjs/utils/accountSummary.d.ts.map +1 -0
  98. package/dist/cjs/utils/accountSummary.js +81 -0
  99. package/dist/cjs/utils/accountSummary.js.map +1 -0
  100. package/dist/cjs/utils/calculations.d.ts +16 -0
  101. package/dist/cjs/utils/calculations.d.ts.map +1 -0
  102. package/dist/cjs/utils/calculations.js +71 -0
  103. package/dist/cjs/utils/calculations.js.map +1 -0
  104. package/dist/cjs/utils/hyperliquid/index.d.ts +3 -0
  105. package/dist/cjs/utils/hyperliquid/index.d.ts.map +1 -0
  106. package/dist/cjs/utils/hyperliquid/index.js +11 -0
  107. package/dist/cjs/utils/hyperliquid/index.js.map +1 -0
  108. package/dist/cjs/utils/hyperliquid/liquidation.d.ts +3 -0
  109. package/dist/cjs/utils/hyperliquid/liquidation.d.ts.map +1 -0
  110. package/dist/cjs/utils/hyperliquid/liquidation.js +24 -0
  111. package/dist/cjs/utils/hyperliquid/liquidation.js.map +1 -0
  112. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts +4 -0
  113. package/dist/cjs/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  114. package/dist/cjs/utils/hyperliquid/orderFormatting.js +33 -0
  115. package/dist/cjs/utils/hyperliquid/orderFormatting.js.map +1 -0
  116. package/dist/cjs/utils/orderClassification.d.ts +8 -0
  117. package/dist/cjs/utils/orderClassification.d.ts.map +1 -0
  118. package/dist/cjs/utils/orderClassification.js +39 -0
  119. package/dist/cjs/utils/orderClassification.js.map +1 -0
  120. package/dist/cjs/utils/parse.d.ts +2 -0
  121. package/dist/cjs/utils/parse.d.ts.map +1 -0
  122. package/dist/cjs/utils/parse.js +14 -0
  123. package/dist/cjs/utils/parse.js.map +1 -0
  124. package/dist/cjs/utils/request.d.ts.map +1 -1
  125. package/dist/cjs/utils/request.js +16 -4
  126. package/dist/cjs/utils/request.js.map +1 -1
  127. package/dist/cjs/utils/units.d.ts +3 -0
  128. package/dist/cjs/utils/units.d.ts.map +1 -0
  129. package/dist/cjs/utils/units.js +18 -0
  130. package/dist/cjs/utils/units.js.map +1 -0
  131. package/dist/cjs/utils/validation.d.ts +2 -0
  132. package/dist/cjs/utils/validation.d.ts.map +1 -0
  133. package/dist/cjs/utils/validation.js +16 -0
  134. package/dist/cjs/utils/validation.js.map +1 -0
  135. package/dist/cjs/version.d.ts +1 -1
  136. package/dist/cjs/version.d.ts.map +1 -1
  137. package/dist/cjs/version.js +1 -1
  138. package/dist/cjs/version.js.map +1 -1
  139. package/dist/esm/agent/AgentManager.d.ts +9 -9
  140. package/dist/esm/agent/AgentManager.d.ts.map +1 -1
  141. package/dist/esm/agent/AgentManager.js +20 -18
  142. package/dist/esm/agent/AgentManager.js.map +1 -1
  143. package/dist/esm/agent/storage.d.ts +1 -1
  144. package/dist/esm/agent/storage.js +1 -1
  145. package/dist/esm/client/PerpsClient.d.ts +70 -189
  146. package/dist/esm/client/PerpsClient.d.ts.map +1 -1
  147. package/dist/esm/client/PerpsClient.js +355 -361
  148. package/dist/esm/client/PerpsClient.js.map +1 -1
  149. package/dist/esm/client/createPerpsClient.d.ts +30 -7
  150. package/dist/esm/client/createPerpsClient.d.ts.map +1 -1
  151. package/dist/esm/client/createPerpsClient.js +6 -6
  152. package/dist/esm/client/createPerpsClient.js.map +1 -1
  153. package/dist/esm/client/types.d.ts +75 -48
  154. package/dist/esm/client/types.d.ts.map +1 -1
  155. package/dist/esm/client/types.js +11 -1
  156. package/dist/esm/client/types.js.map +1 -1
  157. package/dist/esm/errors/PerpsError.d.ts +2 -3
  158. package/dist/esm/errors/PerpsError.d.ts.map +1 -1
  159. package/dist/esm/errors/PerpsError.js +3 -15
  160. package/dist/esm/errors/PerpsError.js.map +1 -1
  161. package/dist/esm/errors/constants.d.ts +0 -10
  162. package/dist/esm/errors/constants.d.ts.map +1 -1
  163. package/dist/esm/errors/constants.js +0 -11
  164. package/dist/esm/errors/constants.js.map +1 -1
  165. package/dist/esm/index.d.ts +31 -32
  166. package/dist/esm/index.d.ts.map +1 -1
  167. package/dist/esm/index.js +22 -23
  168. package/dist/esm/index.js.map +1 -1
  169. package/dist/esm/realtime/PerpsWsClient.d.ts +1 -0
  170. package/dist/esm/realtime/PerpsWsClient.d.ts.map +1 -1
  171. package/dist/esm/realtime/PerpsWsClient.js +30 -23
  172. package/dist/esm/realtime/PerpsWsClient.js.map +1 -1
  173. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  174. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  175. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js +174 -53
  176. package/dist/esm/realtime/hyperliquid/HyperliquidWsProvider.js.map +1 -1
  177. package/dist/esm/realtime/hyperliquid/types.d.ts +11 -9
  178. package/dist/esm/realtime/hyperliquid/types.d.ts.map +1 -1
  179. package/dist/esm/services/createAction.d.ts +11 -0
  180. package/dist/esm/services/createAction.d.ts.map +1 -0
  181. package/dist/esm/services/createAction.js +14 -0
  182. package/dist/esm/services/createAction.js.map +1 -0
  183. package/dist/esm/services/executeAction.d.ts +11 -0
  184. package/dist/esm/services/executeAction.d.ts.map +1 -0
  185. package/dist/esm/services/executeAction.js +14 -0
  186. package/dist/esm/services/executeAction.js.map +1 -0
  187. package/dist/esm/services/getAccount.d.ts +7 -7
  188. package/dist/esm/services/getAccount.d.ts.map +1 -1
  189. package/dist/esm/services/getAccount.js +6 -6
  190. package/dist/esm/services/getAccount.js.map +1 -1
  191. package/dist/esm/services/getActivity.d.ts +49 -0
  192. package/dist/esm/services/getActivity.d.ts.map +1 -0
  193. package/dist/esm/services/getActivity.js +47 -0
  194. package/dist/esm/services/getActivity.js.map +1 -0
  195. package/dist/esm/services/getAsset.d.ts +20 -0
  196. package/dist/esm/services/getAsset.d.ts.map +1 -0
  197. package/dist/esm/services/getAsset.js +18 -0
  198. package/dist/esm/services/getAsset.js.map +1 -0
  199. package/dist/esm/services/getAssets.d.ts +18 -0
  200. package/dist/esm/services/getAssets.d.ts.map +1 -0
  201. package/dist/esm/services/getAssets.js +18 -0
  202. package/dist/esm/services/getAssets.js.map +1 -0
  203. package/dist/{types/services/getHistory.d.ts → esm/services/getFills.d.ts} +17 -13
  204. package/dist/esm/services/getFills.d.ts.map +1 -0
  205. package/dist/esm/services/{getHistory.js → getFills.js} +13 -11
  206. package/dist/esm/services/getFills.js.map +1 -0
  207. package/dist/esm/services/getOhlcv.d.ts +4 -4
  208. package/dist/esm/services/getOhlcv.d.ts.map +1 -1
  209. package/dist/esm/services/getOhlcv.js +3 -3
  210. package/dist/esm/services/getOhlcv.js.map +1 -1
  211. package/dist/esm/services/getOrder.d.ts +4 -4
  212. package/dist/esm/services/getOrder.d.ts.map +1 -1
  213. package/dist/esm/services/getOrder.js +3 -3
  214. package/dist/esm/services/getOrder.js.map +1 -1
  215. package/dist/esm/services/getOrderbook.d.ts +4 -4
  216. package/dist/esm/services/getOrderbook.d.ts.map +1 -1
  217. package/dist/esm/services/getOrderbook.js +3 -3
  218. package/dist/esm/services/getOrderbook.js.map +1 -1
  219. package/dist/esm/services/getOrders.d.ts +27 -0
  220. package/dist/esm/services/getOrders.d.ts.map +1 -0
  221. package/dist/esm/services/getOrders.js +23 -0
  222. package/dist/esm/services/getOrders.js.map +1 -0
  223. package/dist/esm/services/getPositions.d.ts +27 -0
  224. package/dist/esm/services/getPositions.d.ts.map +1 -0
  225. package/dist/esm/services/getPositions.js +23 -0
  226. package/dist/esm/services/getPositions.js.map +1 -0
  227. package/dist/esm/services/getPrices.d.ts +5 -5
  228. package/dist/esm/services/getPrices.d.ts.map +1 -1
  229. package/dist/esm/services/getPrices.js +4 -4
  230. package/dist/esm/services/getPrices.js.map +1 -1
  231. package/dist/esm/services/getProviders.d.ts +20 -0
  232. package/dist/esm/services/getProviders.d.ts.map +1 -0
  233. package/dist/esm/services/getProviders.js +21 -0
  234. package/dist/esm/services/getProviders.js.map +1 -0
  235. package/dist/esm/utils/accountSummary.d.ts +13 -0
  236. package/dist/esm/utils/accountSummary.d.ts.map +1 -0
  237. package/dist/esm/utils/accountSummary.js +92 -0
  238. package/dist/esm/utils/accountSummary.js.map +1 -0
  239. package/dist/esm/utils/calculations.d.ts +109 -0
  240. package/dist/esm/utils/calculations.d.ts.map +1 -0
  241. package/dist/esm/utils/calculations.js +154 -0
  242. package/dist/esm/utils/calculations.js.map +1 -0
  243. package/dist/esm/utils/hyperliquid/index.d.ts +3 -0
  244. package/dist/esm/utils/hyperliquid/index.d.ts.map +1 -0
  245. package/dist/esm/utils/hyperliquid/index.js +3 -0
  246. package/dist/esm/utils/hyperliquid/index.js.map +1 -0
  247. package/dist/esm/utils/hyperliquid/liquidation.d.ts +46 -0
  248. package/dist/esm/utils/hyperliquid/liquidation.d.ts.map +1 -0
  249. package/dist/esm/utils/hyperliquid/liquidation.js +63 -0
  250. package/dist/esm/utils/hyperliquid/liquidation.js.map +1 -0
  251. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts +44 -0
  252. package/dist/esm/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  253. package/dist/esm/utils/hyperliquid/orderFormatting.js +79 -0
  254. package/dist/esm/utils/hyperliquid/orderFormatting.js.map +1 -0
  255. package/dist/esm/utils/orderClassification.d.ts +29 -0
  256. package/dist/esm/utils/orderClassification.d.ts.map +1 -0
  257. package/dist/esm/utils/orderClassification.js +53 -0
  258. package/dist/esm/utils/orderClassification.js.map +1 -0
  259. package/dist/esm/utils/parse.d.ts +18 -0
  260. package/dist/esm/utils/parse.d.ts.map +1 -0
  261. package/dist/esm/utils/parse.js +28 -0
  262. package/dist/esm/utils/parse.js.map +1 -0
  263. package/dist/esm/utils/request.d.ts +1 -2
  264. package/dist/esm/utils/request.d.ts.map +1 -1
  265. package/dist/esm/utils/request.js +20 -7
  266. package/dist/esm/utils/request.js.map +1 -1
  267. package/dist/esm/utils/units.d.ts +20 -0
  268. package/dist/esm/utils/units.d.ts.map +1 -0
  269. package/dist/esm/utils/units.js +31 -0
  270. package/dist/esm/utils/units.js.map +1 -0
  271. package/dist/esm/utils/validation.d.ts +15 -0
  272. package/dist/esm/utils/validation.d.ts.map +1 -0
  273. package/dist/esm/utils/validation.js +26 -0
  274. package/dist/esm/utils/validation.js.map +1 -0
  275. package/dist/esm/version.d.ts +1 -1
  276. package/dist/esm/version.d.ts.map +1 -1
  277. package/dist/esm/version.js +1 -1
  278. package/dist/esm/version.js.map +1 -1
  279. package/dist/types/agent/AgentManager.d.ts +9 -9
  280. package/dist/types/agent/AgentManager.d.ts.map +1 -1
  281. package/dist/types/agent/storage.d.ts +1 -1
  282. package/dist/types/client/PerpsClient.d.ts +70 -189
  283. package/dist/types/client/PerpsClient.d.ts.map +1 -1
  284. package/dist/types/client/createPerpsClient.d.ts +30 -7
  285. package/dist/types/client/createPerpsClient.d.ts.map +1 -1
  286. package/dist/types/client/types.d.ts +75 -48
  287. package/dist/types/client/types.d.ts.map +1 -1
  288. package/dist/types/errors/PerpsError.d.ts +2 -3
  289. package/dist/types/errors/PerpsError.d.ts.map +1 -1
  290. package/dist/types/errors/constants.d.ts +0 -10
  291. package/dist/types/errors/constants.d.ts.map +1 -1
  292. package/dist/types/index.d.ts +31 -32
  293. package/dist/types/index.d.ts.map +1 -1
  294. package/dist/types/realtime/PerpsWsClient.d.ts +1 -0
  295. package/dist/types/realtime/PerpsWsClient.d.ts.map +1 -1
  296. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts +11 -5
  297. package/dist/types/realtime/hyperliquid/HyperliquidWsProvider.d.ts.map +1 -1
  298. package/dist/types/realtime/hyperliquid/types.d.ts +11 -9
  299. package/dist/types/realtime/hyperliquid/types.d.ts.map +1 -1
  300. package/dist/types/services/createAction.d.ts +11 -0
  301. package/dist/types/services/createAction.d.ts.map +1 -0
  302. package/dist/types/services/executeAction.d.ts +11 -0
  303. package/dist/types/services/executeAction.d.ts.map +1 -0
  304. package/dist/types/services/getAccount.d.ts +7 -7
  305. package/dist/types/services/getAccount.d.ts.map +1 -1
  306. package/dist/types/services/getActivity.d.ts +49 -0
  307. package/dist/types/services/getActivity.d.ts.map +1 -0
  308. package/dist/types/services/getAsset.d.ts +20 -0
  309. package/dist/types/services/getAsset.d.ts.map +1 -0
  310. package/dist/types/services/getAssets.d.ts +18 -0
  311. package/dist/types/services/getAssets.d.ts.map +1 -0
  312. package/dist/{esm/services/getHistory.d.ts → types/services/getFills.d.ts} +17 -13
  313. package/dist/types/services/getFills.d.ts.map +1 -0
  314. package/dist/types/services/getOhlcv.d.ts +4 -4
  315. package/dist/types/services/getOhlcv.d.ts.map +1 -1
  316. package/dist/types/services/getOrder.d.ts +4 -4
  317. package/dist/types/services/getOrder.d.ts.map +1 -1
  318. package/dist/types/services/getOrderbook.d.ts +4 -4
  319. package/dist/types/services/getOrderbook.d.ts.map +1 -1
  320. package/dist/types/services/getOrders.d.ts +27 -0
  321. package/dist/types/services/getOrders.d.ts.map +1 -0
  322. package/dist/types/services/getPositions.d.ts +27 -0
  323. package/dist/types/services/getPositions.d.ts.map +1 -0
  324. package/dist/types/services/getPrices.d.ts +5 -5
  325. package/dist/types/services/getPrices.d.ts.map +1 -1
  326. package/dist/types/services/getProviders.d.ts +20 -0
  327. package/dist/types/services/getProviders.d.ts.map +1 -0
  328. package/dist/types/utils/accountSummary.d.ts +13 -0
  329. package/dist/types/utils/accountSummary.d.ts.map +1 -0
  330. package/dist/types/utils/calculations.d.ts +109 -0
  331. package/dist/types/utils/calculations.d.ts.map +1 -0
  332. package/dist/types/utils/hyperliquid/index.d.ts +3 -0
  333. package/dist/types/utils/hyperliquid/index.d.ts.map +1 -0
  334. package/dist/types/utils/hyperliquid/liquidation.d.ts +46 -0
  335. package/dist/types/utils/hyperliquid/liquidation.d.ts.map +1 -0
  336. package/dist/types/utils/hyperliquid/orderFormatting.d.ts +44 -0
  337. package/dist/types/utils/hyperliquid/orderFormatting.d.ts.map +1 -0
  338. package/dist/types/utils/orderClassification.d.ts +29 -0
  339. package/dist/types/utils/orderClassification.d.ts.map +1 -0
  340. package/dist/types/utils/parse.d.ts +18 -0
  341. package/dist/types/utils/parse.d.ts.map +1 -0
  342. package/dist/types/utils/request.d.ts +1 -2
  343. package/dist/types/utils/request.d.ts.map +1 -1
  344. package/dist/types/utils/units.d.ts +20 -0
  345. package/dist/types/utils/units.d.ts.map +1 -0
  346. package/dist/types/utils/validation.d.ts +15 -0
  347. package/dist/types/utils/validation.d.ts.map +1 -0
  348. package/dist/types/version.d.ts +1 -1
  349. package/dist/types/version.d.ts.map +1 -1
  350. package/package.json +8 -4
  351. package/src/agent/AgentManager.ts +21 -19
  352. package/src/agent/storage.ts +1 -1
  353. package/src/client/PerpsClient.ts +569 -446
  354. package/src/client/createPerpsClient.ts +36 -11
  355. package/src/client/types.ts +84 -51
  356. package/src/errors/PerpsError.ts +3 -22
  357. package/src/errors/constants.ts +0 -11
  358. package/src/index.ts +70 -47
  359. package/src/realtime/PerpsWsClient.ts +47 -31
  360. package/src/realtime/hyperliquid/HyperliquidWsProvider.ts +203 -64
  361. package/src/realtime/hyperliquid/types.ts +8 -10
  362. package/src/services/createAction.ts +41 -0
  363. package/src/services/executeAction.ts +41 -0
  364. package/src/services/getAccount.ts +8 -8
  365. package/src/services/getActivity.ts +77 -0
  366. package/src/services/getAsset.ts +34 -0
  367. package/src/services/getAssets.ts +32 -0
  368. package/src/services/{getHistory.ts → getFills.ts} +23 -17
  369. package/src/services/getOhlcv.ts +5 -5
  370. package/src/services/getOrder.ts +5 -5
  371. package/src/services/getOrderbook.ts +5 -5
  372. package/src/services/getOrders.ts +45 -0
  373. package/src/services/getPositions.ts +45 -0
  374. package/src/services/getPrices.ts +6 -6
  375. package/src/services/{getDexes.ts → getProviders.ts} +10 -10
  376. package/src/utils/accountSummary.ts +124 -0
  377. package/src/utils/calculations.ts +209 -0
  378. package/src/utils/hyperliquid/index.ts +9 -0
  379. package/src/utils/hyperliquid/liquidation.ts +71 -0
  380. package/src/utils/hyperliquid/orderFormatting.ts +96 -0
  381. package/src/utils/orderClassification.ts +64 -0
  382. package/src/utils/parse.ts +28 -0
  383. package/src/utils/request.ts +22 -7
  384. package/src/utils/units.ts +32 -0
  385. package/src/utils/validation.ts +35 -0
  386. package/src/version.ts +1 -1
  387. package/dist/cjs/dex/hyperliquid.d.ts +0 -3
  388. package/dist/cjs/dex/hyperliquid.d.ts.map +0 -1
  389. package/dist/cjs/dex/hyperliquid.js +0 -21
  390. package/dist/cjs/dex/hyperliquid.js.map +0 -1
  391. package/dist/cjs/dex/registry.d.ts +0 -3
  392. package/dist/cjs/dex/registry.d.ts.map +0 -1
  393. package/dist/cjs/dex/registry.js +0 -16
  394. package/dist/cjs/dex/registry.js.map +0 -1
  395. package/dist/cjs/dex/types.d.ts +0 -13
  396. package/dist/cjs/dex/types.d.ts.map +0 -1
  397. package/dist/cjs/dex/types.js +0 -3
  398. package/dist/cjs/dex/types.js.map +0 -1
  399. package/dist/cjs/errors/AgentError.d.ts +0 -10
  400. package/dist/cjs/errors/AgentError.d.ts.map +0 -1
  401. package/dist/cjs/errors/AgentError.js +0 -23
  402. package/dist/cjs/errors/AgentError.js.map +0 -1
  403. package/dist/cjs/errors/HTTPError.d.ts +0 -11
  404. package/dist/cjs/errors/HTTPError.d.ts.map +0 -1
  405. package/dist/cjs/errors/HTTPError.js +0 -62
  406. package/dist/cjs/errors/HTTPError.js.map +0 -1
  407. package/dist/cjs/errors/PerpsSDKError.d.ts +0 -9
  408. package/dist/cjs/errors/PerpsSDKError.d.ts.map +0 -1
  409. package/dist/cjs/errors/PerpsSDKError.js +0 -36
  410. package/dist/cjs/errors/PerpsSDKError.js.map +0 -1
  411. package/dist/cjs/errors/ServerError.d.ts +0 -10
  412. package/dist/cjs/errors/ServerError.d.ts.map +0 -1
  413. package/dist/cjs/errors/ServerError.js +0 -24
  414. package/dist/cjs/errors/ServerError.js.map +0 -1
  415. package/dist/cjs/errors/ValidationError.d.ts +0 -9
  416. package/dist/cjs/errors/ValidationError.d.ts.map +0 -1
  417. package/dist/cjs/errors/ValidationError.js +0 -23
  418. package/dist/cjs/errors/ValidationError.js.map +0 -1
  419. package/dist/cjs/errors/utils/rootCause.d.ts +0 -6
  420. package/dist/cjs/errors/utils/rootCause.d.ts.map +0 -1
  421. package/dist/cjs/errors/utils/rootCause.js +0 -41
  422. package/dist/cjs/errors/utils/rootCause.js.map +0 -1
  423. package/dist/cjs/services/cancelOrder.d.ts +0 -10
  424. package/dist/cjs/services/cancelOrder.d.ts.map +0 -1
  425. package/dist/cjs/services/cancelOrder.js +0 -16
  426. package/dist/cjs/services/cancelOrder.js.map +0 -1
  427. package/dist/cjs/services/createAuthorization.d.ts +0 -10
  428. package/dist/cjs/services/createAuthorization.d.ts.map +0 -1
  429. package/dist/cjs/services/createAuthorization.js +0 -16
  430. package/dist/cjs/services/createAuthorization.js.map +0 -1
  431. package/dist/cjs/services/createOrder.d.ts +0 -21
  432. package/dist/cjs/services/createOrder.d.ts.map +0 -1
  433. package/dist/cjs/services/createOrder.js +0 -27
  434. package/dist/cjs/services/createOrder.js.map +0 -1
  435. package/dist/cjs/services/createWithdrawal.d.ts +0 -9
  436. package/dist/cjs/services/createWithdrawal.d.ts.map +0 -1
  437. package/dist/cjs/services/createWithdrawal.js +0 -15
  438. package/dist/cjs/services/createWithdrawal.js.map +0 -1
  439. package/dist/cjs/services/getDexes.d.ts +0 -4
  440. package/dist/cjs/services/getDexes.d.ts.map +0 -1
  441. package/dist/cjs/services/getDexes.js.map +0 -1
  442. package/dist/cjs/services/getHistory.d.ts +0 -10
  443. package/dist/cjs/services/getHistory.d.ts.map +0 -1
  444. package/dist/cjs/services/getHistory.js.map +0 -1
  445. package/dist/cjs/services/getMarket.d.ts +0 -8
  446. package/dist/cjs/services/getMarket.d.ts.map +0 -1
  447. package/dist/cjs/services/getMarket.js.map +0 -1
  448. package/dist/cjs/services/getMarkets.d.ts +0 -7
  449. package/dist/cjs/services/getMarkets.d.ts.map +0 -1
  450. package/dist/cjs/services/getMarkets.js.map +0 -1
  451. package/dist/cjs/services/submitAuthorization.d.ts +0 -10
  452. package/dist/cjs/services/submitAuthorization.d.ts.map +0 -1
  453. package/dist/cjs/services/submitAuthorization.js.map +0 -1
  454. package/dist/cjs/services/submitOrder.d.ts +0 -10
  455. package/dist/cjs/services/submitOrder.d.ts.map +0 -1
  456. package/dist/cjs/services/submitOrder.js.map +0 -1
  457. package/dist/cjs/services/submitWithdrawal.d.ts +0 -9
  458. package/dist/cjs/services/submitWithdrawal.d.ts.map +0 -1
  459. package/dist/cjs/services/submitWithdrawal.js +0 -15
  460. package/dist/cjs/services/submitWithdrawal.js.map +0 -1
  461. package/dist/esm/dex/hyperliquid.d.ts +0 -3
  462. package/dist/esm/dex/hyperliquid.d.ts.map +0 -1
  463. package/dist/esm/dex/hyperliquid.js +0 -19
  464. package/dist/esm/dex/hyperliquid.js.map +0 -1
  465. package/dist/esm/dex/registry.d.ts +0 -3
  466. package/dist/esm/dex/registry.d.ts.map +0 -1
  467. package/dist/esm/dex/registry.js +0 -13
  468. package/dist/esm/dex/registry.js.map +0 -1
  469. package/dist/esm/dex/types.d.ts +0 -15
  470. package/dist/esm/dex/types.d.ts.map +0 -1
  471. package/dist/esm/dex/types.js +0 -2
  472. package/dist/esm/dex/types.js.map +0 -1
  473. package/dist/esm/errors/AgentError.d.ts +0 -25
  474. package/dist/esm/errors/AgentError.d.ts.map +0 -1
  475. package/dist/esm/errors/AgentError.js +0 -35
  476. package/dist/esm/errors/AgentError.js.map +0 -1
  477. package/dist/esm/errors/HTTPError.d.ts +0 -11
  478. package/dist/esm/errors/HTTPError.d.ts.map +0 -1
  479. package/dist/esm/errors/HTTPError.js +0 -61
  480. package/dist/esm/errors/HTTPError.js.map +0 -1
  481. package/dist/esm/errors/PerpsSDKError.d.ts +0 -40
  482. package/dist/esm/errors/PerpsSDKError.d.ts.map +0 -1
  483. package/dist/esm/errors/PerpsSDKError.js +0 -67
  484. package/dist/esm/errors/PerpsSDKError.js.map +0 -1
  485. package/dist/esm/errors/ServerError.d.ts +0 -23
  486. package/dist/esm/errors/ServerError.d.ts.map +0 -1
  487. package/dist/esm/errors/ServerError.js +0 -34
  488. package/dist/esm/errors/ServerError.js.map +0 -1
  489. package/dist/esm/errors/ValidationError.d.ts +0 -23
  490. package/dist/esm/errors/ValidationError.d.ts.map +0 -1
  491. package/dist/esm/errors/ValidationError.js +0 -34
  492. package/dist/esm/errors/ValidationError.js.map +0 -1
  493. package/dist/esm/errors/utils/rootCause.d.ts +0 -71
  494. package/dist/esm/errors/utils/rootCause.d.ts.map +0 -1
  495. package/dist/esm/errors/utils/rootCause.js +0 -99
  496. package/dist/esm/errors/utils/rootCause.js.map +0 -1
  497. package/dist/esm/services/cancelOrder.d.ts +0 -51
  498. package/dist/esm/services/cancelOrder.d.ts.map +0 -1
  499. package/dist/esm/services/cancelOrder.js +0 -50
  500. package/dist/esm/services/cancelOrder.js.map +0 -1
  501. package/dist/esm/services/createAuthorization.d.ts +0 -51
  502. package/dist/esm/services/createAuthorization.d.ts.map +0 -1
  503. package/dist/esm/services/createAuthorization.js +0 -50
  504. package/dist/esm/services/createAuthorization.js.map +0 -1
  505. package/dist/esm/services/createOrder.d.ts +0 -74
  506. package/dist/esm/services/createOrder.d.ts.map +0 -1
  507. package/dist/esm/services/createOrder.js +0 -62
  508. package/dist/esm/services/createOrder.js.map +0 -1
  509. package/dist/esm/services/createWithdrawal.d.ts +0 -49
  510. package/dist/esm/services/createWithdrawal.d.ts.map +0 -1
  511. package/dist/esm/services/createWithdrawal.js +0 -49
  512. package/dist/esm/services/createWithdrawal.js.map +0 -1
  513. package/dist/esm/services/getDexes.d.ts +0 -20
  514. package/dist/esm/services/getDexes.d.ts.map +0 -1
  515. package/dist/esm/services/getDexes.js +0 -21
  516. package/dist/esm/services/getDexes.js.map +0 -1
  517. package/dist/esm/services/getHistory.d.ts.map +0 -1
  518. package/dist/esm/services/getHistory.js.map +0 -1
  519. package/dist/esm/services/getMarket.d.ts +0 -27
  520. package/dist/esm/services/getMarket.d.ts.map +0 -1
  521. package/dist/esm/services/getMarket.js +0 -25
  522. package/dist/esm/services/getMarket.js.map +0 -1
  523. package/dist/esm/services/getMarkets.d.ts +0 -25
  524. package/dist/esm/services/getMarkets.d.ts.map +0 -1
  525. package/dist/esm/services/getMarkets.js +0 -23
  526. package/dist/esm/services/getMarkets.js.map +0 -1
  527. package/dist/esm/services/submitAuthorization.d.ts +0 -42
  528. package/dist/esm/services/submitAuthorization.d.ts.map +0 -1
  529. package/dist/esm/services/submitAuthorization.js +0 -41
  530. package/dist/esm/services/submitAuthorization.js.map +0 -1
  531. package/dist/esm/services/submitOrder.d.ts +0 -44
  532. package/dist/esm/services/submitOrder.d.ts.map +0 -1
  533. package/dist/esm/services/submitOrder.js +0 -43
  534. package/dist/esm/services/submitOrder.js.map +0 -1
  535. package/dist/esm/services/submitWithdrawal.d.ts +0 -40
  536. package/dist/esm/services/submitWithdrawal.d.ts.map +0 -1
  537. package/dist/esm/services/submitWithdrawal.js +0 -40
  538. package/dist/esm/services/submitWithdrawal.js.map +0 -1
  539. package/dist/types/dex/hyperliquid.d.ts +0 -3
  540. package/dist/types/dex/hyperliquid.d.ts.map +0 -1
  541. package/dist/types/dex/registry.d.ts +0 -3
  542. package/dist/types/dex/registry.d.ts.map +0 -1
  543. package/dist/types/dex/types.d.ts +0 -15
  544. package/dist/types/dex/types.d.ts.map +0 -1
  545. package/dist/types/errors/AgentError.d.ts +0 -25
  546. package/dist/types/errors/AgentError.d.ts.map +0 -1
  547. package/dist/types/errors/HTTPError.d.ts +0 -11
  548. package/dist/types/errors/HTTPError.d.ts.map +0 -1
  549. package/dist/types/errors/PerpsSDKError.d.ts +0 -40
  550. package/dist/types/errors/PerpsSDKError.d.ts.map +0 -1
  551. package/dist/types/errors/ServerError.d.ts +0 -23
  552. package/dist/types/errors/ServerError.d.ts.map +0 -1
  553. package/dist/types/errors/ValidationError.d.ts +0 -23
  554. package/dist/types/errors/ValidationError.d.ts.map +0 -1
  555. package/dist/types/errors/utils/rootCause.d.ts +0 -71
  556. package/dist/types/errors/utils/rootCause.d.ts.map +0 -1
  557. package/dist/types/services/cancelOrder.d.ts +0 -51
  558. package/dist/types/services/cancelOrder.d.ts.map +0 -1
  559. package/dist/types/services/createAuthorization.d.ts +0 -51
  560. package/dist/types/services/createAuthorization.d.ts.map +0 -1
  561. package/dist/types/services/createOrder.d.ts +0 -74
  562. package/dist/types/services/createOrder.d.ts.map +0 -1
  563. package/dist/types/services/createWithdrawal.d.ts +0 -49
  564. package/dist/types/services/createWithdrawal.d.ts.map +0 -1
  565. package/dist/types/services/getDexes.d.ts +0 -20
  566. package/dist/types/services/getDexes.d.ts.map +0 -1
  567. package/dist/types/services/getHistory.d.ts.map +0 -1
  568. package/dist/types/services/getMarket.d.ts +0 -27
  569. package/dist/types/services/getMarket.d.ts.map +0 -1
  570. package/dist/types/services/getMarkets.d.ts +0 -25
  571. package/dist/types/services/getMarkets.d.ts.map +0 -1
  572. package/dist/types/services/submitAuthorization.d.ts +0 -42
  573. package/dist/types/services/submitAuthorization.d.ts.map +0 -1
  574. package/dist/types/services/submitOrder.d.ts +0 -44
  575. package/dist/types/services/submitOrder.d.ts.map +0 -1
  576. package/dist/types/services/submitWithdrawal.d.ts +0 -40
  577. package/dist/types/services/submitWithdrawal.d.ts.map +0 -1
  578. package/src/dex/hyperliquid.ts +0 -20
  579. package/src/dex/registry.ts +0 -15
  580. package/src/dex/types.ts +0 -16
  581. package/src/errors/AgentError.ts +0 -43
  582. package/src/errors/HTTPError.ts +0 -72
  583. package/src/errors/PerpsSDKError.ts +0 -79
  584. package/src/errors/ServerError.ts +0 -41
  585. package/src/errors/ValidationError.ts +0 -38
  586. package/src/errors/utils/rootCause.ts +0 -112
  587. package/src/services/cancelOrder.ts +0 -75
  588. package/src/services/createAuthorization.ts +0 -79
  589. package/src/services/createOrder.ts +0 -116
  590. package/src/services/createWithdrawal.ts +0 -76
  591. package/src/services/getMarket.ts +0 -41
  592. package/src/services/getMarkets.ts +0 -37
  593. package/src/services/submitAuthorization.ts +0 -70
  594. package/src/services/submitOrder.ts +0 -72
  595. package/src/services/submitWithdrawal.ts +0 -67
@@ -1,438 +1,432 @@
1
- import { PerpsErrorCode } from '@lifi/perps-types';
2
- import { getDexAuthProvider } from '../dex/registry.js';
1
+ import { ActionType, PerpsErrorCode, PerpsSigner } from '@lifi/perps-types';
2
+ import { localStorageAdapter } from '../agent/storage.js';
3
3
  import { PerpsErrorMessage } from '../errors/constants.js';
4
4
  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';
5
+ import { createAction } from '../services/createAction.js';
6
+ import { executeAction } from '../services/executeAction.js';
7
+ import { getProviders } from '../services/getProviders.js';
12
8
  import { signTypedData } from '../utils/signTypedData.js';
13
9
  import { createPerpsClient } from './createPerpsClient.js';
14
- /**
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 ...
43
- *
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
- * ```
55
- */
10
+ import { SigningMode, } from './types.js';
56
11
  export class PerpsClient {
57
12
  sdkClient;
13
+ storage;
58
14
  signingModes = new Map();
15
+ providerMetadataCache = new Map();
59
16
  constructor(options) {
17
+ this.storage = options.storage ?? localStorageAdapter;
60
18
  this.sdkClient = createPerpsClient({
61
19
  integrator: options.integrator,
62
20
  apiKey: options.apiKey,
63
21
  apiUrl: options.apiUrl,
64
- storage: options.storage,
22
+ storage: this.storage,
23
+ providers: options.providers,
65
24
  });
66
25
  }
67
- /**
68
- * Get the underlying SDK client for use with service functions.
69
- */
70
26
  get client() {
71
27
  return this.sdkClient;
72
28
  }
73
- /**
74
- * Get the storage key for a user + DEX pair.
75
- */
76
- modeKey(address, dex) {
77
- return `${address.toLowerCase()}:${dex.toLowerCase()}`;
78
- }
79
- /**
80
- * Set the signing mode for a user + DEX pair.
81
- *
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
87
- */
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);
94
- }
29
+ modeKey(address, provider) {
30
+ return `${address.toLowerCase()}:${provider.toLowerCase()}`;
95
31
  }
96
- /**
97
- * Get the current signing mode for a user + DEX pair.
98
- * Defaults to `USER` if not set.
99
- */
100
- getSigningMode(address, dex) {
101
- return this.signingModes.get(this.modeKey(address, dex)) ?? 'USER';
102
- }
103
- /**
104
- * Get the agent address for a user + DEX pair.
105
- *
106
- * @throws {PerpsError} If in USER mode or agent not found
107
- */
108
- async getAgentAddress(address, dex) {
109
- const agent = await this.sdkClient.agentManager.getAgent(address, dex);
110
- return agent.address;
32
+ signingModeStorageKey(address, provider) {
33
+ return `lifi-perps-mode:${address.toLowerCase()}:${provider.toLowerCase()}`;
111
34
  }
112
- /**
113
- * Check if an agent exists for a user + DEX pair.
114
- */
115
- async hasAgent(address, dex) {
116
- return this.sdkClient.agentManager.hasAgent(address, dex);
117
- }
118
- /**
119
- * Remove the agent for a user + DEX pair.
120
- * Also resets signing mode to USER.
121
- */
122
- async removeAgent(address, dex) {
123
- await this.sdkClient.agentManager.removeAgent(address, dex);
124
- this.signingModes.delete(this.modeKey(address, dex));
125
- }
126
- /**
127
- * Build authorization payloads for signing.
128
- *
129
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
130
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
131
- *
132
- * @param params - Authorization parameters
133
- * @returns Authorization actions with typed data for signing
134
- */
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;
35
+ async getProviderMetadata(provider) {
36
+ const cached = this.providerMetadataCache.get(provider);
37
+ if (cached) {
38
+ return cached;
141
39
  }
142
- return createAuthorization(this.sdkClient, {
143
- ...params,
144
- signerAddress,
145
- });
146
- }
147
- /**
148
- * Submit signed authorizations.
149
- *
150
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
151
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
152
- *
153
- * @param params - Signed authorization parameters
154
- */
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;
40
+ const { providers } = await getProviders(this.sdkClient);
41
+ for (const d of providers) {
42
+ this.providerMetadataCache.set(d.key, d);
161
43
  }
162
- return submitAuthorization(this.sdkClient, { ...params, signerAddress });
163
- }
164
- /**
165
- * Build order payloads for signing.
166
- *
167
- * In `USER` mode, `signerAddress` is omitted (backend defaults to `address`).
168
- * In `USER_AGENT` mode, auto-injects the agent address as `signerAddress`.
169
- *
170
- * @param params - Order parameters
171
- * @returns Order actions with typed data for signing
172
- */
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;
44
+ const metadata = this.providerMetadataCache.get(provider);
45
+ if (!metadata) {
46
+ const error = new PerpsError(PerpsErrorCode.SDKError, `Unsupported provider: ${provider}`);
47
+ error.tool = '@lifi/perps-sdk';
48
+ throw error;
179
49
  }
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
- });
50
+ return metadata;
197
51
  }
198
- /**
199
- * Build cancel order payloads for signing.
200
- *
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
206
- */
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;
213
- }
214
- return cancelOrder(this.sdkClient, {
215
- dex: params.dex,
216
- address: params.address,
217
- signerAddress,
218
- ids: params.ids,
52
+ buildPrerequisiteInputs(prerequisites, mode, agentAddress) {
53
+ return prerequisites
54
+ .filter((p) => {
55
+ if (mode === SigningMode.USER) {
56
+ if (!p.signers.includes(PerpsSigner.USER)) {
57
+ return false;
58
+ }
59
+ if (p.type === ActionType.APPROVE_AGENT) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+ if (p.signers.includes(PerpsSigner.USER) &&
65
+ !p.signers.includes(PerpsSigner.AGENT) &&
66
+ p.type === ActionType.USER_SET_ABSTRACTION) {
67
+ return false;
68
+ }
69
+ return true;
70
+ })
71
+ .map((p) => {
72
+ const params = {};
73
+ if (p.type === ActionType.APPROVE_AGENT && agentAddress) {
74
+ params.agentAddress = agentAddress;
75
+ }
76
+ return {
77
+ key: p.type,
78
+ ...(Object.keys(params).length > 0 ? { params } : {}),
79
+ };
219
80
  });
220
81
  }
221
- /**
222
- * Place an order with automatic agent signing.
223
- *
224
- * **Requires USER_AGENT mode.** For USER mode, use `buildOrder()` + `submitSignedOrder()`.
225
- *
226
- * @param params - Order parameters
227
- * @returns Order submission results
228
- * @throws {PerpsError} If not in USER_AGENT mode
229
- */
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.`);
82
+ async resolveSignerForAction(action, address, provider) {
83
+ const mode = await this.loadSigningMode(address, provider);
84
+ if (mode !== SigningMode.USER_AGENT) {
85
+ return undefined;
234
86
  }
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,
265
- actions: signedActions,
266
- });
87
+ // Check if this action supports agent signing
88
+ const metadata = await this.getProviderMetadata(provider);
89
+ const allActions = [...metadata.prepareAccountActions, ...metadata.actions];
90
+ const descriptor = allActions.find((d) => d.type === action);
91
+ if (!descriptor?.signers.includes(PerpsSigner.AGENT)) {
92
+ return undefined;
93
+ }
94
+ const agent = await this.sdkClient.agentManager.getAgent(address, provider);
95
+ return agent.address;
267
96
  }
268
- /**
269
- * Cancel orders with automatic agent signing.
270
- *
271
- * **Requires USER_AGENT mode.** For USER mode, use `buildCancelOrder()` + `submitSignedOrder()`.
272
- *
273
- * @param params - Cancel parameters
274
- * @returns Cancel submission results
275
- * @throws {PerpsError} If not in USER_AGENT mode
276
- */
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.`);
97
+ requireAgentMode(address, provider, method) {
98
+ const mode = this.getSigningMode(address, provider);
99
+ if (mode !== SigningMode.USER_AGENT) {
100
+ const error = new PerpsError(PerpsErrorCode.SDKError, `${PerpsErrorMessage.InvalidSigningMode} ${method} requires USER_AGENT mode.`);
101
+ error.tool = '@lifi/perps-sdk';
102
+ throw error;
281
103
  }
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
104
+ }
105
+ async autoSignAndExecute(provider, address, action, actions) {
106
+ const agent = await this.sdkClient.agentManager.getAgent(address, provider);
291
107
  const signedActions = await Promise.all(actions.map(async (a) => ({
292
108
  action: a.action,
293
109
  typedData: a.typedData,
294
110
  signature: await signTypedData(agent.privateKey, a.typedData),
295
111
  })));
296
- // 3. Submit
297
- return submitOrder(this.sdkClient, {
298
- dex: params.dex,
299
- address: params.address,
112
+ return executeAction(this.sdkClient, {
113
+ provider,
114
+ address,
300
115
  signerAddress: agent.address,
116
+ action,
301
117
  actions: signedActions,
302
118
  });
303
119
  }
304
- /**
305
- * Submit pre-signed order actions.
306
- *
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`).
309
- *
310
- * @param params - Signed order parameters
311
- */
312
- async submitSignedOrder(params) {
313
- return submitOrder(this.sdkClient, params);
314
- }
315
- /**
316
- * Build a withdrawal payload for the user to sign.
317
- *
318
- * Withdrawals are user-signed only — agents cannot initiate withdrawals.
319
- * No agent injection is performed regardless of signing mode.
320
- *
321
- * @param params - Withdrawal parameters
322
- * @returns Withdrawal action with typed data for signing
323
- */
324
- async buildWithdrawal(params) {
325
- return createWithdrawal(this.sdkClient, {
326
- dex: params.dex,
120
+ // ---------------------------------------------------------------------------
121
+ // Generic action helpers
122
+ // ---------------------------------------------------------------------------
123
+ async buildAction(action, params) {
124
+ const signerAddress = await this.resolveSignerForAction(action, params.address, params.provider);
125
+ return createAction(this.sdkClient, {
126
+ provider: params.provider,
327
127
  address: params.address,
328
- withdrawal: params.withdrawal,
128
+ signerAddress,
129
+ action,
130
+ params: params.params,
329
131
  });
330
132
  }
331
- /**
332
- * Submit a signed withdrawal.
333
- *
334
- * Withdrawals are user-signed only — agents cannot initiate withdrawals.
335
- *
336
- * @param params - Signed withdrawal parameters
337
- * @returns Withdrawal result
338
- */
339
- async submitWithdrawal(params) {
340
- return submitWithdrawal(this.sdkClient, params);
341
- }
342
- /**
343
- * Determine which authorizations (if any) the user needs to sign before trading.
344
- *
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.
348
- *
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
351
- */
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
133
+ async submitSignedAction(action, params) {
134
+ return executeAction(this.sdkClient, { ...params, action });
135
+ }
136
+ // ---------------------------------------------------------------------------
137
+ // Signing mode management
138
+ // ---------------------------------------------------------------------------
139
+ async setSigningMode(address, provider, mode) {
140
+ const key = this.modeKey(address, provider);
141
+ this.signingModes.set(key, mode);
142
+ await this.storage.set(this.signingModeStorageKey(address, provider), mode);
143
+ if (mode === SigningMode.USER_AGENT) {
144
+ await this.sdkClient.agentManager.getOrCreateAgent(address, provider);
145
+ }
146
+ }
147
+ getSigningMode(address, provider) {
148
+ return (this.signingModes.get(this.modeKey(address, provider)) ??
149
+ SigningMode.USER_AGENT);
150
+ }
151
+ async loadSigningMode(address, provider) {
152
+ const key = this.modeKey(address, provider);
153
+ if (this.signingModes.has(key)) {
154
+ return this.signingModes.get(key);
155
+ }
156
+ const stored = await this.storage.get(this.signingModeStorageKey(address, provider));
157
+ const mode = stored === SigningMode.USER_AGENT || stored === SigningMode.USER
158
+ ? stored
159
+ : SigningMode.USER_AGENT;
160
+ this.signingModes.set(key, mode);
161
+ return mode;
162
+ }
163
+ async loadAgentMode(address, provider) {
164
+ const mode = await this.loadSigningMode(address, provider);
165
+ return mode === SigningMode.USER_AGENT;
166
+ }
167
+ async setAgentMode(address, provider, useAgent) {
168
+ await this.setSigningMode(address, provider, useAgent ? SigningMode.USER_AGENT : SigningMode.USER);
169
+ }
170
+ async getAgentAddress(address, provider) {
171
+ const agent = await this.sdkClient.agentManager.getAgent(address, provider);
172
+ return agent.address;
173
+ }
174
+ async hasAgent(address, provider) {
175
+ return this.sdkClient.agentManager.hasAgent(address, provider);
176
+ }
177
+ async removeAgent(address, provider) {
178
+ await this.sdkClient.agentManager.removeAgent(address, provider);
179
+ this.signingModes.delete(this.modeKey(address, provider));
180
+ await this.storage.remove(this.signingModeStorageKey(address, provider));
181
+ }
182
+ // ---------------------------------------------------------------------------
183
+ // Prerequisites (was: authorizations)
184
+ // ---------------------------------------------------------------------------
185
+ async checkPrerequisites(params) {
186
+ const { provider, address } = params;
187
+ const mode = await this.loadSigningMode(address, provider);
357
188
  let agentAddress;
358
- if (mode === 'USER_AGENT') {
359
- const agent = await this.sdkClient.agentManager.getOrCreateAgent(address, dex);
189
+ if (mode === SigningMode.USER_AGENT) {
190
+ const agent = await this.sdkClient.agentManager.getOrCreateAgent(address, provider);
360
191
  agentAddress = agent.address;
361
192
  }
362
- // Provider declares auth inputs categorized as user/agent
363
- const authInputs = provider.getAuthorizationInputs({
364
- signingMode: mode,
365
- agentAddress,
366
- });
367
- const allInputs = [...authInputs.user, ...authInputs.agent];
193
+ const metadata = await this.getProviderMetadata(provider);
194
+ const allInputs = this.buildPrerequisiteInputs(metadata.prepareAccountActions, mode, agentAddress);
368
195
  if (allInputs.length === 0) {
369
- return { userAuthorizations: [], agentAuthorizations: [], isReady: true };
196
+ return { userPrerequisites: [], agentPrerequisites: [], isReady: true };
197
+ }
198
+ // Build a signer lookup from action descriptors
199
+ const signersByAction = new Map();
200
+ for (const desc of metadata.prepareAccountActions) {
201
+ signersByAction.set(desc.type, desc.signers);
370
202
  }
371
- // Send ALL to backend it filters already-satisfied ones and returns typed data
372
- const { actions } = await this.buildAuthorization({
373
- dex,
203
+ // Send all to backend via createAction for the first prerequisite type
204
+ // The backend filters already-satisfied ones and returns typed data
205
+ const { actions } = await this.buildPrerequisites({
206
+ provider,
374
207
  address,
375
- authorizations: allInputs,
208
+ signerAddress: agentAddress,
376
209
  });
377
210
  if (actions.length === 0) {
378
- return { userAuthorizations: [], agentAuthorizations: [], isReady: true };
211
+ return { userPrerequisites: [], agentPrerequisites: [], isReady: true };
379
212
  }
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));
213
+ const userPrerequisites = actions.filter((a) => {
214
+ const signers = signersByAction.get(a.action) ?? [];
215
+ return signers.includes(PerpsSigner.USER);
216
+ });
217
+ const agentPrerequisites = actions.filter((a) => {
218
+ const signers = signersByAction.get(a.action) ?? [];
219
+ return signers.includes(PerpsSigner.AGENT);
220
+ });
384
221
  return {
385
- userAuthorizations,
386
- agentAuthorizations,
222
+ userPrerequisites,
223
+ agentPrerequisites,
387
224
  isReady: false,
388
225
  };
389
226
  }
390
- /**
391
- * Execute authorizations: submit user-signed actions, then auto-sign and submit
392
- * any agent authorizations.
393
- *
394
- * @param params - User-signed actions and the required authorizations result
395
- * @returns Combined results from user and agent submissions
396
- */
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)
227
+ async buildPrerequisites(params) {
228
+ const mode = await this.loadSigningMode(params.address, params.provider);
229
+ let { signerAddress } = params;
230
+ if (mode === SigningMode.USER_AGENT && !signerAddress) {
231
+ const agent = await this.sdkClient.agentManager.getAgent(params.address, params.provider);
232
+ signerAddress = agent.address;
233
+ }
234
+ const metadata = await this.getProviderMetadata(params.provider);
235
+ const allInputs = this.buildPrerequisiteInputs(metadata.prepareAccountActions, mode, signerAddress);
236
+ // Use the first prerequisite type as the action type for the batch
237
+ // The backend handles all prerequisites in a single createPrerequisite call
238
+ const allActions = [];
239
+ for (const input of allInputs) {
240
+ const { actions } = await createAction(this.sdkClient, {
241
+ provider: params.provider,
242
+ address: params.address,
243
+ signerAddress,
244
+ action: input.key,
245
+ params: (input.params ?? {}),
246
+ });
247
+ allActions.push(...actions);
248
+ }
249
+ return { actions: allActions };
250
+ }
251
+ async executePrerequisites(params) {
252
+ const { provider, address, required, userSignedActions } = params;
253
+ const mode = await this.loadSigningMode(address, provider);
254
+ // 1. Submit user-signed prerequisites
401
255
  let userResults = { results: [] };
402
256
  if (userSignedActions.length > 0) {
403
- const signerAddress = mode === 'USER_AGENT'
404
- ? (await this.sdkClient.agentManager.getAgent(address, dex)).address
257
+ const signerAddress = mode === SigningMode.USER_AGENT
258
+ ? (await this.sdkClient.agentManager.getAgent(address, provider))
259
+ .address
405
260
  : address;
406
- userResults = await submitAuthorization(this.sdkClient, {
407
- dex,
261
+ // Submit all user-signed actions — use first action's type for routing
262
+ const firstAction = required.userPrerequisites[0]?.action;
263
+ userResults = await executeAction(this.sdkClient, {
264
+ provider,
408
265
  address,
409
266
  signerAddress,
267
+ action: (firstAction ?? ActionType.APPROVE_AGENT),
410
268
  actions: userSignedActions,
411
269
  });
412
- // Check for failures - return early if any user auth failed
413
- const failed = userResults.results.find((r) => !r.success);
414
- if (failed) {
270
+ const mandatoryFailure = userResults.results.find((r) => !r.success);
271
+ if (mandatoryFailure) {
415
272
  return { userResults };
416
273
  }
417
274
  }
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) => ({
275
+ // 2. Auto-sign and submit agent prerequisites
276
+ if (required.agentPrerequisites.length > 0 &&
277
+ mode === SigningMode.USER_AGENT) {
278
+ const agent = await this.sdkClient.agentManager.getAgent(address, provider);
279
+ const signedAgentActions = await Promise.all(required.agentPrerequisites.map(async (action) => ({
423
280
  action: action.action,
424
281
  typedData: action.typedData,
425
282
  signature: await signTypedData(agent.privateKey, action.typedData),
426
283
  })));
427
- const agentResults = await submitAuthorization(this.sdkClient, {
428
- dex,
284
+ const firstAction = required.agentPrerequisites[0]?.action;
285
+ const agentResults = await executeAction(this.sdkClient, {
286
+ provider,
429
287
  address,
430
288
  signerAddress: agent.address,
289
+ action: (firstAction ?? ActionType.AGENT_SET_ABSTRACTION),
431
290
  actions: signedAgentActions,
432
291
  });
292
+ // If AGENT_SET_ABSTRACTION failed (e.g. dexAbstraction → unified upgrade),
293
+ // fall back to USER_SET_ABSTRACTION so the user can sign it manually.
294
+ const abstractionFailed = agentResults.results.some((r) => !r.success && r.action === ActionType.AGENT_SET_ABSTRACTION);
295
+ if (abstractionFailed) {
296
+ const { actions: fallbackActions } = await createAction(this.sdkClient, {
297
+ provider,
298
+ address,
299
+ action: ActionType.USER_SET_ABSTRACTION,
300
+ params: {},
301
+ });
302
+ if (fallbackActions.length > 0) {
303
+ return {
304
+ userResults,
305
+ agentResults,
306
+ fallbackUserPrerequisites: fallbackActions,
307
+ };
308
+ }
309
+ }
433
310
  return { userResults, agentResults };
434
311
  }
435
312
  return { userResults };
436
313
  }
314
+ // ---------------------------------------------------------------------------
315
+ // Trading — build (USER mode) methods
316
+ // ---------------------------------------------------------------------------
317
+ async buildOrder(params) {
318
+ return this.buildAction(ActionType.PLACE_ORDER, {
319
+ provider: params.provider,
320
+ address: params.address,
321
+ params: {
322
+ asset: params.asset,
323
+ side: params.side,
324
+ type: params.type,
325
+ size: params.size,
326
+ price: params.price,
327
+ leverage: params.leverage,
328
+ reduceOnly: params.reduceOnly,
329
+ timeInForce: params.timeInForce,
330
+ expiresAt: params.expiresAt,
331
+ takeProfit: params.takeProfit,
332
+ stopLoss: params.stopLoss,
333
+ },
334
+ });
335
+ }
336
+ async buildTriggerOrder(params) {
337
+ return this.buildAction(ActionType.PLACE_TRIGGER_ORDER, {
338
+ provider: params.provider,
339
+ address: params.address,
340
+ params: {
341
+ asset: params.asset,
342
+ side: params.side,
343
+ takeProfit: params.takeProfit,
344
+ stopLoss: params.stopLoss,
345
+ },
346
+ });
347
+ }
348
+ async buildCancelOrder(params) {
349
+ return this.buildAction(ActionType.CANCEL_ORDER, {
350
+ provider: params.provider,
351
+ address: params.address,
352
+ params: { ids: params.ids },
353
+ });
354
+ }
355
+ async buildModifyOrder(params) {
356
+ return this.buildAction(ActionType.MODIFY_ORDER, {
357
+ provider: params.provider,
358
+ address: params.address,
359
+ params: {
360
+ modifications: params.modifications,
361
+ },
362
+ });
363
+ }
364
+ async buildPositionMargin(params) {
365
+ return this.buildAction(ActionType.UPDATE_POSITION_MARGIN, {
366
+ provider: params.provider,
367
+ address: params.address,
368
+ params: {
369
+ asset: params.asset,
370
+ action: params.action,
371
+ amount: params.amount,
372
+ },
373
+ });
374
+ }
375
+ async buildWithdrawal(params) {
376
+ return this.buildAction(ActionType.WITHDRAWAL, {
377
+ provider: params.provider,
378
+ address: params.address,
379
+ params: params.withdrawal,
380
+ });
381
+ }
382
+ // ---------------------------------------------------------------------------
383
+ // Trading — submit signed actions (USER mode)
384
+ // ---------------------------------------------------------------------------
385
+ async submitSignedOrder(params) {
386
+ return this.submitSignedAction(ActionType.PLACE_ORDER, params);
387
+ }
388
+ async submitSignedPosition(params) {
389
+ return this.submitSignedAction(ActionType.UPDATE_POSITION_MARGIN, params);
390
+ }
391
+ async submitWithdrawal(params) {
392
+ return this.submitSignedAction(ActionType.WITHDRAWAL, {
393
+ provider: params.provider,
394
+ address: params.address,
395
+ actions: [params.action],
396
+ });
397
+ }
398
+ // ---------------------------------------------------------------------------
399
+ // Trading — auto-sign (USER_AGENT mode)
400
+ // ---------------------------------------------------------------------------
401
+ async placeOrder(params) {
402
+ await this.loadSigningMode(params.address, params.provider);
403
+ this.requireAgentMode(params.address, params.provider, 'placeOrder()');
404
+ const { actions } = await this.buildOrder(params);
405
+ return this.autoSignAndExecute(params.provider, params.address, ActionType.PLACE_ORDER, actions);
406
+ }
407
+ async placeTriggerOrder(params) {
408
+ await this.loadSigningMode(params.address, params.provider);
409
+ this.requireAgentMode(params.address, params.provider, 'placeTriggerOrder()');
410
+ const { actions } = await this.buildTriggerOrder(params);
411
+ return this.autoSignAndExecute(params.provider, params.address, ActionType.PLACE_TRIGGER_ORDER, actions);
412
+ }
413
+ async cancelOrders(params) {
414
+ await this.loadSigningMode(params.address, params.provider);
415
+ this.requireAgentMode(params.address, params.provider, 'cancelOrders()');
416
+ const { actions } = await this.buildCancelOrder(params);
417
+ return this.autoSignAndExecute(params.provider, params.address, ActionType.CANCEL_ORDER, actions);
418
+ }
419
+ async modifyOrders(params) {
420
+ await this.loadSigningMode(params.address, params.provider);
421
+ this.requireAgentMode(params.address, params.provider, 'modifyOrders()');
422
+ const { actions } = await this.buildModifyOrder(params);
423
+ return this.autoSignAndExecute(params.provider, params.address, ActionType.MODIFY_ORDER, actions);
424
+ }
425
+ async updatePositionMargin(params) {
426
+ await this.loadSigningMode(params.address, params.provider);
427
+ this.requireAgentMode(params.address, params.provider, 'updatePositionMargin()');
428
+ const { actions } = await this.buildPositionMargin(params);
429
+ return this.autoSignAndExecute(params.provider, params.address, ActionType.UPDATE_POSITION_MARGIN, actions);
430
+ }
437
431
  }
438
432
  //# sourceMappingURL=PerpsClient.js.map