@metamask-previews/perps-controller 0.0.0-preview-ce3ee897a → 0.0.0-preview-e4aa1532

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 (498) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/PerpsController.cjs +2224 -66
  3. package/dist/PerpsController.cjs.map +1 -1
  4. package/dist/PerpsController.d.cts +933 -79
  5. package/dist/PerpsController.d.cts.map +1 -1
  6. package/dist/PerpsController.d.mts +933 -79
  7. package/dist/PerpsController.d.mts.map +1 -1
  8. package/dist/PerpsController.mjs +2221 -64
  9. package/dist/PerpsController.mjs.map +1 -1
  10. package/dist/__mocks__/hyperliquidMock.cjs +68 -0
  11. package/dist/__mocks__/hyperliquidMock.cjs.map +1 -0
  12. package/dist/__mocks__/hyperliquidMock.d.cts +15 -0
  13. package/dist/__mocks__/hyperliquidMock.d.cts.map +1 -0
  14. package/dist/__mocks__/hyperliquidMock.d.mts +15 -0
  15. package/dist/__mocks__/hyperliquidMock.d.mts.map +1 -0
  16. package/dist/__mocks__/hyperliquidMock.mjs +65 -0
  17. package/dist/__mocks__/hyperliquidMock.mjs.map +1 -0
  18. package/dist/__mocks__/providerMocks.cjs +144 -0
  19. package/dist/__mocks__/providerMocks.cjs.map +1 -0
  20. package/dist/__mocks__/providerMocks.d.cts +44 -0
  21. package/dist/__mocks__/providerMocks.d.cts.map +1 -0
  22. package/dist/__mocks__/providerMocks.d.mts +44 -0
  23. package/dist/__mocks__/providerMocks.d.mts.map +1 -0
  24. package/dist/__mocks__/providerMocks.mjs +136 -0
  25. package/dist/__mocks__/providerMocks.mjs.map +1 -0
  26. package/dist/__mocks__/serviceMocks.cjs +187 -0
  27. package/dist/__mocks__/serviceMocks.cjs.map +1 -0
  28. package/dist/__mocks__/serviceMocks.d.cts +58 -0
  29. package/dist/__mocks__/serviceMocks.d.cts.map +1 -0
  30. package/dist/__mocks__/serviceMocks.d.mts +58 -0
  31. package/dist/__mocks__/serviceMocks.d.mts.map +1 -0
  32. package/dist/__mocks__/serviceMocks.mjs +180 -0
  33. package/dist/__mocks__/serviceMocks.mjs.map +1 -0
  34. package/dist/aggregation/SubscriptionMultiplexer.cjs +459 -0
  35. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
  36. package/dist/aggregation/SubscriptionMultiplexer.d.cts +222 -0
  37. package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
  38. package/dist/aggregation/SubscriptionMultiplexer.d.mts +222 -0
  39. package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
  40. package/dist/aggregation/SubscriptionMultiplexer.mjs +455 -0
  41. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -0
  42. package/dist/aggregation/index.cjs +9 -0
  43. package/dist/aggregation/index.cjs.map +1 -0
  44. package/dist/aggregation/index.d.cts +6 -0
  45. package/dist/aggregation/index.d.cts.map +1 -0
  46. package/dist/aggregation/index.d.mts +6 -0
  47. package/dist/aggregation/index.d.mts.map +1 -0
  48. package/dist/aggregation/index.mjs +5 -0
  49. package/dist/aggregation/index.mjs.map +1 -0
  50. package/dist/constants/eventNames.cjs +117 -0
  51. package/dist/constants/eventNames.cjs.map +1 -0
  52. package/dist/constants/eventNames.d.cts +106 -0
  53. package/dist/constants/eventNames.d.cts.map +1 -0
  54. package/dist/constants/eventNames.d.mts +106 -0
  55. package/dist/constants/eventNames.d.mts.map +1 -0
  56. package/dist/constants/eventNames.mjs +114 -0
  57. package/dist/constants/eventNames.mjs.map +1 -0
  58. package/dist/constants/hyperLiquidConfig.cjs +366 -0
  59. package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
  60. package/dist/constants/hyperLiquidConfig.d.cts +276 -0
  61. package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
  62. package/dist/constants/hyperLiquidConfig.d.mts +276 -0
  63. package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
  64. package/dist/constants/hyperLiquidConfig.mjs +357 -0
  65. package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
  66. package/dist/constants/index.cjs +23 -0
  67. package/dist/constants/index.cjs.map +1 -0
  68. package/dist/constants/index.d.cts +7 -0
  69. package/dist/constants/index.d.cts.map +1 -0
  70. package/dist/constants/index.d.mts +7 -0
  71. package/dist/constants/index.d.mts.map +1 -0
  72. package/dist/constants/index.mjs +7 -0
  73. package/dist/constants/index.mjs.map +1 -0
  74. package/dist/constants/orderTypes.cjs +31 -0
  75. package/dist/constants/orderTypes.cjs.map +1 -0
  76. package/dist/constants/orderTypes.d.cts +19 -0
  77. package/dist/constants/orderTypes.d.cts.map +1 -0
  78. package/dist/constants/orderTypes.d.mts +19 -0
  79. package/dist/constants/orderTypes.d.mts.map +1 -0
  80. package/dist/constants/orderTypes.mjs +27 -0
  81. package/dist/constants/orderTypes.mjs.map +1 -0
  82. package/dist/constants/performanceMetrics.cjs +61 -0
  83. package/dist/constants/performanceMetrics.cjs.map +1 -0
  84. package/dist/constants/performanceMetrics.d.cts +44 -0
  85. package/dist/constants/performanceMetrics.d.cts.map +1 -0
  86. package/dist/constants/performanceMetrics.d.mts +44 -0
  87. package/dist/constants/performanceMetrics.d.mts.map +1 -0
  88. package/dist/constants/performanceMetrics.mjs +58 -0
  89. package/dist/constants/performanceMetrics.mjs.map +1 -0
  90. package/dist/constants/perpsConfig.cjs +461 -0
  91. package/dist/constants/perpsConfig.cjs.map +1 -0
  92. package/dist/constants/perpsConfig.d.cts +343 -0
  93. package/dist/constants/perpsConfig.d.cts.map +1 -0
  94. package/dist/constants/perpsConfig.d.mts +343 -0
  95. package/dist/constants/perpsConfig.d.mts.map +1 -0
  96. package/dist/constants/perpsConfig.mjs +458 -0
  97. package/dist/constants/perpsConfig.mjs.map +1 -0
  98. package/dist/constants/perpsErrorCodes.cjs +79 -0
  99. package/dist/constants/perpsErrorCodes.cjs.map +1 -0
  100. package/dist/constants/perpsErrorCodes.d.cts +64 -0
  101. package/dist/constants/perpsErrorCodes.d.cts.map +1 -0
  102. package/dist/constants/perpsErrorCodes.d.mts +64 -0
  103. package/dist/constants/perpsErrorCodes.d.mts.map +1 -0
  104. package/dist/constants/perpsErrorCodes.mjs +76 -0
  105. package/dist/constants/perpsErrorCodes.mjs.map +1 -0
  106. package/dist/index.cjs +32 -1
  107. package/dist/index.cjs.map +1 -1
  108. package/dist/index.d.cts +6 -2
  109. package/dist/index.d.cts.map +1 -1
  110. package/dist/index.d.mts +6 -2
  111. package/dist/index.d.mts.map +1 -1
  112. package/dist/index.mjs +9 -1
  113. package/dist/index.mjs.map +1 -1
  114. package/dist/platform-services/HyperLiquidClientService.cjs +857 -0
  115. package/dist/platform-services/HyperLiquidClientService.cjs.map +1 -0
  116. package/dist/platform-services/HyperLiquidClientService.d.cts +263 -0
  117. package/dist/platform-services/HyperLiquidClientService.d.cts.map +1 -0
  118. package/dist/platform-services/HyperLiquidClientService.d.mts +263 -0
  119. package/dist/platform-services/HyperLiquidClientService.d.mts.map +1 -0
  120. package/dist/platform-services/HyperLiquidClientService.mjs +853 -0
  121. package/dist/platform-services/HyperLiquidClientService.mjs.map +1 -0
  122. package/dist/platform-services/HyperLiquidSubscriptionService.cjs +2170 -0
  123. package/dist/platform-services/HyperLiquidSubscriptionService.cjs.map +1 -0
  124. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts +424 -0
  125. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts.map +1 -0
  126. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts +424 -0
  127. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts.map +1 -0
  128. package/dist/platform-services/HyperLiquidSubscriptionService.mjs +2166 -0
  129. package/dist/platform-services/HyperLiquidSubscriptionService.mjs.map +1 -0
  130. package/dist/platform-services/HyperLiquidWalletService.cjs +140 -0
  131. package/dist/platform-services/HyperLiquidWalletService.cjs.map +1 -0
  132. package/dist/platform-services/HyperLiquidWalletService.d.cts +78 -0
  133. package/dist/platform-services/HyperLiquidWalletService.d.cts.map +1 -0
  134. package/dist/platform-services/HyperLiquidWalletService.d.mts +78 -0
  135. package/dist/platform-services/HyperLiquidWalletService.d.mts.map +1 -0
  136. package/dist/platform-services/HyperLiquidWalletService.mjs +136 -0
  137. package/dist/platform-services/HyperLiquidWalletService.mjs.map +1 -0
  138. package/dist/providers/AggregatedPerpsProvider.cjs +777 -0
  139. package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
  140. package/dist/providers/AggregatedPerpsProvider.d.cts +466 -0
  141. package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
  142. package/dist/providers/AggregatedPerpsProvider.d.mts +466 -0
  143. package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
  144. package/dist/providers/AggregatedPerpsProvider.mjs +773 -0
  145. package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
  146. package/dist/providers/HyperLiquidProvider.cjs +5172 -0
  147. package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
  148. package/dist/providers/HyperLiquidProvider.d.cts +881 -0
  149. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
  150. package/dist/providers/HyperLiquidProvider.d.mts +881 -0
  151. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
  152. package/dist/providers/HyperLiquidProvider.mjs +5168 -0
  153. package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
  154. package/dist/providers/index.cjs +11 -0
  155. package/dist/providers/index.cjs.map +1 -0
  156. package/dist/providers/index.d.cts +6 -0
  157. package/dist/providers/index.d.cts.map +1 -0
  158. package/dist/providers/index.d.mts +6 -0
  159. package/dist/providers/index.d.mts.map +1 -0
  160. package/dist/providers/index.mjs +6 -0
  161. package/dist/providers/index.mjs.map +1 -0
  162. package/dist/routing/ProviderRouter.cjs +148 -0
  163. package/dist/routing/ProviderRouter.cjs.map +1 -0
  164. package/dist/routing/ProviderRouter.d.cts +124 -0
  165. package/dist/routing/ProviderRouter.d.cts.map +1 -0
  166. package/dist/routing/ProviderRouter.d.mts +124 -0
  167. package/dist/routing/ProviderRouter.d.mts.map +1 -0
  168. package/dist/routing/ProviderRouter.mjs +144 -0
  169. package/dist/routing/ProviderRouter.mjs.map +1 -0
  170. package/dist/routing/index.cjs +9 -0
  171. package/dist/routing/index.cjs.map +1 -0
  172. package/dist/routing/index.d.cts +6 -0
  173. package/dist/routing/index.d.cts.map +1 -0
  174. package/dist/routing/index.d.mts +6 -0
  175. package/dist/routing/index.d.mts.map +1 -0
  176. package/dist/routing/index.mjs +5 -0
  177. package/dist/routing/index.mjs.map +1 -0
  178. package/dist/selectors.cjs +161 -0
  179. package/dist/selectors.cjs.map +1 -0
  180. package/dist/selectors.d.cts +345 -0
  181. package/dist/selectors.d.cts.map +1 -0
  182. package/dist/selectors.d.mts +345 -0
  183. package/dist/selectors.d.mts.map +1 -0
  184. package/dist/selectors.mjs +153 -0
  185. package/dist/selectors.mjs.map +1 -0
  186. package/dist/services/AccountService.cjs +313 -0
  187. package/dist/services/AccountService.cjs.map +1 -0
  188. package/dist/services/AccountService.d.cts +53 -0
  189. package/dist/services/AccountService.d.cts.map +1 -0
  190. package/dist/services/AccountService.d.mts +53 -0
  191. package/dist/services/AccountService.d.mts.map +1 -0
  192. package/dist/services/AccountService.mjs +309 -0
  193. package/dist/services/AccountService.mjs.map +1 -0
  194. package/dist/services/DataLakeService.cjs +219 -0
  195. package/dist/services/DataLakeService.cjs.map +1 -0
  196. package/dist/services/DataLakeService.d.cts +49 -0
  197. package/dist/services/DataLakeService.d.cts.map +1 -0
  198. package/dist/services/DataLakeService.d.mts +49 -0
  199. package/dist/services/DataLakeService.d.mts.map +1 -0
  200. package/dist/services/DataLakeService.mjs +215 -0
  201. package/dist/services/DataLakeService.mjs.map +1 -0
  202. package/dist/services/DepositService.cjs +96 -0
  203. package/dist/services/DepositService.cjs.map +1 -0
  204. package/dist/services/DepositService.d.cts +37 -0
  205. package/dist/services/DepositService.d.cts.map +1 -0
  206. package/dist/services/DepositService.d.mts +37 -0
  207. package/dist/services/DepositService.d.mts.map +1 -0
  208. package/dist/services/DepositService.mjs +92 -0
  209. package/dist/services/DepositService.mjs.map +1 -0
  210. package/dist/services/EligibilityService.cjs +156 -0
  211. package/dist/services/EligibilityService.cjs.map +1 -0
  212. package/dist/services/EligibilityService.d.cts +48 -0
  213. package/dist/services/EligibilityService.d.cts.map +1 -0
  214. package/dist/services/EligibilityService.d.mts +48 -0
  215. package/dist/services/EligibilityService.d.mts.map +1 -0
  216. package/dist/services/EligibilityService.mjs +152 -0
  217. package/dist/services/EligibilityService.mjs.map +1 -0
  218. package/dist/services/FeatureFlagConfigurationService.cjs +258 -0
  219. package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
  220. package/dist/services/FeatureFlagConfigurationService.d.cts +100 -0
  221. package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
  222. package/dist/services/FeatureFlagConfigurationService.d.mts +100 -0
  223. package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
  224. package/dist/services/FeatureFlagConfigurationService.mjs +254 -0
  225. package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
  226. package/dist/services/MarketDataService.cjs +875 -0
  227. package/dist/services/MarketDataService.cjs.map +1 -0
  228. package/dist/services/MarketDataService.d.cts +289 -0
  229. package/dist/services/MarketDataService.d.cts.map +1 -0
  230. package/dist/services/MarketDataService.d.mts +289 -0
  231. package/dist/services/MarketDataService.d.mts.map +1 -0
  232. package/dist/services/MarketDataService.mjs +871 -0
  233. package/dist/services/MarketDataService.mjs.map +1 -0
  234. package/dist/services/RewardsIntegrationService.cjs +94 -0
  235. package/dist/services/RewardsIntegrationService.cjs.map +1 -0
  236. package/dist/services/RewardsIntegrationService.d.cts +30 -0
  237. package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
  238. package/dist/services/RewardsIntegrationService.d.mts +30 -0
  239. package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
  240. package/dist/services/RewardsIntegrationService.mjs +90 -0
  241. package/dist/services/RewardsIntegrationService.mjs.map +1 -0
  242. package/dist/services/ServiceContext.cjs +3 -0
  243. package/dist/services/ServiceContext.cjs.map +1 -0
  244. package/dist/services/ServiceContext.d.cts +110 -0
  245. package/dist/services/ServiceContext.d.cts.map +1 -0
  246. package/dist/services/ServiceContext.d.mts +110 -0
  247. package/dist/services/ServiceContext.d.mts.map +1 -0
  248. package/dist/services/ServiceContext.mjs +2 -0
  249. package/dist/services/ServiceContext.mjs.map +1 -0
  250. package/dist/services/TradingService.cjs +1481 -0
  251. package/dist/services/TradingService.cjs.map +1 -0
  252. package/dist/services/TradingService.d.cts +308 -0
  253. package/dist/services/TradingService.d.cts.map +1 -0
  254. package/dist/services/TradingService.d.mts +308 -0
  255. package/dist/services/TradingService.d.mts.map +1 -0
  256. package/dist/services/TradingService.mjs +1477 -0
  257. package/dist/services/TradingService.mjs.map +1 -0
  258. package/dist/services/index.cjs +26 -0
  259. package/dist/services/index.cjs.map +1 -0
  260. package/dist/services/index.d.cts +11 -0
  261. package/dist/services/index.d.cts.map +1 -0
  262. package/dist/services/index.d.mts +11 -0
  263. package/dist/services/index.d.mts.map +1 -0
  264. package/dist/services/index.mjs +10 -0
  265. package/dist/services/index.mjs.map +1 -0
  266. package/dist/services/utils.cjs +16 -0
  267. package/dist/services/utils.cjs.map +1 -0
  268. package/dist/services/utils.d.cts +8 -0
  269. package/dist/services/utils.d.cts.map +1 -0
  270. package/dist/services/utils.d.mts +8 -0
  271. package/dist/services/utils.d.mts.map +1 -0
  272. package/dist/services/utils.mjs +12 -0
  273. package/dist/services/utils.mjs.map +1 -0
  274. package/dist/types/chart.cjs +42 -0
  275. package/dist/types/chart.cjs.map +1 -0
  276. package/dist/types/chart.d.cts +62 -0
  277. package/dist/types/chart.d.cts.map +1 -0
  278. package/dist/types/chart.d.mts +62 -0
  279. package/dist/types/chart.d.mts.map +1 -0
  280. package/dist/types/chart.mjs +39 -0
  281. package/dist/types/chart.mjs.map +1 -0
  282. package/dist/types/hyperliquid-types.cjs +3 -0
  283. package/dist/types/hyperliquid-types.cjs.map +1 -0
  284. package/dist/types/hyperliquid-types.d.cts +52 -0
  285. package/dist/types/hyperliquid-types.d.cts.map +1 -0
  286. package/dist/types/hyperliquid-types.d.mts +52 -0
  287. package/dist/types/hyperliquid-types.d.mts.map +1 -0
  288. package/dist/types/hyperliquid-types.mjs +2 -0
  289. package/dist/types/hyperliquid-types.mjs.map +1 -0
  290. package/dist/types/index.cjs +96 -0
  291. package/dist/types/index.cjs.map +1 -0
  292. package/dist/types/index.d.cts +1153 -0
  293. package/dist/types/index.d.cts.map +1 -0
  294. package/dist/types/index.d.mts +1153 -0
  295. package/dist/types/index.d.mts.map +1 -0
  296. package/dist/types/index.mjs +79 -0
  297. package/dist/types/index.mjs.map +1 -0
  298. package/dist/types/transactionTypes.cjs +28 -0
  299. package/dist/types/transactionTypes.cjs.map +1 -0
  300. package/dist/types/transactionTypes.d.cts +64 -0
  301. package/dist/types/transactionTypes.d.cts.map +1 -0
  302. package/dist/types/transactionTypes.d.mts +64 -0
  303. package/dist/types/transactionTypes.d.mts.map +1 -0
  304. package/dist/types/transactionTypes.mjs +23 -0
  305. package/dist/types/transactionTypes.mjs.map +1 -0
  306. package/dist/utils/accountUtils.cjs +65 -0
  307. package/dist/utils/accountUtils.cjs.map +1 -0
  308. package/dist/utils/accountUtils.d.cts +26 -0
  309. package/dist/utils/accountUtils.d.cts.map +1 -0
  310. package/dist/utils/accountUtils.d.mts +26 -0
  311. package/dist/utils/accountUtils.d.mts.map +1 -0
  312. package/dist/utils/accountUtils.mjs +61 -0
  313. package/dist/utils/accountUtils.mjs.map +1 -0
  314. package/dist/utils/amountConversion.cjs +61 -0
  315. package/dist/utils/amountConversion.cjs.map +1 -0
  316. package/dist/utils/amountConversion.d.cts +16 -0
  317. package/dist/utils/amountConversion.d.cts.map +1 -0
  318. package/dist/utils/amountConversion.d.mts +16 -0
  319. package/dist/utils/amountConversion.d.mts.map +1 -0
  320. package/dist/utils/amountConversion.mjs +54 -0
  321. package/dist/utils/amountConversion.mjs.map +1 -0
  322. package/dist/utils/chartUtils.cjs +98 -0
  323. package/dist/utils/chartUtils.cjs.map +1 -0
  324. package/dist/utils/chartUtils.d.cts +14 -0
  325. package/dist/utils/chartUtils.d.cts.map +1 -0
  326. package/dist/utils/chartUtils.d.mts +14 -0
  327. package/dist/utils/chartUtils.d.mts.map +1 -0
  328. package/dist/utils/chartUtils.mjs +94 -0
  329. package/dist/utils/chartUtils.mjs.map +1 -0
  330. package/dist/utils/errorUtils.cjs +22 -0
  331. package/dist/utils/errorUtils.cjs.map +1 -0
  332. package/dist/utils/errorUtils.d.cts +13 -0
  333. package/dist/utils/errorUtils.d.cts.map +1 -0
  334. package/dist/utils/errorUtils.d.mts +13 -0
  335. package/dist/utils/errorUtils.d.mts.map +1 -0
  336. package/dist/utils/errorUtils.mjs +18 -0
  337. package/dist/utils/errorUtils.mjs.map +1 -0
  338. package/dist/utils/formatUtils.cjs +987 -0
  339. package/dist/utils/formatUtils.cjs.map +1 -0
  340. package/dist/utils/formatUtils.d.cts +387 -0
  341. package/dist/utils/formatUtils.d.cts.map +1 -0
  342. package/dist/utils/formatUtils.d.mts +387 -0
  343. package/dist/utils/formatUtils.d.mts.map +1 -0
  344. package/dist/utils/formatUtils.mjs +966 -0
  345. package/dist/utils/formatUtils.mjs.map +1 -0
  346. package/dist/utils/hyperLiquidAdapter.cjs +454 -0
  347. package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
  348. package/dist/utils/hyperLiquidAdapter.d.cts +158 -0
  349. package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
  350. package/dist/utils/hyperLiquidAdapter.d.mts +158 -0
  351. package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
  352. package/dist/utils/hyperLiquidAdapter.mjs +439 -0
  353. package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
  354. package/dist/utils/hyperLiquidOrderBookProcessor.cjs +89 -0
  355. package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
  356. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +58 -0
  357. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
  358. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +58 -0
  359. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
  360. package/dist/utils/hyperLiquidOrderBookProcessor.mjs +84 -0
  361. package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -0
  362. package/dist/utils/hyperLiquidValidation.cjs +426 -0
  363. package/dist/utils/hyperLiquidValidation.cjs.map +1 -0
  364. package/dist/utils/hyperLiquidValidation.d.cts +143 -0
  365. package/dist/utils/hyperLiquidValidation.d.cts.map +1 -0
  366. package/dist/utils/hyperLiquidValidation.d.mts +143 -0
  367. package/dist/utils/hyperLiquidValidation.d.mts.map +1 -0
  368. package/dist/utils/hyperLiquidValidation.mjs +413 -0
  369. package/dist/utils/hyperLiquidValidation.mjs.map +1 -0
  370. package/dist/utils/idUtils.cjs +50 -0
  371. package/dist/utils/idUtils.cjs.map +1 -0
  372. package/dist/utils/idUtils.d.cts +38 -0
  373. package/dist/utils/idUtils.d.cts.map +1 -0
  374. package/dist/utils/idUtils.d.mts +38 -0
  375. package/dist/utils/idUtils.d.mts.map +1 -0
  376. package/dist/utils/idUtils.mjs +42 -0
  377. package/dist/utils/idUtils.mjs.map +1 -0
  378. package/dist/utils/marginUtils.cjs +137 -0
  379. package/dist/utils/marginUtils.cjs.map +1 -0
  380. package/dist/utils/marginUtils.d.cts +64 -0
  381. package/dist/utils/marginUtils.d.cts.map +1 -0
  382. package/dist/utils/marginUtils.d.mts +64 -0
  383. package/dist/utils/marginUtils.d.mts.map +1 -0
  384. package/dist/utils/marginUtils.mjs +131 -0
  385. package/dist/utils/marginUtils.mjs.map +1 -0
  386. package/dist/utils/marketDataTransform.cjs +227 -0
  387. package/dist/utils/marketDataTransform.cjs.map +1 -0
  388. package/dist/utils/marketDataTransform.d.cts +45 -0
  389. package/dist/utils/marketDataTransform.d.cts.map +1 -0
  390. package/dist/utils/marketDataTransform.d.mts +45 -0
  391. package/dist/utils/marketDataTransform.d.mts.map +1 -0
  392. package/dist/utils/marketDataTransform.mjs +220 -0
  393. package/dist/utils/marketDataTransform.mjs.map +1 -0
  394. package/dist/utils/marketUtils.cjs +420 -0
  395. package/dist/utils/marketUtils.cjs.map +1 -0
  396. package/dist/utils/marketUtils.d.cts +227 -0
  397. package/dist/utils/marketUtils.d.cts.map +1 -0
  398. package/dist/utils/marketUtils.d.mts +227 -0
  399. package/dist/utils/marketUtils.d.mts.map +1 -0
  400. package/dist/utils/marketUtils.mjs +404 -0
  401. package/dist/utils/marketUtils.mjs.map +1 -0
  402. package/dist/utils/orderBookGrouping.cjs +151 -0
  403. package/dist/utils/orderBookGrouping.cjs.map +1 -0
  404. package/dist/utils/orderBookGrouping.d.cts +76 -0
  405. package/dist/utils/orderBookGrouping.d.cts.map +1 -0
  406. package/dist/utils/orderBookGrouping.d.mts +76 -0
  407. package/dist/utils/orderBookGrouping.d.mts.map +1 -0
  408. package/dist/utils/orderBookGrouping.mjs +143 -0
  409. package/dist/utils/orderBookGrouping.mjs.map +1 -0
  410. package/dist/utils/orderCalculations.cjs +283 -0
  411. package/dist/utils/orderCalculations.cjs.map +1 -0
  412. package/dist/utils/orderCalculations.d.cts +107 -0
  413. package/dist/utils/orderCalculations.d.cts.map +1 -0
  414. package/dist/utils/orderCalculations.d.mts +107 -0
  415. package/dist/utils/orderCalculations.d.mts.map +1 -0
  416. package/dist/utils/orderCalculations.mjs +274 -0
  417. package/dist/utils/orderCalculations.mjs.map +1 -0
  418. package/dist/utils/orderUtils.cjs +159 -0
  419. package/dist/utils/orderUtils.cjs.map +1 -0
  420. package/dist/utils/orderUtils.d.cts +66 -0
  421. package/dist/utils/orderUtils.d.cts.map +1 -0
  422. package/dist/utils/orderUtils.d.mts +66 -0
  423. package/dist/utils/orderUtils.d.mts.map +1 -0
  424. package/dist/utils/orderUtils.mjs +151 -0
  425. package/dist/utils/orderUtils.mjs.map +1 -0
  426. package/dist/utils/pnlCalculations.cjs +107 -0
  427. package/dist/utils/pnlCalculations.cjs.map +1 -0
  428. package/dist/utils/pnlCalculations.d.cts +79 -0
  429. package/dist/utils/pnlCalculations.d.cts.map +1 -0
  430. package/dist/utils/pnlCalculations.d.mts +79 -0
  431. package/dist/utils/pnlCalculations.d.mts.map +1 -0
  432. package/dist/utils/pnlCalculations.mjs +97 -0
  433. package/dist/utils/pnlCalculations.mjs.map +1 -0
  434. package/dist/utils/positionCalculations.cjs +176 -0
  435. package/dist/utils/positionCalculations.cjs.map +1 -0
  436. package/dist/utils/positionCalculations.d.cts +85 -0
  437. package/dist/utils/positionCalculations.d.cts.map +1 -0
  438. package/dist/utils/positionCalculations.d.mts +85 -0
  439. package/dist/utils/positionCalculations.d.mts.map +1 -0
  440. package/dist/utils/positionCalculations.mjs +165 -0
  441. package/dist/utils/positionCalculations.mjs.map +1 -0
  442. package/dist/utils/sortMarkets.cjs +88 -0
  443. package/dist/utils/sortMarkets.cjs.map +1 -0
  444. package/dist/utils/sortMarkets.d.cts +21 -0
  445. package/dist/utils/sortMarkets.d.cts.map +1 -0
  446. package/dist/utils/sortMarkets.d.mts +21 -0
  447. package/dist/utils/sortMarkets.d.mts.map +1 -0
  448. package/dist/utils/sortMarkets.mjs +84 -0
  449. package/dist/utils/sortMarkets.mjs.map +1 -0
  450. package/dist/utils/standaloneInfoClient.cjs +34 -0
  451. package/dist/utils/standaloneInfoClient.cjs.map +1 -0
  452. package/dist/utils/standaloneInfoClient.d.cts +31 -0
  453. package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
  454. package/dist/utils/standaloneInfoClient.d.mts +31 -0
  455. package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
  456. package/dist/utils/standaloneInfoClient.mjs +30 -0
  457. package/dist/utils/standaloneInfoClient.mjs.map +1 -0
  458. package/dist/utils/stringParseUtils.cjs +49 -0
  459. package/dist/utils/stringParseUtils.cjs.map +1 -0
  460. package/dist/utils/stringParseUtils.d.cts +35 -0
  461. package/dist/utils/stringParseUtils.d.cts.map +1 -0
  462. package/dist/utils/stringParseUtils.d.mts +35 -0
  463. package/dist/utils/stringParseUtils.d.mts.map +1 -0
  464. package/dist/utils/stringParseUtils.mjs +44 -0
  465. package/dist/utils/stringParseUtils.mjs.map +1 -0
  466. package/dist/utils/time.cjs +37 -0
  467. package/dist/utils/time.cjs.map +1 -0
  468. package/dist/utils/time.d.cts +17 -0
  469. package/dist/utils/time.d.cts.map +1 -0
  470. package/dist/utils/time.d.mts +17 -0
  471. package/dist/utils/time.d.mts.map +1 -0
  472. package/dist/utils/time.mjs +33 -0
  473. package/dist/utils/time.mjs.map +1 -0
  474. package/dist/utils/tpslValidation.cjs +505 -0
  475. package/dist/utils/tpslValidation.cjs.map +1 -0
  476. package/dist/utils/tpslValidation.d.cts +182 -0
  477. package/dist/utils/tpslValidation.d.cts.map +1 -0
  478. package/dist/utils/tpslValidation.d.mts +182 -0
  479. package/dist/utils/tpslValidation.d.mts.map +1 -0
  480. package/dist/utils/tpslValidation.mjs +482 -0
  481. package/dist/utils/tpslValidation.mjs.map +1 -0
  482. package/dist/utils/transactionUtils.cjs +36 -0
  483. package/dist/utils/transactionUtils.cjs.map +1 -0
  484. package/dist/utils/transactionUtils.d.cts +17 -0
  485. package/dist/utils/transactionUtils.d.cts.map +1 -0
  486. package/dist/utils/transactionUtils.d.mts +17 -0
  487. package/dist/utils/transactionUtils.d.mts.map +1 -0
  488. package/dist/utils/transactionUtils.mjs +32 -0
  489. package/dist/utils/transactionUtils.mjs.map +1 -0
  490. package/dist/utils/wait.cjs +12 -0
  491. package/dist/utils/wait.cjs.map +1 -0
  492. package/dist/utils/wait.d.cts +8 -0
  493. package/dist/utils/wait.d.cts.map +1 -0
  494. package/dist/utils/wait.d.mts +8 -0
  495. package/dist/utils/wait.d.mts.map +1 -0
  496. package/dist/utils/wait.mjs +8 -0
  497. package/dist/utils/wait.mjs.map +1 -0
  498. package/package.json +19 -4
@@ -0,0 +1,777 @@
1
+ "use strict";
2
+ /* eslint-disable no-restricted-syntax, @typescript-eslint/naming-convention, jsdoc/require-param, jsdoc/check-param-names, jsdoc/require-returns */
3
+ // TODO: Fix ESLint errors in this file - tracked for Phase 6 cleanup
4
+ /**
5
+ * AggregatedPerpsProvider - Multi-provider aggregation wrapper
6
+ *
7
+ * Implements PerpsProvider interface to enable seamless multi-provider support.
8
+ * Aggregates read operations from all providers, routes write operations to specific
9
+ * providers based on params.providerId or default provider.
10
+ *
11
+ * Phase 1 Implementation:
12
+ * - Read operations: Aggregate from all providers using Promise.allSettled()
13
+ * - Write operations: Route to params.providerId ?? defaultProvider
14
+ * - Subscriptions: Multiplex via SubscriptionMultiplexer
15
+ * - Lifecycle: Delegate to default provider
16
+ *
17
+ * All returned data includes providerId field for UI differentiation.
18
+ */
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.AggregatedPerpsProvider = void 0;
21
+ const SubscriptionMultiplexer_1 = require("../aggregation/SubscriptionMultiplexer.cjs");
22
+ const ProviderRouter_1 = require("../routing/ProviderRouter.cjs");
23
+ /**
24
+ * AggregatedPerpsProvider implements PerpsProvider by coordinating
25
+ * multiple backend providers.
26
+ *
27
+ * Design principles:
28
+ * 1. Read operations aggregate from all providers (parallel)
29
+ * 2. Write operations route to specific provider (explicit > default)
30
+ * 3. Lifecycle operations delegate to default provider
31
+ * 4. All returned data includes providerId for UI differentiation
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const aggregated = new AggregatedPerpsProvider({
36
+ * providers: new Map([
37
+ * ['hyperliquid', hlProvider],
38
+ * ['myx', myxProvider],
39
+ * ]),
40
+ * defaultProvider: 'hyperliquid',
41
+ * infrastructure: deps,
42
+ * });
43
+ *
44
+ * // Read: returns positions from all providers
45
+ * const positions = await aggregated.getPositions();
46
+ *
47
+ * // Write: routes to specific or default provider
48
+ * await aggregated.placeOrder({ symbol: 'BTC', providerId: 'myx', ... });
49
+ * ```
50
+ */
51
+ class AggregatedPerpsProvider {
52
+ /**
53
+ * Create a new AggregatedPerpsProvider.
54
+ *
55
+ * @param config - Configuration for the aggregated provider
56
+ */
57
+ constructor(config) {
58
+ this.protocolId = 'aggregated';
59
+ this.providers = config.providers;
60
+ this.defaultProvider = config.defaultProvider;
61
+ this.aggregationMode = config.aggregationMode ?? 'all';
62
+ this.deps = config.infrastructure;
63
+ // Initialize router with default provider
64
+ this.router = new ProviderRouter_1.ProviderRouter({
65
+ defaultProvider: this.defaultProvider,
66
+ });
67
+ // Initialize subscription multiplexer with logger for error reporting
68
+ this.subscriptionMux = new SubscriptionMultiplexer_1.SubscriptionMultiplexer({
69
+ logger: this.deps.logger,
70
+ });
71
+ this.deps.debugLogger.log('[AggregatedPerpsProvider] Initialized', {
72
+ providers: Array.from(this.providers.keys()),
73
+ defaultProvider: this.defaultProvider,
74
+ aggregationMode: this.aggregationMode,
75
+ });
76
+ }
77
+ // ============================================================================
78
+ // Helper Methods
79
+ // ============================================================================
80
+ /**
81
+ * Get list of active providers as tuples for iteration.
82
+ * Returns array of [providerId, provider] pairs.
83
+ *
84
+ * @returns Array of provider tuples
85
+ */
86
+ getActiveProviders() {
87
+ return Array.from(this.providers.entries());
88
+ }
89
+ /**
90
+ * Get the default provider instance.
91
+ * Throws if default provider is not available.
92
+ *
93
+ * @returns Default provider instance
94
+ */
95
+ getDefaultProvider() {
96
+ const provider = this.providers.get(this.defaultProvider);
97
+ if (!provider) {
98
+ throw new Error(`[AggregatedPerpsProvider] Default provider '${this.defaultProvider}' not available`);
99
+ }
100
+ return provider;
101
+ }
102
+ /**
103
+ * Get provider by ID, falling back to default if not found.
104
+ *
105
+ * @param providerId - Optional provider ID
106
+ * @returns Tuple of [providerId, provider]
107
+ */
108
+ getProviderOrDefault(providerId) {
109
+ const id = providerId ?? this.defaultProvider;
110
+ const provider = this.providers.get(id);
111
+ if (!provider) {
112
+ this.deps.debugLogger.log(`[AggregatedPerpsProvider] Provider '${id}' not found, using default`);
113
+ return [this.defaultProvider, this.getDefaultProvider()];
114
+ }
115
+ return [id, provider];
116
+ }
117
+ /**
118
+ * Extract successful results from Promise.allSettled.
119
+ * Logs errors for failed promises.
120
+ *
121
+ * @param results - Results from Promise.allSettled
122
+ * @param context - Context string for logging
123
+ * @returns Array of successful values
124
+ */
125
+ extractSuccessfulResults(results, context) {
126
+ const successful = [];
127
+ results.forEach((result, index) => {
128
+ if (result.status === 'fulfilled') {
129
+ successful.push(result.value);
130
+ }
131
+ else {
132
+ this.deps.debugLogger.log(`[AggregatedPerpsProvider] ${context} failed for provider ${index}`, { error: result.reason });
133
+ }
134
+ });
135
+ return successful;
136
+ }
137
+ // ============================================================================
138
+ // Asset Routes (Synchronous - delegate to default provider)
139
+ // ============================================================================
140
+ /**
141
+ * Get deposit routes from default provider.
142
+ *
143
+ * @param params - Optional parameters
144
+ * @returns Array of asset routes
145
+ */
146
+ getDepositRoutes(params) {
147
+ return this.getDefaultProvider().getDepositRoutes(params);
148
+ }
149
+ /**
150
+ * Get withdrawal routes from default provider.
151
+ *
152
+ * @param params - Optional parameters
153
+ * @returns Array of asset routes
154
+ */
155
+ getWithdrawalRoutes(params) {
156
+ return this.getDefaultProvider().getWithdrawalRoutes(params);
157
+ }
158
+ // ============================================================================
159
+ // Read Operations (Aggregate from all providers)
160
+ // ============================================================================
161
+ /**
162
+ * Get positions from all providers.
163
+ *
164
+ * @param params - Optional parameters
165
+ * @returns Aggregated positions with providerId
166
+ */
167
+ async getPositions(params) {
168
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
169
+ const positions = await provider.getPositions(params);
170
+ return positions.map((pos) => ({ ...pos, providerId: id }));
171
+ }));
172
+ return this.extractSuccessfulResults(results, 'getPositions').flat();
173
+ }
174
+ /**
175
+ * Get account state from default provider.
176
+ *
177
+ * @param params - Optional parameters
178
+ * @returns Account state with providerId
179
+ */
180
+ async getAccountState(params) {
181
+ // Return account state from default provider with providerId injected
182
+ const provider = this.getDefaultProvider();
183
+ const state = await provider.getAccountState(params);
184
+ return { ...state, providerId: this.defaultProvider };
185
+ }
186
+ /**
187
+ * Get markets from all providers.
188
+ *
189
+ * @param params - Optional parameters
190
+ * @returns Deduplicated markets with providerId
191
+ */
192
+ async getMarkets(params) {
193
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
194
+ const markets = await provider.getMarkets(params);
195
+ return markets.map((market) => ({ ...market, providerId: id }));
196
+ }));
197
+ const allMarkets = this.extractSuccessfulResults(results, 'getMarkets').flat();
198
+ // Deduplicate markets by name (keep first occurrence)
199
+ const seen = new Set();
200
+ return allMarkets.filter((market) => {
201
+ // Use providerId:name as unique key to allow same market from different providers
202
+ const key = `${market.providerId}:${market.name}`;
203
+ if (seen.has(key)) {
204
+ return false;
205
+ }
206
+ seen.add(key);
207
+ return true;
208
+ });
209
+ }
210
+ /**
211
+ * Get market data with prices from all providers.
212
+ *
213
+ * @returns Aggregated market data with providerId
214
+ */
215
+ async getMarketDataWithPrices() {
216
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
217
+ const data = await provider.getMarketDataWithPrices();
218
+ return data.map((item) => ({ ...item, providerId: id }));
219
+ }));
220
+ return this.extractSuccessfulResults(results, 'getMarketDataWithPrices').flat();
221
+ }
222
+ /**
223
+ * Get order fills from all providers.
224
+ *
225
+ * @param params - Optional parameters
226
+ * @returns Aggregated order fills with providerId
227
+ */
228
+ async getOrderFills(params) {
229
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
230
+ const fills = await provider.getOrderFills(params);
231
+ return fills.map((fill) => ({ ...fill, providerId: id }));
232
+ }));
233
+ return this.extractSuccessfulResults(results, 'getOrderFills').flat();
234
+ }
235
+ /**
236
+ * Get orders from all providers.
237
+ *
238
+ * @param params - Optional parameters
239
+ * @returns Aggregated orders with providerId
240
+ */
241
+ async getOrders(params) {
242
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
243
+ const orders = await provider.getOrders(params);
244
+ return orders.map((order) => ({ ...order, providerId: id }));
245
+ }));
246
+ return this.extractSuccessfulResults(results, 'getOrders').flat();
247
+ }
248
+ /**
249
+ * Get open orders from all providers.
250
+ *
251
+ * @param params - Optional parameters
252
+ * @returns Aggregated open orders with providerId
253
+ */
254
+ async getOpenOrders(params) {
255
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
256
+ const orders = await provider.getOpenOrders(params);
257
+ return orders.map((order) => ({ ...order, providerId: id }));
258
+ }));
259
+ return this.extractSuccessfulResults(results, 'getOpenOrders').flat();
260
+ }
261
+ /**
262
+ * Get funding from all providers.
263
+ *
264
+ * @param params - Optional parameters
265
+ * @returns Aggregated funding data
266
+ */
267
+ async getFunding(params) {
268
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([_providerId, provider]) => {
269
+ const funding = await provider.getFunding(params);
270
+ // Funding type doesn't have providerId - we could add it if needed
271
+ return funding;
272
+ }));
273
+ return this.extractSuccessfulResults(results, 'getFunding').flat();
274
+ }
275
+ /**
276
+ * Get historical portfolio from default provider.
277
+ *
278
+ * @param params - Optional parameters
279
+ * @returns Historical portfolio result
280
+ */
281
+ async getHistoricalPortfolio(params) {
282
+ // Delegate to default provider
283
+ return this.getDefaultProvider().getHistoricalPortfolio(params);
284
+ }
285
+ /**
286
+ * Get user non-funding ledger updates from default provider.
287
+ *
288
+ * @param params - Optional parameters
289
+ * @returns Raw ledger updates
290
+ */
291
+ async getUserNonFundingLedgerUpdates(params) {
292
+ // Delegate to default provider (protocol-specific)
293
+ return this.getDefaultProvider().getUserNonFundingLedgerUpdates(params);
294
+ }
295
+ /**
296
+ * Get user history from all providers.
297
+ *
298
+ * @param params - Optional parameters
299
+ * @returns Aggregated user history with providerId
300
+ */
301
+ async getUserHistory(params) {
302
+ const results = await Promise.allSettled(this.getActiveProviders().map(async ([id, provider]) => {
303
+ const history = await provider.getUserHistory(params);
304
+ return history.map((item) => ({ ...item, providerId: id }));
305
+ }));
306
+ return this.extractSuccessfulResults(results, 'getUserHistory').flat();
307
+ }
308
+ // ============================================================================
309
+ // Write Operations (Route to specific provider)
310
+ // ============================================================================
311
+ /**
312
+ * Place an order via routed provider.
313
+ *
314
+ * @param params - Order parameters
315
+ * @returns Order result with providerId
316
+ */
317
+ async placeOrder(params) {
318
+ const [providerId, provider] = this.getProviderOrDefault(params.providerId);
319
+ this.deps.debugLogger.log('[AggregatedPerpsProvider] placeOrder routing', {
320
+ requestedProvider: params.providerId,
321
+ actualProvider: providerId,
322
+ symbol: params.symbol,
323
+ });
324
+ const result = await provider.placeOrder(params);
325
+ return { ...result, providerId };
326
+ }
327
+ /**
328
+ * Edit an order via routed provider.
329
+ *
330
+ * @param params - Edit order parameters
331
+ * @returns Order result with providerId
332
+ */
333
+ async editOrder(params) {
334
+ // EditOrderParams contains OrderParams in newOrder which may have providerId
335
+ const [providerId, provider] = this.getProviderOrDefault(params.newOrder.providerId);
336
+ const result = await provider.editOrder(params);
337
+ return { ...result, providerId };
338
+ }
339
+ /**
340
+ * Cancel an order via routed provider.
341
+ *
342
+ * @param params - Cancel order parameters
343
+ * @returns Cancel result with providerId
344
+ */
345
+ async cancelOrder(params) {
346
+ const [providerId, provider] = this.getProviderOrDefault(params.providerId);
347
+ const result = await provider.cancelOrder(params);
348
+ return { ...result, providerId };
349
+ }
350
+ /**
351
+ * Cancel multiple orders via default provider.
352
+ *
353
+ * @param params - Batch cancel parameters
354
+ * @returns Batch cancel result
355
+ */
356
+ async cancelOrders(params) {
357
+ // Batch cancel delegates to default provider
358
+ const provider = this.getDefaultProvider();
359
+ if (!provider.cancelOrders) {
360
+ return {
361
+ success: false,
362
+ successCount: 0,
363
+ failureCount: params.length,
364
+ results: params.map((param) => ({
365
+ orderId: param.orderId,
366
+ symbol: param.symbol,
367
+ success: false,
368
+ error: 'Batch cancel not supported',
369
+ })),
370
+ };
371
+ }
372
+ return provider.cancelOrders(params);
373
+ }
374
+ /**
375
+ * Close a position via routed provider.
376
+ *
377
+ * @param params - Close position parameters
378
+ * @returns Order result with providerId
379
+ */
380
+ async closePosition(params) {
381
+ const [providerId, provider] = this.getProviderOrDefault(params.providerId);
382
+ const result = await provider.closePosition(params);
383
+ return { ...result, providerId };
384
+ }
385
+ /**
386
+ * Close multiple positions via default provider.
387
+ *
388
+ * @param params - Close positions parameters
389
+ * @returns Batch close result
390
+ */
391
+ async closePositions(params) {
392
+ // Batch close delegates to default provider
393
+ const provider = this.getDefaultProvider();
394
+ if (!provider.closePositions) {
395
+ return {
396
+ success: false,
397
+ successCount: 0,
398
+ failureCount: 0,
399
+ results: [],
400
+ };
401
+ }
402
+ return provider.closePositions(params);
403
+ }
404
+ /**
405
+ * Update position TP/SL via routed provider.
406
+ *
407
+ * @param params - Update TP/SL parameters
408
+ * @returns Order result with providerId
409
+ */
410
+ async updatePositionTPSL(params) {
411
+ const [providerId, provider] = this.getProviderOrDefault(params.providerId);
412
+ const result = await provider.updatePositionTPSL(params);
413
+ return { ...result, providerId };
414
+ }
415
+ /**
416
+ * Update margin via routed provider.
417
+ *
418
+ * @param params - Update margin parameters
419
+ * @returns Margin result
420
+ */
421
+ async updateMargin(params) {
422
+ const [, provider] = this.getProviderOrDefault(params.providerId);
423
+ return provider.updateMargin(params);
424
+ }
425
+ /**
426
+ * Withdraw via routed provider.
427
+ *
428
+ * @param params - Withdraw parameters
429
+ * @returns Withdraw result
430
+ */
431
+ async withdraw(params) {
432
+ const [, provider] = this.getProviderOrDefault(params.providerId);
433
+ return provider.withdraw(params);
434
+ }
435
+ // ============================================================================
436
+ // Validation (Route to specific provider)
437
+ // ============================================================================
438
+ /**
439
+ * Validate deposit via default provider.
440
+ *
441
+ * @param params - Deposit parameters
442
+ * @returns Validation result
443
+ */
444
+ async validateDeposit(params) {
445
+ return this.getDefaultProvider().validateDeposit(params);
446
+ }
447
+ /**
448
+ * Validate order via routed provider.
449
+ *
450
+ * @param params - Order parameters
451
+ * @returns Validation result
452
+ */
453
+ async validateOrder(params) {
454
+ const [, provider] = this.getProviderOrDefault(params.providerId);
455
+ return provider.validateOrder(params);
456
+ }
457
+ /**
458
+ * Validate close position via routed provider.
459
+ *
460
+ * @param params - Close position parameters
461
+ * @returns Validation result
462
+ */
463
+ async validateClosePosition(params) {
464
+ const [, provider] = this.getProviderOrDefault(params.providerId);
465
+ return provider.validateClosePosition(params);
466
+ }
467
+ /**
468
+ * Validate withdrawal via routed provider.
469
+ *
470
+ * @param params - Withdraw parameters
471
+ * @returns Validation result
472
+ */
473
+ async validateWithdrawal(params) {
474
+ const [, provider] = this.getProviderOrDefault(params.providerId);
475
+ return provider.validateWithdrawal(params);
476
+ }
477
+ // ============================================================================
478
+ // Protocol Calculations (Delegate to default or route)
479
+ // ============================================================================
480
+ /**
481
+ * Calculate liquidation price via default provider.
482
+ *
483
+ * @param params - Liquidation price parameters
484
+ * @returns Liquidation price as string
485
+ */
486
+ async calculateLiquidationPrice(params) {
487
+ return this.getDefaultProvider().calculateLiquidationPrice(params);
488
+ }
489
+ /**
490
+ * Calculate maintenance margin via default provider.
491
+ *
492
+ * @param params - Maintenance margin parameters
493
+ * @returns Maintenance margin as number
494
+ */
495
+ async calculateMaintenanceMargin(params) {
496
+ return this.getDefaultProvider().calculateMaintenanceMargin(params);
497
+ }
498
+ /**
499
+ * Get max leverage for asset via default provider.
500
+ *
501
+ * @param asset - Asset symbol
502
+ * @returns Max leverage as number
503
+ */
504
+ async getMaxLeverage(asset) {
505
+ return this.getDefaultProvider().getMaxLeverage(asset);
506
+ }
507
+ /**
508
+ * Calculate fees via default provider.
509
+ *
510
+ * @param params - Fee calculation parameters
511
+ * @returns Fee calculation result
512
+ */
513
+ async calculateFees(params) {
514
+ return this.getDefaultProvider().calculateFees(params);
515
+ }
516
+ // ============================================================================
517
+ // Subscriptions (Multiplex via SubscriptionMultiplexer)
518
+ // ============================================================================
519
+ /**
520
+ * Subscribe to prices from all providers.
521
+ *
522
+ * @param params - Subscription parameters
523
+ * @returns Unsubscribe function
524
+ */
525
+ subscribeToPrices(params) {
526
+ return this.subscriptionMux.subscribeToPrices({
527
+ ...params,
528
+ providers: this.getActiveProviders(),
529
+ aggregationMode: 'merge',
530
+ });
531
+ }
532
+ /**
533
+ * Subscribe to positions from all providers.
534
+ *
535
+ * @param params - Subscription parameters
536
+ * @returns Unsubscribe function
537
+ */
538
+ subscribeToPositions(params) {
539
+ return this.subscriptionMux.subscribeToPositions({
540
+ ...params,
541
+ providers: this.getActiveProviders(),
542
+ });
543
+ }
544
+ /**
545
+ * Subscribe to order fills from all providers.
546
+ *
547
+ * @param params - Subscription parameters
548
+ * @returns Unsubscribe function
549
+ */
550
+ subscribeToOrderFills(params) {
551
+ return this.subscriptionMux.subscribeToOrderFills({
552
+ ...params,
553
+ providers: this.getActiveProviders(),
554
+ });
555
+ }
556
+ /**
557
+ * Subscribe to orders from all providers.
558
+ *
559
+ * @param params - Subscription parameters
560
+ * @returns Unsubscribe function
561
+ */
562
+ subscribeToOrders(params) {
563
+ return this.subscriptionMux.subscribeToOrders({
564
+ ...params,
565
+ providers: this.getActiveProviders(),
566
+ });
567
+ }
568
+ /**
569
+ * Subscribe to account from default provider.
570
+ *
571
+ * @param params - Subscription parameters
572
+ * @returns Unsubscribe function
573
+ */
574
+ subscribeToAccount(params) {
575
+ // For account subscriptions, we emit as array for multi-provider
576
+ // but the callback expects single AccountState
577
+ // Delegate to default provider for now
578
+ return this.getDefaultProvider().subscribeToAccount(params);
579
+ }
580
+ /**
581
+ * Subscribe to OI caps from default provider.
582
+ *
583
+ * @param params - Subscription parameters
584
+ * @returns Unsubscribe function
585
+ */
586
+ subscribeToOICaps(params) {
587
+ // Delegate to default provider
588
+ return this.getDefaultProvider().subscribeToOICaps(params);
589
+ }
590
+ /**
591
+ * Subscribe to candles from default provider.
592
+ *
593
+ * @param params - Subscription parameters
594
+ * @returns Unsubscribe function
595
+ */
596
+ subscribeToCandles(params) {
597
+ // Delegate to default provider
598
+ return this.getDefaultProvider().subscribeToCandles(params);
599
+ }
600
+ /**
601
+ * Subscribe to order book from default provider.
602
+ *
603
+ * @param params - Subscription parameters
604
+ * @returns Unsubscribe function
605
+ */
606
+ subscribeToOrderBook(params) {
607
+ // Delegate to default provider
608
+ return this.getDefaultProvider().subscribeToOrderBook(params);
609
+ }
610
+ // ============================================================================
611
+ // Configuration
612
+ // ============================================================================
613
+ /**
614
+ * Set live data config on all providers.
615
+ *
616
+ * @param config - Partial live data config
617
+ */
618
+ setLiveDataConfig(config) {
619
+ // Apply config to all providers
620
+ this.providers.forEach((provider) => {
621
+ provider.setLiveDataConfig(config);
622
+ });
623
+ }
624
+ /**
625
+ * Set user fee discount on all providers.
626
+ *
627
+ * @param discountBips - Discount in basis points
628
+ */
629
+ setUserFeeDiscount(discountBips) {
630
+ // Apply to all providers that support it
631
+ this.providers.forEach((provider) => {
632
+ if (provider.setUserFeeDiscount) {
633
+ provider.setUserFeeDiscount(discountBips);
634
+ }
635
+ });
636
+ }
637
+ // ============================================================================
638
+ // Lifecycle (Delegate to default provider)
639
+ // ============================================================================
640
+ /**
641
+ * Toggle testnet on default provider.
642
+ *
643
+ * @returns Toggle result
644
+ */
645
+ async toggleTestnet() {
646
+ return this.getDefaultProvider().toggleTestnet();
647
+ }
648
+ /**
649
+ * Initialize the default provider.
650
+ *
651
+ * @returns Initialize result
652
+ */
653
+ async initialize() {
654
+ // Initialize default provider
655
+ const result = await this.getDefaultProvider().initialize();
656
+ // Optionally initialize other providers in background
657
+ // For Phase 1, we only initialize default provider
658
+ return result;
659
+ }
660
+ /**
661
+ * Check if ready to trade via default provider.
662
+ *
663
+ * @returns Ready to trade result
664
+ */
665
+ async isReadyToTrade() {
666
+ return this.getDefaultProvider().isReadyToTrade();
667
+ }
668
+ /**
669
+ * Disconnect all providers.
670
+ *
671
+ * @returns Disconnect result
672
+ */
673
+ async disconnect() {
674
+ // Disconnect all providers
675
+ const results = await Promise.allSettled(this.getActiveProviders().map(([, provider]) => provider.disconnect()));
676
+ // Clear subscription cache
677
+ this.subscriptionMux.clearCache();
678
+ // Return success if at least one succeeded
679
+ const successCount = results.filter((res) => res.status === 'fulfilled' && res.value.success).length;
680
+ return {
681
+ success: successCount > 0,
682
+ };
683
+ }
684
+ /**
685
+ * Ping default provider.
686
+ *
687
+ * @param timeoutMs - Optional timeout in milliseconds
688
+ */
689
+ async ping(timeoutMs) {
690
+ return this.getDefaultProvider().ping(timeoutMs);
691
+ }
692
+ // ============================================================================
693
+ // Block Explorer
694
+ // ============================================================================
695
+ /**
696
+ * Get block explorer URL from default provider.
697
+ *
698
+ * @param address - Optional address
699
+ * @returns Block explorer URL
700
+ */
701
+ getBlockExplorerUrl(address) {
702
+ return this.getDefaultProvider().getBlockExplorerUrl(address);
703
+ }
704
+ // ============================================================================
705
+ // HIP-3 (Optional)
706
+ // ============================================================================
707
+ /**
708
+ * Get available DEXs from default provider.
709
+ *
710
+ * @param params - Optional parameters
711
+ * @returns Array of DEX names
712
+ */
713
+ async getAvailableDexs(params) {
714
+ const provider = this.getDefaultProvider();
715
+ if (!provider.getAvailableDexs) {
716
+ return [];
717
+ }
718
+ return provider.getAvailableDexs(params);
719
+ }
720
+ // ============================================================================
721
+ // Provider Management
722
+ // ============================================================================
723
+ /**
724
+ * Add a new provider to the aggregated provider.
725
+ *
726
+ * @param providerId - Unique identifier for the provider
727
+ * @param provider - Provider instance
728
+ */
729
+ addProvider(providerId, provider) {
730
+ this.providers.set(providerId, provider);
731
+ this.deps.debugLogger.log('[AggregatedPerpsProvider] Provider added', {
732
+ providerId,
733
+ });
734
+ }
735
+ /**
736
+ * Remove a provider from the aggregated provider.
737
+ *
738
+ * @param providerId - Provider to remove
739
+ * @returns true if removed, false if not found
740
+ */
741
+ removeProvider(providerId) {
742
+ const removed = this.providers.delete(providerId);
743
+ if (removed) {
744
+ this.deps.debugLogger.log('[AggregatedPerpsProvider] Provider removed', {
745
+ providerId,
746
+ });
747
+ }
748
+ return removed;
749
+ }
750
+ /**
751
+ * Get list of all registered provider IDs.
752
+ *
753
+ * @returns Array of provider IDs
754
+ */
755
+ getProviderIds() {
756
+ return Array.from(this.providers.keys());
757
+ }
758
+ /**
759
+ * Check if a provider is registered.
760
+ *
761
+ * @param providerId - Provider ID to check
762
+ * @returns true if registered
763
+ */
764
+ hasProvider(providerId) {
765
+ return this.providers.has(providerId);
766
+ }
767
+ /**
768
+ * Get the router instance for external configuration.
769
+ *
770
+ * @returns Provider router
771
+ */
772
+ getRouter() {
773
+ return this.router;
774
+ }
775
+ }
776
+ exports.AggregatedPerpsProvider = AggregatedPerpsProvider;
777
+ //# sourceMappingURL=AggregatedPerpsProvider.cjs.map