@metamask-previews/perps-controller 0.0.0-preview-685dbf46b → 1.0.0-preview-bc00f2c

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 (482) hide show
  1. package/CHANGELOG.md +30 -2
  2. package/dist/PerpsController.cjs +3077 -65
  3. package/dist/PerpsController.cjs.map +1 -1
  4. package/dist/PerpsController.d.cts +969 -82
  5. package/dist/PerpsController.d.cts.map +1 -1
  6. package/dist/PerpsController.d.mts +969 -82
  7. package/dist/PerpsController.d.mts.map +1 -1
  8. package/dist/PerpsController.mjs +3073 -62
  9. package/dist/PerpsController.mjs.map +1 -1
  10. package/dist/aggregation/SubscriptionMultiplexer.cjs +441 -0
  11. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
  12. package/dist/aggregation/SubscriptionMultiplexer.d.cts +171 -0
  13. package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
  14. package/dist/aggregation/SubscriptionMultiplexer.d.mts +171 -0
  15. package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
  16. package/dist/aggregation/SubscriptionMultiplexer.mjs +437 -0
  17. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -0
  18. package/dist/aggregation/index.cjs +9 -0
  19. package/dist/aggregation/index.cjs.map +1 -0
  20. package/dist/aggregation/index.d.cts +6 -0
  21. package/dist/aggregation/index.d.cts.map +1 -0
  22. package/dist/aggregation/index.d.mts +6 -0
  23. package/dist/aggregation/index.d.mts.map +1 -0
  24. package/dist/aggregation/index.mjs +5 -0
  25. package/dist/aggregation/index.mjs.map +1 -0
  26. package/dist/constants/chartConfig.cjs +227 -0
  27. package/dist/constants/chartConfig.cjs.map +1 -0
  28. package/dist/constants/chartConfig.d.cts +216 -0
  29. package/dist/constants/chartConfig.d.cts.map +1 -0
  30. package/dist/constants/chartConfig.d.mts +216 -0
  31. package/dist/constants/chartConfig.d.mts.map +1 -0
  32. package/dist/constants/chartConfig.mjs +221 -0
  33. package/dist/constants/chartConfig.mjs.map +1 -0
  34. package/dist/constants/eventNames.cjs +436 -0
  35. package/dist/constants/eventNames.cjs.map +1 -0
  36. package/dist/constants/eventNames.d.cts +387 -0
  37. package/dist/constants/eventNames.d.cts.map +1 -0
  38. package/dist/constants/eventNames.d.mts +387 -0
  39. package/dist/constants/eventNames.d.mts.map +1 -0
  40. package/dist/constants/eventNames.mjs +433 -0
  41. package/dist/constants/eventNames.mjs.map +1 -0
  42. package/dist/constants/hyperLiquidConfig.cjs +380 -0
  43. package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
  44. package/dist/constants/hyperLiquidConfig.d.cts +236 -0
  45. package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
  46. package/dist/constants/hyperLiquidConfig.d.mts +236 -0
  47. package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
  48. package/dist/constants/hyperLiquidConfig.mjs +371 -0
  49. package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
  50. package/dist/constants/index.cjs +28 -0
  51. package/dist/constants/index.cjs.map +1 -0
  52. package/dist/constants/index.d.cts +12 -0
  53. package/dist/constants/index.d.cts.map +1 -0
  54. package/dist/constants/index.d.mts +12 -0
  55. package/dist/constants/index.d.mts.map +1 -0
  56. package/dist/constants/index.mjs +12 -0
  57. package/dist/constants/index.mjs.map +1 -0
  58. package/dist/constants/myxConfig.cjs +229 -0
  59. package/dist/constants/myxConfig.cjs.map +1 -0
  60. package/dist/constants/myxConfig.d.cts +106 -0
  61. package/dist/constants/myxConfig.d.cts.map +1 -0
  62. package/dist/constants/myxConfig.d.mts +106 -0
  63. package/dist/constants/myxConfig.d.mts.map +1 -0
  64. package/dist/constants/myxConfig.mjs +219 -0
  65. package/dist/constants/myxConfig.mjs.map +1 -0
  66. package/dist/constants/orderTypes.cjs +31 -0
  67. package/dist/constants/orderTypes.cjs.map +1 -0
  68. package/dist/constants/orderTypes.d.cts +19 -0
  69. package/dist/constants/orderTypes.d.cts.map +1 -0
  70. package/dist/constants/orderTypes.d.mts +19 -0
  71. package/dist/constants/orderTypes.d.mts.map +1 -0
  72. package/dist/constants/orderTypes.mjs +27 -0
  73. package/dist/constants/orderTypes.mjs.map +1 -0
  74. package/dist/constants/performanceMetrics.cjs +63 -0
  75. package/dist/constants/performanceMetrics.cjs.map +1 -0
  76. package/dist/constants/performanceMetrics.d.cts +46 -0
  77. package/dist/constants/performanceMetrics.d.cts.map +1 -0
  78. package/dist/constants/performanceMetrics.d.mts +46 -0
  79. package/dist/constants/performanceMetrics.d.mts.map +1 -0
  80. package/dist/constants/performanceMetrics.mjs +60 -0
  81. package/dist/constants/performanceMetrics.mjs.map +1 -0
  82. package/dist/constants/perpsConfig.cjs +295 -0
  83. package/dist/constants/perpsConfig.cjs.map +1 -0
  84. package/dist/constants/perpsConfig.d.cts +221 -0
  85. package/dist/constants/perpsConfig.d.cts.map +1 -0
  86. package/dist/constants/perpsConfig.d.mts +221 -0
  87. package/dist/constants/perpsConfig.d.mts.map +1 -0
  88. package/dist/constants/perpsConfig.mjs +292 -0
  89. package/dist/constants/perpsConfig.mjs.map +1 -0
  90. package/dist/constants/transactionsHistoryConfig.cjs +19 -0
  91. package/dist/constants/transactionsHistoryConfig.cjs.map +1 -0
  92. package/dist/constants/transactionsHistoryConfig.d.cts +16 -0
  93. package/dist/constants/transactionsHistoryConfig.d.cts.map +1 -0
  94. package/dist/constants/transactionsHistoryConfig.d.mts +16 -0
  95. package/dist/constants/transactionsHistoryConfig.d.mts.map +1 -0
  96. package/dist/constants/transactionsHistoryConfig.mjs +16 -0
  97. package/dist/constants/transactionsHistoryConfig.mjs.map +1 -0
  98. package/dist/index.cjs +63 -1
  99. package/dist/index.cjs.map +1 -1
  100. package/dist/index.d.cts +38 -2
  101. package/dist/index.d.cts.map +1 -1
  102. package/dist/index.d.mts +38 -2
  103. package/dist/index.d.mts.map +1 -1
  104. package/dist/index.mjs +46 -1
  105. package/dist/index.mjs.map +1 -1
  106. package/dist/perpsErrorCodes.cjs +80 -0
  107. package/dist/perpsErrorCodes.cjs.map +1 -0
  108. package/dist/perpsErrorCodes.d.cts +65 -0
  109. package/dist/perpsErrorCodes.d.cts.map +1 -0
  110. package/dist/perpsErrorCodes.d.mts +65 -0
  111. package/dist/perpsErrorCodes.d.mts.map +1 -0
  112. package/dist/perpsErrorCodes.mjs +77 -0
  113. package/dist/perpsErrorCodes.mjs.map +1 -0
  114. package/dist/providers/AggregatedPerpsProvider.cjs +508 -0
  115. package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
  116. package/dist/providers/AggregatedPerpsProvider.d.cts +171 -0
  117. package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
  118. package/dist/providers/AggregatedPerpsProvider.d.mts +171 -0
  119. package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
  120. package/dist/providers/AggregatedPerpsProvider.mjs +504 -0
  121. package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
  122. package/dist/providers/HyperLiquidProvider.cjs +5679 -0
  123. package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
  124. package/dist/providers/HyperLiquidProvider.d.cts +516 -0
  125. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
  126. package/dist/providers/HyperLiquidProvider.d.mts +516 -0
  127. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
  128. package/dist/providers/HyperLiquidProvider.mjs +5675 -0
  129. package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
  130. package/dist/providers/MYXProvider.cjs +514 -0
  131. package/dist/providers/MYXProvider.cjs.map +1 -0
  132. package/dist/providers/MYXProvider.d.cts +105 -0
  133. package/dist/providers/MYXProvider.d.cts.map +1 -0
  134. package/dist/providers/MYXProvider.d.mts +105 -0
  135. package/dist/providers/MYXProvider.d.mts.map +1 -0
  136. package/dist/providers/MYXProvider.mjs +510 -0
  137. package/dist/providers/MYXProvider.mjs.map +1 -0
  138. package/dist/routing/ProviderRouter.cjs +154 -0
  139. package/dist/routing/ProviderRouter.cjs.map +1 -0
  140. package/dist/routing/ProviderRouter.d.cts +112 -0
  141. package/dist/routing/ProviderRouter.d.cts.map +1 -0
  142. package/dist/routing/ProviderRouter.d.mts +112 -0
  143. package/dist/routing/ProviderRouter.d.mts.map +1 -0
  144. package/dist/routing/ProviderRouter.mjs +150 -0
  145. package/dist/routing/ProviderRouter.mjs.map +1 -0
  146. package/dist/routing/index.cjs +9 -0
  147. package/dist/routing/index.cjs.map +1 -0
  148. package/dist/routing/index.d.cts +6 -0
  149. package/dist/routing/index.d.cts.map +1 -0
  150. package/dist/routing/index.d.mts +6 -0
  151. package/dist/routing/index.d.mts.map +1 -0
  152. package/dist/routing/index.mjs +5 -0
  153. package/dist/routing/index.mjs.map +1 -0
  154. package/dist/selectors.cjs +166 -0
  155. package/dist/selectors.cjs.map +1 -0
  156. package/dist/selectors.d.cts +362 -0
  157. package/dist/selectors.d.cts.map +1 -0
  158. package/dist/selectors.d.mts +362 -0
  159. package/dist/selectors.d.mts.map +1 -0
  160. package/dist/selectors.mjs +158 -0
  161. package/dist/selectors.mjs.map +1 -0
  162. package/dist/services/AccountService.cjs +324 -0
  163. package/dist/services/AccountService.cjs.map +1 -0
  164. package/dist/services/AccountService.d.cts +56 -0
  165. package/dist/services/AccountService.d.cts.map +1 -0
  166. package/dist/services/AccountService.d.mts +56 -0
  167. package/dist/services/AccountService.d.mts.map +1 -0
  168. package/dist/services/AccountService.mjs +320 -0
  169. package/dist/services/AccountService.mjs.map +1 -0
  170. package/dist/services/DataLakeService.cjs +233 -0
  171. package/dist/services/DataLakeService.cjs.map +1 -0
  172. package/dist/services/DataLakeService.d.cts +51 -0
  173. package/dist/services/DataLakeService.d.cts.map +1 -0
  174. package/dist/services/DataLakeService.d.mts +51 -0
  175. package/dist/services/DataLakeService.d.mts.map +1 -0
  176. package/dist/services/DataLakeService.mjs +229 -0
  177. package/dist/services/DataLakeService.mjs.map +1 -0
  178. package/dist/services/DepositService.cjs +98 -0
  179. package/dist/services/DepositService.cjs.map +1 -0
  180. package/dist/services/DepositService.d.cts +39 -0
  181. package/dist/services/DepositService.d.cts.map +1 -0
  182. package/dist/services/DepositService.d.mts +39 -0
  183. package/dist/services/DepositService.d.mts.map +1 -0
  184. package/dist/services/DepositService.mjs +94 -0
  185. package/dist/services/DepositService.mjs.map +1 -0
  186. package/dist/services/EligibilityService.cjs +173 -0
  187. package/dist/services/EligibilityService.cjs.map +1 -0
  188. package/dist/services/EligibilityService.d.cts +39 -0
  189. package/dist/services/EligibilityService.d.cts.map +1 -0
  190. package/dist/services/EligibilityService.d.mts +39 -0
  191. package/dist/services/EligibilityService.d.mts.map +1 -0
  192. package/dist/services/EligibilityService.mjs +169 -0
  193. package/dist/services/EligibilityService.mjs.map +1 -0
  194. package/dist/services/FeatureFlagConfigurationService.cjs +257 -0
  195. package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
  196. package/dist/services/FeatureFlagConfigurationService.d.cts +73 -0
  197. package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
  198. package/dist/services/FeatureFlagConfigurationService.d.mts +73 -0
  199. package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
  200. package/dist/services/FeatureFlagConfigurationService.mjs +253 -0
  201. package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
  202. package/dist/services/HyperLiquidClientService.cjs +867 -0
  203. package/dist/services/HyperLiquidClientService.cjs.map +1 -0
  204. package/dist/services/HyperLiquidClientService.d.cts +214 -0
  205. package/dist/services/HyperLiquidClientService.d.cts.map +1 -0
  206. package/dist/services/HyperLiquidClientService.d.mts +214 -0
  207. package/dist/services/HyperLiquidClientService.d.mts.map +1 -0
  208. package/dist/services/HyperLiquidClientService.mjs +862 -0
  209. package/dist/services/HyperLiquidClientService.mjs.map +1 -0
  210. package/dist/services/HyperLiquidSubscriptionService.cjs +2199 -0
  211. package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -0
  212. package/dist/services/HyperLiquidSubscriptionService.d.cts +187 -0
  213. package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -0
  214. package/dist/services/HyperLiquidSubscriptionService.d.mts +187 -0
  215. package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -0
  216. package/dist/services/HyperLiquidSubscriptionService.mjs +2195 -0
  217. package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -0
  218. package/dist/services/HyperLiquidWalletService.cjs +163 -0
  219. package/dist/services/HyperLiquidWalletService.cjs.map +1 -0
  220. package/dist/services/HyperLiquidWalletService.d.cts +78 -0
  221. package/dist/services/HyperLiquidWalletService.d.cts.map +1 -0
  222. package/dist/services/HyperLiquidWalletService.d.mts +78 -0
  223. package/dist/services/HyperLiquidWalletService.d.mts.map +1 -0
  224. package/dist/services/HyperLiquidWalletService.mjs +159 -0
  225. package/dist/services/HyperLiquidWalletService.mjs.map +1 -0
  226. package/dist/services/MYXClientService.cjs +304 -0
  227. package/dist/services/MYXClientService.cjs.map +1 -0
  228. package/dist/services/MYXClientService.d.cts +81 -0
  229. package/dist/services/MYXClientService.d.cts.map +1 -0
  230. package/dist/services/MYXClientService.d.mts +81 -0
  231. package/dist/services/MYXClientService.d.mts.map +1 -0
  232. package/dist/services/MYXClientService.mjs +300 -0
  233. package/dist/services/MYXClientService.mjs.map +1 -0
  234. package/dist/services/MarketDataService.cjs +848 -0
  235. package/dist/services/MarketDataService.cjs.map +1 -0
  236. package/dist/services/MarketDataService.d.cts +291 -0
  237. package/dist/services/MarketDataService.d.cts.map +1 -0
  238. package/dist/services/MarketDataService.d.mts +291 -0
  239. package/dist/services/MarketDataService.d.mts.map +1 -0
  240. package/dist/services/MarketDataService.mjs +844 -0
  241. package/dist/services/MarketDataService.mjs.map +1 -0
  242. package/dist/services/RewardsIntegrationService.cjs +120 -0
  243. package/dist/services/RewardsIntegrationService.cjs.map +1 -0
  244. package/dist/services/RewardsIntegrationService.d.cts +28 -0
  245. package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
  246. package/dist/services/RewardsIntegrationService.d.mts +28 -0
  247. package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
  248. package/dist/services/RewardsIntegrationService.mjs +116 -0
  249. package/dist/services/RewardsIntegrationService.mjs.map +1 -0
  250. package/dist/services/ServiceContext.cjs +3 -0
  251. package/dist/services/ServiceContext.cjs.map +1 -0
  252. package/dist/services/ServiceContext.d.cts +86 -0
  253. package/dist/services/ServiceContext.d.cts.map +1 -0
  254. package/dist/services/ServiceContext.d.mts +86 -0
  255. package/dist/services/ServiceContext.d.mts.map +1 -0
  256. package/dist/services/ServiceContext.mjs +2 -0
  257. package/dist/services/ServiceContext.mjs.map +1 -0
  258. package/dist/services/TradingReadinessCache.cjs +288 -0
  259. package/dist/services/TradingReadinessCache.cjs.map +1 -0
  260. package/dist/services/TradingReadinessCache.d.cts +174 -0
  261. package/dist/services/TradingReadinessCache.d.cts.map +1 -0
  262. package/dist/services/TradingReadinessCache.d.mts +174 -0
  263. package/dist/services/TradingReadinessCache.d.mts.map +1 -0
  264. package/dist/services/TradingReadinessCache.mjs +285 -0
  265. package/dist/services/TradingReadinessCache.mjs.map +1 -0
  266. package/dist/services/TradingService.cjs +1457 -0
  267. package/dist/services/TradingService.cjs.map +1 -0
  268. package/dist/services/TradingService.d.cts +195 -0
  269. package/dist/services/TradingService.d.cts.map +1 -0
  270. package/dist/services/TradingService.d.mts +195 -0
  271. package/dist/services/TradingService.d.mts.map +1 -0
  272. package/dist/services/TradingService.mjs +1453 -0
  273. package/dist/services/TradingService.mjs.map +1 -0
  274. package/dist/types/config.cjs +3 -0
  275. package/dist/types/config.cjs.map +1 -0
  276. package/dist/types/config.d.cts +49 -0
  277. package/dist/types/config.d.cts.map +1 -0
  278. package/dist/types/config.d.mts +49 -0
  279. package/dist/types/config.d.mts.map +1 -0
  280. package/dist/types/config.mjs +2 -0
  281. package/dist/types/config.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 +20 -0
  285. package/dist/types/hyperliquid-types.d.cts.map +1 -0
  286. package/dist/types/hyperliquid-types.d.mts +20 -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 +115 -0
  291. package/dist/types/index.cjs.map +1 -0
  292. package/dist/types/index.d.cts +1262 -0
  293. package/dist/types/index.d.cts.map +1 -0
  294. package/dist/types/index.d.mts +1262 -0
  295. package/dist/types/index.d.mts.map +1 -0
  296. package/dist/types/index.mjs +97 -0
  297. package/dist/types/index.mjs.map +1 -0
  298. package/dist/types/messenger.cjs +3 -0
  299. package/dist/types/messenger.cjs.map +1 -0
  300. package/dist/types/messenger.d.cts +27 -0
  301. package/dist/types/messenger.d.cts.map +1 -0
  302. package/dist/types/messenger.d.mts +27 -0
  303. package/dist/types/messenger.d.mts.map +1 -0
  304. package/dist/types/messenger.mjs +2 -0
  305. package/dist/types/messenger.mjs.map +1 -0
  306. package/dist/types/myx-types.cjs +25 -0
  307. package/dist/types/myx-types.cjs.map +1 -0
  308. package/dist/types/myx-types.d.cts +63 -0
  309. package/dist/types/myx-types.d.cts.map +1 -0
  310. package/dist/types/myx-types.d.mts +63 -0
  311. package/dist/types/myx-types.d.mts.map +1 -0
  312. package/dist/types/myx-types.mjs +22 -0
  313. package/dist/types/myx-types.mjs.map +1 -0
  314. package/dist/types/perps-types.cjs +4 -0
  315. package/dist/types/perps-types.cjs.map +1 -0
  316. package/dist/types/perps-types.d.cts +105 -0
  317. package/dist/types/perps-types.d.cts.map +1 -0
  318. package/dist/types/perps-types.d.mts +105 -0
  319. package/dist/types/perps-types.d.mts.map +1 -0
  320. package/dist/types/perps-types.mjs +2 -0
  321. package/dist/types/perps-types.mjs.map +1 -0
  322. package/dist/types/token.cjs +3 -0
  323. package/dist/types/token.cjs.map +1 -0
  324. package/dist/types/token.d.cts +25 -0
  325. package/dist/types/token.d.cts.map +1 -0
  326. package/dist/types/token.d.mts +25 -0
  327. package/dist/types/token.d.mts.map +1 -0
  328. package/dist/types/token.mjs +2 -0
  329. package/dist/types/token.mjs.map +1 -0
  330. package/dist/types/transactionTypes.cjs +28 -0
  331. package/dist/types/transactionTypes.cjs.map +1 -0
  332. package/dist/types/transactionTypes.d.cts +64 -0
  333. package/dist/types/transactionTypes.d.cts.map +1 -0
  334. package/dist/types/transactionTypes.d.mts +64 -0
  335. package/dist/types/transactionTypes.d.mts.map +1 -0
  336. package/dist/types/transactionTypes.mjs +23 -0
  337. package/dist/types/transactionTypes.mjs.map +1 -0
  338. package/dist/utils/accountUtils.cjs +100 -0
  339. package/dist/utils/accountUtils.cjs.map +1 -0
  340. package/dist/utils/accountUtils.d.cts +30 -0
  341. package/dist/utils/accountUtils.d.cts.map +1 -0
  342. package/dist/utils/accountUtils.d.mts +30 -0
  343. package/dist/utils/accountUtils.d.mts.map +1 -0
  344. package/dist/utils/accountUtils.mjs +92 -0
  345. package/dist/utils/accountUtils.mjs.map +1 -0
  346. package/dist/utils/errorUtils.cjs +35 -0
  347. package/dist/utils/errorUtils.cjs.map +1 -0
  348. package/dist/utils/errorUtils.d.cts +15 -0
  349. package/dist/utils/errorUtils.d.cts.map +1 -0
  350. package/dist/utils/errorUtils.d.mts +15 -0
  351. package/dist/utils/errorUtils.d.mts.map +1 -0
  352. package/dist/utils/errorUtils.mjs +31 -0
  353. package/dist/utils/errorUtils.mjs.map +1 -0
  354. package/dist/utils/hyperLiquidAdapter.cjs +331 -0
  355. package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
  356. package/dist/utils/hyperLiquidAdapter.d.cts +42 -0
  357. package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
  358. package/dist/utils/hyperLiquidAdapter.d.mts +42 -0
  359. package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
  360. package/dist/utils/hyperLiquidAdapter.mjs +316 -0
  361. package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
  362. package/dist/utils/hyperLiquidOrderBookProcessor.cjs +83 -0
  363. package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
  364. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +55 -0
  365. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
  366. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +55 -0
  367. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
  368. package/dist/utils/hyperLiquidOrderBookProcessor.mjs +78 -0
  369. package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -0
  370. package/dist/utils/hyperLiquidValidation.cjs +426 -0
  371. package/dist/utils/hyperLiquidValidation.cjs.map +1 -0
  372. package/dist/utils/hyperLiquidValidation.d.cts +143 -0
  373. package/dist/utils/hyperLiquidValidation.d.cts.map +1 -0
  374. package/dist/utils/hyperLiquidValidation.d.mts +143 -0
  375. package/dist/utils/hyperLiquidValidation.d.mts.map +1 -0
  376. package/dist/utils/hyperLiquidValidation.mjs +413 -0
  377. package/dist/utils/hyperLiquidValidation.mjs.map +1 -0
  378. package/dist/utils/idUtils.cjs +18 -0
  379. package/dist/utils/idUtils.cjs.map +1 -0
  380. package/dist/utils/idUtils.d.cts +6 -0
  381. package/dist/utils/idUtils.d.cts.map +1 -0
  382. package/dist/utils/idUtils.d.mts +6 -0
  383. package/dist/utils/idUtils.d.mts.map +1 -0
  384. package/dist/utils/idUtils.mjs +10 -0
  385. package/dist/utils/idUtils.mjs.map +1 -0
  386. package/dist/utils/index.cjs +59 -0
  387. package/dist/utils/index.cjs.map +1 -0
  388. package/dist/utils/index.d.cts +25 -0
  389. package/dist/utils/index.d.cts.map +1 -0
  390. package/dist/utils/index.d.mts +25 -0
  391. package/dist/utils/index.d.mts.map +1 -0
  392. package/dist/utils/index.mjs +30 -0
  393. package/dist/utils/index.mjs.map +1 -0
  394. package/dist/utils/marketDataTransform.cjs +211 -0
  395. package/dist/utils/marketDataTransform.cjs.map +1 -0
  396. package/dist/utils/marketDataTransform.d.cts +40 -0
  397. package/dist/utils/marketDataTransform.d.cts.map +1 -0
  398. package/dist/utils/marketDataTransform.d.mts +40 -0
  399. package/dist/utils/marketDataTransform.d.mts.map +1 -0
  400. package/dist/utils/marketDataTransform.mjs +205 -0
  401. package/dist/utils/marketDataTransform.mjs.map +1 -0
  402. package/dist/utils/marketUtils.cjs +151 -0
  403. package/dist/utils/marketUtils.cjs.map +1 -0
  404. package/dist/utils/marketUtils.d.cts +30 -0
  405. package/dist/utils/marketUtils.d.cts.map +1 -0
  406. package/dist/utils/marketUtils.d.mts +30 -0
  407. package/dist/utils/marketUtils.d.mts.map +1 -0
  408. package/dist/utils/marketUtils.mjs +138 -0
  409. package/dist/utils/marketUtils.mjs.map +1 -0
  410. package/dist/utils/myxAdapter.cjs +224 -0
  411. package/dist/utils/myxAdapter.cjs.map +1 -0
  412. package/dist/utils/myxAdapter.d.cts +81 -0
  413. package/dist/utils/myxAdapter.d.cts.map +1 -0
  414. package/dist/utils/myxAdapter.d.mts +81 -0
  415. package/dist/utils/myxAdapter.d.mts.map +1 -0
  416. package/dist/utils/myxAdapter.mjs +213 -0
  417. package/dist/utils/myxAdapter.mjs.map +1 -0
  418. package/dist/utils/orderCalculations.cjs +283 -0
  419. package/dist/utils/orderCalculations.cjs.map +1 -0
  420. package/dist/utils/orderCalculations.d.cts +107 -0
  421. package/dist/utils/orderCalculations.d.cts.map +1 -0
  422. package/dist/utils/orderCalculations.d.mts +107 -0
  423. package/dist/utils/orderCalculations.d.mts.map +1 -0
  424. package/dist/utils/orderCalculations.mjs +274 -0
  425. package/dist/utils/orderCalculations.mjs.map +1 -0
  426. package/dist/utils/rewardsUtils.cjs +98 -0
  427. package/dist/utils/rewardsUtils.cjs.map +1 -0
  428. package/dist/utils/rewardsUtils.d.cts +33 -0
  429. package/dist/utils/rewardsUtils.d.cts.map +1 -0
  430. package/dist/utils/rewardsUtils.d.mts +33 -0
  431. package/dist/utils/rewardsUtils.d.mts.map +1 -0
  432. package/dist/utils/rewardsUtils.mjs +92 -0
  433. package/dist/utils/rewardsUtils.mjs.map +1 -0
  434. package/dist/utils/significantFigures.cjs +88 -0
  435. package/dist/utils/significantFigures.cjs.map +1 -0
  436. package/dist/utils/significantFigures.d.cts +25 -0
  437. package/dist/utils/significantFigures.d.cts.map +1 -0
  438. package/dist/utils/significantFigures.d.mts +25 -0
  439. package/dist/utils/significantFigures.d.mts.map +1 -0
  440. package/dist/utils/significantFigures.mjs +82 -0
  441. package/dist/utils/significantFigures.mjs.map +1 -0
  442. package/dist/utils/sortMarkets.cjs +93 -0
  443. package/dist/utils/sortMarkets.cjs.map +1 -0
  444. package/dist/utils/sortMarkets.d.cts +27 -0
  445. package/dist/utils/sortMarkets.d.cts.map +1 -0
  446. package/dist/utils/sortMarkets.d.mts +27 -0
  447. package/dist/utils/sortMarkets.d.mts.map +1 -0
  448. package/dist/utils/sortMarkets.mjs +88 -0
  449. package/dist/utils/sortMarkets.mjs.map +1 -0
  450. package/dist/utils/standaloneInfoClient.cjs +70 -0
  451. package/dist/utils/standaloneInfoClient.cjs.map +1 -0
  452. package/dist/utils/standaloneInfoClient.d.cts +37 -0
  453. package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
  454. package/dist/utils/standaloneInfoClient.d.mts +37 -0
  455. package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
  456. package/dist/utils/standaloneInfoClient.mjs +64 -0
  457. package/dist/utils/standaloneInfoClient.mjs.map +1 -0
  458. package/dist/utils/stringParseUtils.cjs +18 -0
  459. package/dist/utils/stringParseUtils.cjs.map +1 -0
  460. package/dist/utils/stringParseUtils.d.cts +3 -0
  461. package/dist/utils/stringParseUtils.d.cts.map +1 -0
  462. package/dist/utils/stringParseUtils.d.mts +3 -0
  463. package/dist/utils/stringParseUtils.d.mts.map +1 -0
  464. package/dist/utils/stringParseUtils.mjs +13 -0
  465. package/dist/utils/stringParseUtils.mjs.map +1 -0
  466. package/dist/utils/transferData.cjs +33 -0
  467. package/dist/utils/transferData.cjs.map +1 -0
  468. package/dist/utils/transferData.d.cts +9 -0
  469. package/dist/utils/transferData.d.cts.map +1 -0
  470. package/dist/utils/transferData.d.mts +9 -0
  471. package/dist/utils/transferData.d.mts.map +1 -0
  472. package/dist/utils/transferData.mjs +29 -0
  473. package/dist/utils/transferData.mjs.map +1 -0
  474. package/dist/utils/wait.cjs +6 -0
  475. package/dist/utils/wait.cjs.map +1 -0
  476. package/dist/utils/wait.d.cts +2 -0
  477. package/dist/utils/wait.d.cts.map +1 -0
  478. package/dist/utils/wait.d.mts +2 -0
  479. package/dist/utils/wait.d.mts.map +1 -0
  480. package/dist/utils/wait.mjs +2 -0
  481. package/dist/utils/wait.mjs.map +1 -0
  482. package/package.json +16 -2
@@ -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,171 @@
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
+ #private;
110
+ /**
111
+ * Create a new SubscriptionMultiplexer.
112
+ *
113
+ * @param options - Optional configuration including logger for error reporting
114
+ */
115
+ constructor(options?: SubscriptionMultiplexerOptions);
116
+ /**
117
+ * Subscribe to price updates from multiple providers.
118
+ *
119
+ * @param params - Subscription parameters
120
+ * @returns Unsubscribe function
121
+ */
122
+ subscribeToPrices(params: MultiplexedPricesParams): () => void;
123
+ /**
124
+ * Subscribe to position updates from multiple providers.
125
+ *
126
+ * @param params - Subscription parameters
127
+ * @returns Unsubscribe function
128
+ */
129
+ subscribeToPositions(params: MultiplexedPositionsParams): () => void;
130
+ /**
131
+ * Subscribe to order fill updates from multiple providers.
132
+ *
133
+ * @param params - Subscription parameters
134
+ * @returns Unsubscribe function
135
+ */
136
+ subscribeToOrderFills(params: MultiplexedOrderFillsParams): () => void;
137
+ /**
138
+ * Subscribe to order updates from multiple providers.
139
+ *
140
+ * @param params - Subscription parameters
141
+ * @returns Unsubscribe function
142
+ */
143
+ subscribeToOrders(params: MultiplexedOrdersParams): () => void;
144
+ /**
145
+ * Subscribe to account updates from multiple providers.
146
+ *
147
+ * @param params - Subscription parameters
148
+ * @returns Unsubscribe function
149
+ */
150
+ subscribeToAccount(params: MultiplexedAccountParams): () => void;
151
+ /**
152
+ * Clear all cached data.
153
+ */
154
+ clearCache(): void;
155
+ /**
156
+ * Get cached price for a symbol from a specific provider.
157
+ *
158
+ * @param symbol - Market symbol
159
+ * @param providerId - Provider ID
160
+ * @returns Cached price update or undefined
161
+ */
162
+ getCachedPrice(symbol: string, providerId: PerpsProviderType): PriceUpdate | undefined;
163
+ /**
164
+ * Get all cached prices for a symbol.
165
+ *
166
+ * @param symbol - Market symbol
167
+ * @returns Map of provider ID to price update
168
+ */
169
+ getAllCachedPricesForSymbol(symbol: string): Map<PerpsProviderType, PriceUpdate> | undefined;
170
+ }
171
+ //# 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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"}
@@ -0,0 +1,437 @@
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
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
11
+ if (kind === "m") throw new TypeError("Private method is not writable");
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
15
+ };
16
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
+ };
21
+ var _SubscriptionMultiplexer_instances, _SubscriptionMultiplexer_logger, _SubscriptionMultiplexer_priceCache, _SubscriptionMultiplexer_positionCache, _SubscriptionMultiplexer_orderCache, _SubscriptionMultiplexer_accountCache, _SubscriptionMultiplexer_aggregatePrices, _SubscriptionMultiplexer_findBestPrice, _SubscriptionMultiplexer_aggregatePositions, _SubscriptionMultiplexer_aggregateOrders;
22
+ import { PERPS_CONSTANTS } from "../constants/perpsConfig.mjs";
23
+ import { ensureError } from "../utils/errorUtils.mjs";
24
+ /**
25
+ * SubscriptionMultiplexer manages real-time data subscriptions across
26
+ * multiple perps providers.
27
+ *
28
+ * Key features:
29
+ * - Subscribes to all providers simultaneously
30
+ * - Tags all updates with source providerId
31
+ * - Caches latest values for aggregation
32
+ * - Supports different aggregation modes for prices
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const mux = new SubscriptionMultiplexer();
37
+ *
38
+ * const unsubscribe = mux.subscribeToPrices({
39
+ * symbols: ['BTC', 'ETH'],
40
+ * providers: [
41
+ * ['hyperliquid', hlProvider],
42
+ * ['myx', myxProvider],
43
+ * ],
44
+ * callback: (prices) => {
45
+ * // prices have providerId injected
46
+ * prices.forEach(p => console.log(`${p.providerId}: ${p.symbol} = ${p.price}`));
47
+ * },
48
+ * aggregationMode: 'merge',
49
+ * });
50
+ *
51
+ * // Later: clean up
52
+ * unsubscribe();
53
+ * ```
54
+ */
55
+ export class SubscriptionMultiplexer {
56
+ /**
57
+ * Create a new SubscriptionMultiplexer.
58
+ *
59
+ * @param options - Optional configuration including logger for error reporting
60
+ */
61
+ constructor(options) {
62
+ _SubscriptionMultiplexer_instances.add(this);
63
+ /**
64
+ * Optional logger for error reporting
65
+ */
66
+ _SubscriptionMultiplexer_logger.set(this, void 0);
67
+ /**
68
+ * Cache of latest prices per symbol per provider
69
+ * Map<symbol, Map<providerId, PriceUpdate>>
70
+ */
71
+ _SubscriptionMultiplexer_priceCache.set(this, new Map());
72
+ /**
73
+ * Cache of latest positions per provider
74
+ * Map<providerId, Position[]>
75
+ */
76
+ _SubscriptionMultiplexer_positionCache.set(this, new Map());
77
+ /**
78
+ * Cache of latest orders per provider
79
+ * Map<providerId, Order[]>
80
+ */
81
+ _SubscriptionMultiplexer_orderCache.set(this, new Map());
82
+ /**
83
+ * Cache of latest account state per provider
84
+ * Map<providerId, AccountState>
85
+ */
86
+ _SubscriptionMultiplexer_accountCache.set(this, new Map());
87
+ __classPrivateFieldSet(this, _SubscriptionMultiplexer_logger, options?.logger, "f");
88
+ }
89
+ /**
90
+ * Subscribe to price updates from multiple providers.
91
+ *
92
+ * @param params - Subscription parameters
93
+ * @returns Unsubscribe function
94
+ */
95
+ subscribeToPrices(params) {
96
+ const { symbols, providers, callback, aggregationMode = 'merge', throttleMs, includeOrderBook, includeMarketData, } = params;
97
+ const unsubscribers = [];
98
+ // Subscribe to each provider with defensive error handling
99
+ for (const [providerId, provider] of providers) {
100
+ try {
101
+ const subscribeParams = {
102
+ symbols,
103
+ callback: (updates) => {
104
+ // Tag and cache each update
105
+ updates.forEach((update) => {
106
+ const taggedUpdate = { ...update, providerId };
107
+ // Initialize symbol cache if needed
108
+ if (!__classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").has(update.symbol)) {
109
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").set(update.symbol, new Map());
110
+ }
111
+ const symbolCache = __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").get(update.symbol);
112
+ if (symbolCache) {
113
+ symbolCache.set(providerId, taggedUpdate);
114
+ }
115
+ });
116
+ // Aggregate and emit based on mode
117
+ const aggregated = __classPrivateFieldGet(this, _SubscriptionMultiplexer_instances, "m", _SubscriptionMultiplexer_aggregatePrices).call(this, symbols, aggregationMode);
118
+ callback(aggregated);
119
+ },
120
+ throttleMs,
121
+ includeOrderBook,
122
+ includeMarketData,
123
+ };
124
+ const unsub = provider.subscribeToPrices(subscribeParams);
125
+ unsubscribers.push(unsub);
126
+ }
127
+ catch (error) {
128
+ // Log to Sentry before cleanup
129
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_logger, "f")?.error(ensureError(error, 'SubscriptionMultiplexer.subscribeToPrices'), {
130
+ tags: {
131
+ feature: PERPS_CONSTANTS.FeatureName,
132
+ provider: providerId,
133
+ method: 'subscribeToPrices',
134
+ },
135
+ context: {
136
+ name: 'SubscriptionMultiplexer',
137
+ data: { subscribedCount: unsubscribers.length },
138
+ },
139
+ });
140
+ // Clean up any subscriptions created before the failure
141
+ unsubscribers.forEach((unsub) => unsub());
142
+ throw error;
143
+ }
144
+ }
145
+ // Return combined unsubscribe function
146
+ return () => {
147
+ unsubscribers.forEach((unsub) => unsub());
148
+ // Optionally clear cache for these symbols
149
+ symbols.forEach((symbol) => {
150
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").delete(symbol);
151
+ });
152
+ };
153
+ }
154
+ /**
155
+ * Subscribe to position updates from multiple providers.
156
+ *
157
+ * @param params - Subscription parameters
158
+ * @returns Unsubscribe function
159
+ */
160
+ subscribeToPositions(params) {
161
+ const { providers, callback } = params;
162
+ const unsubscribers = [];
163
+ for (const [providerId, provider] of providers) {
164
+ try {
165
+ const subscribeParams = {
166
+ callback: (positions) => {
167
+ // Tag positions with providerId and cache
168
+ const taggedPositions = positions.map((pos) => ({
169
+ ...pos,
170
+ providerId,
171
+ }));
172
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_positionCache, "f").set(providerId, taggedPositions);
173
+ // Emit aggregated positions from all providers
174
+ const allPositions = __classPrivateFieldGet(this, _SubscriptionMultiplexer_instances, "m", _SubscriptionMultiplexer_aggregatePositions).call(this);
175
+ callback(allPositions);
176
+ },
177
+ };
178
+ const unsub = provider.subscribeToPositions(subscribeParams);
179
+ unsubscribers.push(unsub);
180
+ }
181
+ catch (error) {
182
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_logger, "f")?.error(ensureError(error, 'SubscriptionMultiplexer.subscribeToPositions'), {
183
+ tags: {
184
+ feature: PERPS_CONSTANTS.FeatureName,
185
+ provider: providerId,
186
+ method: 'subscribeToPositions',
187
+ },
188
+ context: {
189
+ name: 'SubscriptionMultiplexer',
190
+ data: { subscribedCount: unsubscribers.length },
191
+ },
192
+ });
193
+ unsubscribers.forEach((unsub) => unsub());
194
+ throw error;
195
+ }
196
+ }
197
+ return () => {
198
+ unsubscribers.forEach((unsub) => unsub());
199
+ // Clear position cache for these providers
200
+ providers.forEach(([providerId]) => {
201
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_positionCache, "f").delete(providerId);
202
+ });
203
+ };
204
+ }
205
+ /**
206
+ * Subscribe to order fill updates from multiple providers.
207
+ *
208
+ * @param params - Subscription parameters
209
+ * @returns Unsubscribe function
210
+ */
211
+ subscribeToOrderFills(params) {
212
+ const { providers, callback } = params;
213
+ const unsubscribers = [];
214
+ for (const [providerId, provider] of providers) {
215
+ try {
216
+ const subscribeParams = {
217
+ callback: (fills, isSnapshot) => {
218
+ // Tag fills with providerId
219
+ const taggedFills = fills.map((fill) => ({
220
+ ...fill,
221
+ providerId,
222
+ }));
223
+ // For fills, we don't aggregate - emit immediately with tags
224
+ callback(taggedFills, isSnapshot);
225
+ },
226
+ };
227
+ const unsub = provider.subscribeToOrderFills(subscribeParams);
228
+ unsubscribers.push(unsub);
229
+ }
230
+ catch (error) {
231
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_logger, "f")?.error(ensureError(error, 'SubscriptionMultiplexer.subscribeToOrderFills'), {
232
+ tags: {
233
+ feature: PERPS_CONSTANTS.FeatureName,
234
+ provider: providerId,
235
+ method: 'subscribeToOrderFills',
236
+ },
237
+ context: {
238
+ name: 'SubscriptionMultiplexer',
239
+ data: { subscribedCount: unsubscribers.length },
240
+ },
241
+ });
242
+ unsubscribers.forEach((unsub) => unsub());
243
+ throw error;
244
+ }
245
+ }
246
+ return () => {
247
+ unsubscribers.forEach((unsub) => unsub());
248
+ };
249
+ }
250
+ /**
251
+ * Subscribe to order updates from multiple providers.
252
+ *
253
+ * @param params - Subscription parameters
254
+ * @returns Unsubscribe function
255
+ */
256
+ subscribeToOrders(params) {
257
+ const { providers, callback } = params;
258
+ const unsubscribers = [];
259
+ for (const [providerId, provider] of providers) {
260
+ try {
261
+ const subscribeParams = {
262
+ callback: (orders) => {
263
+ // Tag orders with providerId and cache
264
+ const taggedOrders = orders.map((order) => ({
265
+ ...order,
266
+ providerId,
267
+ }));
268
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_orderCache, "f").set(providerId, taggedOrders);
269
+ // Emit aggregated orders from all providers
270
+ const allOrders = __classPrivateFieldGet(this, _SubscriptionMultiplexer_instances, "m", _SubscriptionMultiplexer_aggregateOrders).call(this);
271
+ callback(allOrders);
272
+ },
273
+ };
274
+ const unsub = provider.subscribeToOrders(subscribeParams);
275
+ unsubscribers.push(unsub);
276
+ }
277
+ catch (error) {
278
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_logger, "f")?.error(ensureError(error, 'SubscriptionMultiplexer.subscribeToOrders'), {
279
+ tags: {
280
+ feature: PERPS_CONSTANTS.FeatureName,
281
+ provider: providerId,
282
+ method: 'subscribeToOrders',
283
+ },
284
+ context: {
285
+ name: 'SubscriptionMultiplexer',
286
+ data: { subscribedCount: unsubscribers.length },
287
+ },
288
+ });
289
+ unsubscribers.forEach((unsub) => unsub());
290
+ throw error;
291
+ }
292
+ }
293
+ return () => {
294
+ unsubscribers.forEach((unsub) => unsub());
295
+ providers.forEach(([providerId]) => {
296
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_orderCache, "f").delete(providerId);
297
+ });
298
+ };
299
+ }
300
+ /**
301
+ * Subscribe to account updates from multiple providers.
302
+ *
303
+ * @param params - Subscription parameters
304
+ * @returns Unsubscribe function
305
+ */
306
+ subscribeToAccount(params) {
307
+ const { providers, callback } = params;
308
+ const unsubscribers = [];
309
+ for (const [providerId, provider] of providers) {
310
+ try {
311
+ const subscribeParams = {
312
+ callback: (account) => {
313
+ if (account === null) {
314
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_accountCache, "f").delete(providerId);
315
+ }
316
+ else {
317
+ // Tag account with providerId and cache
318
+ const taggedAccount = {
319
+ ...account,
320
+ providerId,
321
+ };
322
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_accountCache, "f").set(providerId, taggedAccount);
323
+ }
324
+ // Emit all cached account states
325
+ const allAccounts = Array.from(__classPrivateFieldGet(this, _SubscriptionMultiplexer_accountCache, "f").values());
326
+ callback(allAccounts);
327
+ },
328
+ };
329
+ const unsub = provider.subscribeToAccount(subscribeParams);
330
+ unsubscribers.push(unsub);
331
+ }
332
+ catch (error) {
333
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_logger, "f")?.error(ensureError(error, 'SubscriptionMultiplexer.subscribeToAccount'), {
334
+ tags: {
335
+ feature: PERPS_CONSTANTS.FeatureName,
336
+ provider: providerId,
337
+ method: 'subscribeToAccount',
338
+ },
339
+ context: {
340
+ name: 'SubscriptionMultiplexer',
341
+ data: { subscribedCount: unsubscribers.length },
342
+ },
343
+ });
344
+ unsubscribers.forEach((unsub) => unsub());
345
+ throw error;
346
+ }
347
+ }
348
+ return () => {
349
+ unsubscribers.forEach((unsub) => unsub());
350
+ providers.forEach(([providerId]) => {
351
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_accountCache, "f").delete(providerId);
352
+ });
353
+ };
354
+ }
355
+ /**
356
+ * Clear all cached data.
357
+ */
358
+ clearCache() {
359
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").clear();
360
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_positionCache, "f").clear();
361
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_orderCache, "f").clear();
362
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_accountCache, "f").clear();
363
+ }
364
+ /**
365
+ * Get cached price for a symbol from a specific provider.
366
+ *
367
+ * @param symbol - Market symbol
368
+ * @param providerId - Provider ID
369
+ * @returns Cached price update or undefined
370
+ */
371
+ getCachedPrice(symbol, providerId) {
372
+ return __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").get(symbol)?.get(providerId);
373
+ }
374
+ /**
375
+ * Get all cached prices for a symbol.
376
+ *
377
+ * @param symbol - Market symbol
378
+ * @returns Map of provider ID to price update
379
+ */
380
+ getAllCachedPricesForSymbol(symbol) {
381
+ return __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").get(symbol);
382
+ }
383
+ }
384
+ _SubscriptionMultiplexer_logger = new WeakMap(), _SubscriptionMultiplexer_priceCache = new WeakMap(), _SubscriptionMultiplexer_positionCache = new WeakMap(), _SubscriptionMultiplexer_orderCache = new WeakMap(), _SubscriptionMultiplexer_accountCache = new WeakMap(), _SubscriptionMultiplexer_instances = new WeakSet(), _SubscriptionMultiplexer_aggregatePrices = function _SubscriptionMultiplexer_aggregatePrices(symbols, mode) {
385
+ const result = [];
386
+ symbols.forEach((symbol) => {
387
+ const providerPrices = __classPrivateFieldGet(this, _SubscriptionMultiplexer_priceCache, "f").get(symbol);
388
+ if (!providerPrices || providerPrices.size === 0) {
389
+ return;
390
+ }
391
+ if (mode === 'merge') {
392
+ // Return all prices (one per provider)
393
+ providerPrices.forEach((price) => {
394
+ result.push(price);
395
+ });
396
+ }
397
+ else {
398
+ // 'best_price': Return the best price across providers
399
+ const best = __classPrivateFieldGet(this, _SubscriptionMultiplexer_instances, "m", _SubscriptionMultiplexer_findBestPrice).call(this, providerPrices);
400
+ if (best) {
401
+ result.push(best);
402
+ }
403
+ }
404
+ });
405
+ return result;
406
+ }, _SubscriptionMultiplexer_findBestPrice = function _SubscriptionMultiplexer_findBestPrice(providerPrices) {
407
+ let bestPrice;
408
+ let smallestSpread = Infinity;
409
+ providerPrices.forEach((price) => {
410
+ if (price.spread === undefined) {
411
+ // No spread info - just use the first one
412
+ bestPrice ?? (bestPrice = price);
413
+ }
414
+ else {
415
+ // If spread is available, use it to determine best
416
+ const spreadValue = parseFloat(price.spread);
417
+ if (!isNaN(spreadValue) && spreadValue < smallestSpread) {
418
+ smallestSpread = spreadValue;
419
+ bestPrice = price;
420
+ }
421
+ }
422
+ });
423
+ return bestPrice;
424
+ }, _SubscriptionMultiplexer_aggregatePositions = function _SubscriptionMultiplexer_aggregatePositions() {
425
+ const allPositions = [];
426
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_positionCache, "f").forEach((positions) => {
427
+ allPositions.push(...positions);
428
+ });
429
+ return allPositions;
430
+ }, _SubscriptionMultiplexer_aggregateOrders = function _SubscriptionMultiplexer_aggregateOrders() {
431
+ const allOrders = [];
432
+ __classPrivateFieldGet(this, _SubscriptionMultiplexer_orderCache, "f").forEach((orders) => {
433
+ allOrders.push(...orders);
434
+ });
435
+ return allOrders;
436
+ };
437
+ //# sourceMappingURL=SubscriptionMultiplexer.mjs.map