@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,222 @@
1
+ /**
2
+ * SubscriptionMultiplexer - Manages WebSocket subscriptions across multiple providers
3
+ *
4
+ * Responsibilities:
5
+ * - Manage subscriptions to multiple providers simultaneously
6
+ * - Tag all updates with providerId so UI can differentiate sources
7
+ * - Support aggregation modes: 'merge' (all prices) or 'best_price' (best price per symbol)
8
+ * - Cache latest updates per provider per symbol for aggregation
9
+ */
10
+ import type { PerpsProviderType, PerpsProvider, PerpsLogger, PriceUpdate, Position, OrderFill, Order, AccountState } from "../types/index.cjs";
11
+ /**
12
+ * Options for constructing SubscriptionMultiplexer.
13
+ */
14
+ export type SubscriptionMultiplexerOptions = {
15
+ /** Optional logger for error reporting (e.g., Sentry) */
16
+ logger?: PerpsLogger;
17
+ };
18
+ /**
19
+ * Aggregation mode for price subscriptions.
20
+ */
21
+ export type PriceAggregationMode = 'merge' | 'best_price';
22
+ /**
23
+ * Parameters for multiplexed price subscriptions.
24
+ */
25
+ export type MultiplexedPricesParams = {
26
+ /** Symbols to subscribe to */
27
+ symbols: string[];
28
+ /** Provider instances to subscribe through */
29
+ providers: [PerpsProviderType, PerpsProvider][];
30
+ /** Callback to receive aggregated price updates */
31
+ callback: (prices: PriceUpdate[]) => void;
32
+ /** Aggregation mode: 'merge' returns all prices, 'best_price' returns best per symbol */
33
+ aggregationMode?: PriceAggregationMode;
34
+ /** Optional throttle in milliseconds */
35
+ throttleMs?: number;
36
+ /** Include order book data */
37
+ includeOrderBook?: boolean;
38
+ /** Include market data (funding, OI, volume) */
39
+ includeMarketData?: boolean;
40
+ };
41
+ /**
42
+ * Parameters for multiplexed position subscriptions.
43
+ */
44
+ export type MultiplexedPositionsParams = {
45
+ /** Provider instances to subscribe through */
46
+ providers: [PerpsProviderType, PerpsProvider][];
47
+ /** Callback to receive aggregated position updates */
48
+ callback: (positions: Position[]) => void;
49
+ };
50
+ /**
51
+ * Parameters for multiplexed order fill subscriptions.
52
+ */
53
+ export type MultiplexedOrderFillsParams = {
54
+ /** Provider instances to subscribe through */
55
+ providers: [PerpsProviderType, PerpsProvider][];
56
+ /** Callback to receive aggregated order fill updates */
57
+ callback: (fills: OrderFill[], isSnapshot?: boolean) => void;
58
+ };
59
+ /**
60
+ * Parameters for multiplexed order subscriptions.
61
+ */
62
+ export type MultiplexedOrdersParams = {
63
+ /** Provider instances to subscribe through */
64
+ providers: [PerpsProviderType, PerpsProvider][];
65
+ /** Callback to receive aggregated order updates */
66
+ callback: (orders: Order[]) => void;
67
+ };
68
+ /**
69
+ * Parameters for multiplexed account subscriptions.
70
+ */
71
+ export type MultiplexedAccountParams = {
72
+ /** Provider instances to subscribe through */
73
+ providers: [PerpsProviderType, PerpsProvider][];
74
+ /** Callback to receive account updates (one per provider) */
75
+ callback: (accounts: AccountState[]) => void;
76
+ };
77
+ /**
78
+ * SubscriptionMultiplexer manages real-time data subscriptions across
79
+ * multiple perps providers.
80
+ *
81
+ * Key features:
82
+ * - Subscribes to all providers simultaneously
83
+ * - Tags all updates with source providerId
84
+ * - Caches latest values for aggregation
85
+ * - Supports different aggregation modes for prices
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const mux = new SubscriptionMultiplexer();
90
+ *
91
+ * const unsubscribe = mux.subscribeToPrices({
92
+ * symbols: ['BTC', 'ETH'],
93
+ * providers: [
94
+ * ['hyperliquid', hlProvider],
95
+ * ['myx', myxProvider],
96
+ * ],
97
+ * callback: (prices) => {
98
+ * // prices have providerId injected
99
+ * prices.forEach(p => console.log(`${p.providerId}: ${p.symbol} = ${p.price}`));
100
+ * },
101
+ * aggregationMode: 'merge',
102
+ * });
103
+ *
104
+ * // Later: clean up
105
+ * unsubscribe();
106
+ * ```
107
+ */
108
+ export declare class SubscriptionMultiplexer {
109
+ /**
110
+ * Optional logger for error reporting
111
+ */
112
+ private readonly logger?;
113
+ /**
114
+ * Cache of latest prices per symbol per provider
115
+ * Map<symbol, Map<providerId, PriceUpdate>>
116
+ */
117
+ private readonly priceCache;
118
+ /**
119
+ * Cache of latest positions per provider
120
+ * Map<providerId, Position[]>
121
+ */
122
+ private readonly positionCache;
123
+ /**
124
+ * Cache of latest orders per provider
125
+ * Map<providerId, Order[]>
126
+ */
127
+ private readonly orderCache;
128
+ /**
129
+ * Cache of latest account state per provider
130
+ * Map<providerId, AccountState>
131
+ */
132
+ private readonly accountCache;
133
+ /**
134
+ * Create a new SubscriptionMultiplexer.
135
+ *
136
+ * @param options - Optional configuration including logger for error reporting
137
+ */
138
+ constructor(options?: SubscriptionMultiplexerOptions);
139
+ /**
140
+ * Subscribe to price updates from multiple providers.
141
+ *
142
+ * @param params - Subscription parameters
143
+ * @returns Unsubscribe function
144
+ */
145
+ subscribeToPrices(params: MultiplexedPricesParams): () => void;
146
+ /**
147
+ * Subscribe to position updates from multiple providers.
148
+ *
149
+ * @param params - Subscription parameters
150
+ * @returns Unsubscribe function
151
+ */
152
+ subscribeToPositions(params: MultiplexedPositionsParams): () => void;
153
+ /**
154
+ * Subscribe to order fill updates from multiple providers.
155
+ *
156
+ * @param params - Subscription parameters
157
+ * @returns Unsubscribe function
158
+ */
159
+ subscribeToOrderFills(params: MultiplexedOrderFillsParams): () => void;
160
+ /**
161
+ * Subscribe to order updates from multiple providers.
162
+ *
163
+ * @param params - Subscription parameters
164
+ * @returns Unsubscribe function
165
+ */
166
+ subscribeToOrders(params: MultiplexedOrdersParams): () => void;
167
+ /**
168
+ * Subscribe to account updates from multiple providers.
169
+ *
170
+ * @param params - Subscription parameters
171
+ * @returns Unsubscribe function
172
+ */
173
+ subscribeToAccount(params: MultiplexedAccountParams): () => void;
174
+ /**
175
+ * Aggregate cached prices based on mode.
176
+ *
177
+ * @param symbols - Symbols to include in result
178
+ * @param mode - Aggregation mode
179
+ * @returns Aggregated price updates
180
+ */
181
+ private aggregatePrices;
182
+ /**
183
+ * Find the best price from multiple provider prices.
184
+ * "Best" is defined as the price with the smallest spread.
185
+ *
186
+ * @param providerPrices - Map of provider prices for a symbol
187
+ * @returns Best price update or undefined
188
+ */
189
+ private findBestPrice;
190
+ /**
191
+ * Aggregate positions from all providers.
192
+ *
193
+ * @returns All cached positions
194
+ */
195
+ private aggregatePositions;
196
+ /**
197
+ * Aggregate orders from all providers.
198
+ *
199
+ * @returns All cached orders
200
+ */
201
+ private aggregateOrders;
202
+ /**
203
+ * Clear all cached data.
204
+ */
205
+ clearCache(): void;
206
+ /**
207
+ * Get cached price for a symbol from a specific provider.
208
+ *
209
+ * @param symbol - Market symbol
210
+ * @param providerId - Provider ID
211
+ * @returns Cached price update or undefined
212
+ */
213
+ getCachedPrice(symbol: string, providerId: PerpsProviderType): PriceUpdate | undefined;
214
+ /**
215
+ * Get all cached prices for a symbol.
216
+ *
217
+ * @param symbol - Market symbol
218
+ * @returns Map of provider ID to price update
219
+ */
220
+ getAllCachedPricesForSymbol(symbol: string): Map<PerpsProviderType, PriceUpdate> | undefined;
221
+ }
222
+ //# sourceMappingURL=SubscriptionMultiplexer.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionMultiplexer.d.cts","sourceRoot":"","sources":["../../src/aggregation/SubscriptionMultiplexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * SubscriptionMultiplexer - Manages WebSocket subscriptions across multiple providers
3
+ *
4
+ * Responsibilities:
5
+ * - Manage subscriptions to multiple providers simultaneously
6
+ * - Tag all updates with providerId so UI can differentiate sources
7
+ * - Support aggregation modes: 'merge' (all prices) or 'best_price' (best price per symbol)
8
+ * - Cache latest updates per provider per symbol for aggregation
9
+ */
10
+ import type { PerpsProviderType, PerpsProvider, PerpsLogger, PriceUpdate, Position, OrderFill, Order, AccountState } from "../types/index.mjs";
11
+ /**
12
+ * Options for constructing SubscriptionMultiplexer.
13
+ */
14
+ export type SubscriptionMultiplexerOptions = {
15
+ /** Optional logger for error reporting (e.g., Sentry) */
16
+ logger?: PerpsLogger;
17
+ };
18
+ /**
19
+ * Aggregation mode for price subscriptions.
20
+ */
21
+ export type PriceAggregationMode = 'merge' | 'best_price';
22
+ /**
23
+ * Parameters for multiplexed price subscriptions.
24
+ */
25
+ export type MultiplexedPricesParams = {
26
+ /** Symbols to subscribe to */
27
+ symbols: string[];
28
+ /** Provider instances to subscribe through */
29
+ providers: [PerpsProviderType, PerpsProvider][];
30
+ /** Callback to receive aggregated price updates */
31
+ callback: (prices: PriceUpdate[]) => void;
32
+ /** Aggregation mode: 'merge' returns all prices, 'best_price' returns best per symbol */
33
+ aggregationMode?: PriceAggregationMode;
34
+ /** Optional throttle in milliseconds */
35
+ throttleMs?: number;
36
+ /** Include order book data */
37
+ includeOrderBook?: boolean;
38
+ /** Include market data (funding, OI, volume) */
39
+ includeMarketData?: boolean;
40
+ };
41
+ /**
42
+ * Parameters for multiplexed position subscriptions.
43
+ */
44
+ export type MultiplexedPositionsParams = {
45
+ /** Provider instances to subscribe through */
46
+ providers: [PerpsProviderType, PerpsProvider][];
47
+ /** Callback to receive aggregated position updates */
48
+ callback: (positions: Position[]) => void;
49
+ };
50
+ /**
51
+ * Parameters for multiplexed order fill subscriptions.
52
+ */
53
+ export type MultiplexedOrderFillsParams = {
54
+ /** Provider instances to subscribe through */
55
+ providers: [PerpsProviderType, PerpsProvider][];
56
+ /** Callback to receive aggregated order fill updates */
57
+ callback: (fills: OrderFill[], isSnapshot?: boolean) => void;
58
+ };
59
+ /**
60
+ * Parameters for multiplexed order subscriptions.
61
+ */
62
+ export type MultiplexedOrdersParams = {
63
+ /** Provider instances to subscribe through */
64
+ providers: [PerpsProviderType, PerpsProvider][];
65
+ /** Callback to receive aggregated order updates */
66
+ callback: (orders: Order[]) => void;
67
+ };
68
+ /**
69
+ * Parameters for multiplexed account subscriptions.
70
+ */
71
+ export type MultiplexedAccountParams = {
72
+ /** Provider instances to subscribe through */
73
+ providers: [PerpsProviderType, PerpsProvider][];
74
+ /** Callback to receive account updates (one per provider) */
75
+ callback: (accounts: AccountState[]) => void;
76
+ };
77
+ /**
78
+ * SubscriptionMultiplexer manages real-time data subscriptions across
79
+ * multiple perps providers.
80
+ *
81
+ * Key features:
82
+ * - Subscribes to all providers simultaneously
83
+ * - Tags all updates with source providerId
84
+ * - Caches latest values for aggregation
85
+ * - Supports different aggregation modes for prices
86
+ *
87
+ * @example
88
+ * ```typescript
89
+ * const mux = new SubscriptionMultiplexer();
90
+ *
91
+ * const unsubscribe = mux.subscribeToPrices({
92
+ * symbols: ['BTC', 'ETH'],
93
+ * providers: [
94
+ * ['hyperliquid', hlProvider],
95
+ * ['myx', myxProvider],
96
+ * ],
97
+ * callback: (prices) => {
98
+ * // prices have providerId injected
99
+ * prices.forEach(p => console.log(`${p.providerId}: ${p.symbol} = ${p.price}`));
100
+ * },
101
+ * aggregationMode: 'merge',
102
+ * });
103
+ *
104
+ * // Later: clean up
105
+ * unsubscribe();
106
+ * ```
107
+ */
108
+ export declare class SubscriptionMultiplexer {
109
+ /**
110
+ * Optional logger for error reporting
111
+ */
112
+ private readonly logger?;
113
+ /**
114
+ * Cache of latest prices per symbol per provider
115
+ * Map<symbol, Map<providerId, PriceUpdate>>
116
+ */
117
+ private readonly priceCache;
118
+ /**
119
+ * Cache of latest positions per provider
120
+ * Map<providerId, Position[]>
121
+ */
122
+ private readonly positionCache;
123
+ /**
124
+ * Cache of latest orders per provider
125
+ * Map<providerId, Order[]>
126
+ */
127
+ private readonly orderCache;
128
+ /**
129
+ * Cache of latest account state per provider
130
+ * Map<providerId, AccountState>
131
+ */
132
+ private readonly accountCache;
133
+ /**
134
+ * Create a new SubscriptionMultiplexer.
135
+ *
136
+ * @param options - Optional configuration including logger for error reporting
137
+ */
138
+ constructor(options?: SubscriptionMultiplexerOptions);
139
+ /**
140
+ * Subscribe to price updates from multiple providers.
141
+ *
142
+ * @param params - Subscription parameters
143
+ * @returns Unsubscribe function
144
+ */
145
+ subscribeToPrices(params: MultiplexedPricesParams): () => void;
146
+ /**
147
+ * Subscribe to position updates from multiple providers.
148
+ *
149
+ * @param params - Subscription parameters
150
+ * @returns Unsubscribe function
151
+ */
152
+ subscribeToPositions(params: MultiplexedPositionsParams): () => void;
153
+ /**
154
+ * Subscribe to order fill updates from multiple providers.
155
+ *
156
+ * @param params - Subscription parameters
157
+ * @returns Unsubscribe function
158
+ */
159
+ subscribeToOrderFills(params: MultiplexedOrderFillsParams): () => void;
160
+ /**
161
+ * Subscribe to order updates from multiple providers.
162
+ *
163
+ * @param params - Subscription parameters
164
+ * @returns Unsubscribe function
165
+ */
166
+ subscribeToOrders(params: MultiplexedOrdersParams): () => void;
167
+ /**
168
+ * Subscribe to account updates from multiple providers.
169
+ *
170
+ * @param params - Subscription parameters
171
+ * @returns Unsubscribe function
172
+ */
173
+ subscribeToAccount(params: MultiplexedAccountParams): () => void;
174
+ /**
175
+ * Aggregate cached prices based on mode.
176
+ *
177
+ * @param symbols - Symbols to include in result
178
+ * @param mode - Aggregation mode
179
+ * @returns Aggregated price updates
180
+ */
181
+ private aggregatePrices;
182
+ /**
183
+ * Find the best price from multiple provider prices.
184
+ * "Best" is defined as the price with the smallest spread.
185
+ *
186
+ * @param providerPrices - Map of provider prices for a symbol
187
+ * @returns Best price update or undefined
188
+ */
189
+ private findBestPrice;
190
+ /**
191
+ * Aggregate positions from all providers.
192
+ *
193
+ * @returns All cached positions
194
+ */
195
+ private aggregatePositions;
196
+ /**
197
+ * Aggregate orders from all providers.
198
+ *
199
+ * @returns All cached orders
200
+ */
201
+ private aggregateOrders;
202
+ /**
203
+ * Clear all cached data.
204
+ */
205
+ clearCache(): void;
206
+ /**
207
+ * Get cached price for a symbol from a specific provider.
208
+ *
209
+ * @param symbol - Market symbol
210
+ * @param providerId - Provider ID
211
+ * @returns Cached price update or undefined
212
+ */
213
+ getCachedPrice(symbol: string, providerId: PerpsProviderType): PriceUpdate | undefined;
214
+ /**
215
+ * Get all cached prices for a symbol.
216
+ *
217
+ * @param symbol - Market symbol
218
+ * @returns Map of provider ID to price update
219
+ */
220
+ getAllCachedPricesForSymbol(symbol: string): Map<PerpsProviderType, PriceUpdate> | undefined;
221
+ }
222
+ //# sourceMappingURL=SubscriptionMultiplexer.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionMultiplexer.d.mts","sourceRoot":"","sources":["../../src/aggregation/SubscriptionMultiplexer.ts"],"names":[],"mappings":"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"}