@metamask-previews/perps-controller 0.0.0-preview-e4aa1532 → 0.0.0-preview-6dfa4aeba

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 +1 -11
  2. package/dist/PerpsController.cjs +66 -2224
  3. package/dist/PerpsController.cjs.map +1 -1
  4. package/dist/PerpsController.d.cts +79 -933
  5. package/dist/PerpsController.d.cts.map +1 -1
  6. package/dist/PerpsController.d.mts +79 -933
  7. package/dist/PerpsController.d.mts.map +1 -1
  8. package/dist/PerpsController.mjs +64 -2221
  9. package/dist/PerpsController.mjs.map +1 -1
  10. package/dist/index.cjs +1 -32
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +2 -6
  13. package/dist/index.d.cts.map +1 -1
  14. package/dist/index.d.mts +2 -6
  15. package/dist/index.d.mts.map +1 -1
  16. package/dist/index.mjs +1 -9
  17. package/dist/index.mjs.map +1 -1
  18. package/package.json +4 -19
  19. package/dist/__mocks__/hyperliquidMock.cjs +0 -68
  20. package/dist/__mocks__/hyperliquidMock.cjs.map +0 -1
  21. package/dist/__mocks__/hyperliquidMock.d.cts +0 -15
  22. package/dist/__mocks__/hyperliquidMock.d.cts.map +0 -1
  23. package/dist/__mocks__/hyperliquidMock.d.mts +0 -15
  24. package/dist/__mocks__/hyperliquidMock.d.mts.map +0 -1
  25. package/dist/__mocks__/hyperliquidMock.mjs +0 -65
  26. package/dist/__mocks__/hyperliquidMock.mjs.map +0 -1
  27. package/dist/__mocks__/providerMocks.cjs +0 -144
  28. package/dist/__mocks__/providerMocks.cjs.map +0 -1
  29. package/dist/__mocks__/providerMocks.d.cts +0 -44
  30. package/dist/__mocks__/providerMocks.d.cts.map +0 -1
  31. package/dist/__mocks__/providerMocks.d.mts +0 -44
  32. package/dist/__mocks__/providerMocks.d.mts.map +0 -1
  33. package/dist/__mocks__/providerMocks.mjs +0 -136
  34. package/dist/__mocks__/providerMocks.mjs.map +0 -1
  35. package/dist/__mocks__/serviceMocks.cjs +0 -187
  36. package/dist/__mocks__/serviceMocks.cjs.map +0 -1
  37. package/dist/__mocks__/serviceMocks.d.cts +0 -58
  38. package/dist/__mocks__/serviceMocks.d.cts.map +0 -1
  39. package/dist/__mocks__/serviceMocks.d.mts +0 -58
  40. package/dist/__mocks__/serviceMocks.d.mts.map +0 -1
  41. package/dist/__mocks__/serviceMocks.mjs +0 -180
  42. package/dist/__mocks__/serviceMocks.mjs.map +0 -1
  43. package/dist/aggregation/SubscriptionMultiplexer.cjs +0 -459
  44. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +0 -1
  45. package/dist/aggregation/SubscriptionMultiplexer.d.cts +0 -222
  46. package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +0 -1
  47. package/dist/aggregation/SubscriptionMultiplexer.d.mts +0 -222
  48. package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +0 -1
  49. package/dist/aggregation/SubscriptionMultiplexer.mjs +0 -455
  50. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +0 -1
  51. package/dist/aggregation/index.cjs +0 -9
  52. package/dist/aggregation/index.cjs.map +0 -1
  53. package/dist/aggregation/index.d.cts +0 -6
  54. package/dist/aggregation/index.d.cts.map +0 -1
  55. package/dist/aggregation/index.d.mts +0 -6
  56. package/dist/aggregation/index.d.mts.map +0 -1
  57. package/dist/aggregation/index.mjs +0 -5
  58. package/dist/aggregation/index.mjs.map +0 -1
  59. package/dist/constants/eventNames.cjs +0 -117
  60. package/dist/constants/eventNames.cjs.map +0 -1
  61. package/dist/constants/eventNames.d.cts +0 -106
  62. package/dist/constants/eventNames.d.cts.map +0 -1
  63. package/dist/constants/eventNames.d.mts +0 -106
  64. package/dist/constants/eventNames.d.mts.map +0 -1
  65. package/dist/constants/eventNames.mjs +0 -114
  66. package/dist/constants/eventNames.mjs.map +0 -1
  67. package/dist/constants/hyperLiquidConfig.cjs +0 -366
  68. package/dist/constants/hyperLiquidConfig.cjs.map +0 -1
  69. package/dist/constants/hyperLiquidConfig.d.cts +0 -276
  70. package/dist/constants/hyperLiquidConfig.d.cts.map +0 -1
  71. package/dist/constants/hyperLiquidConfig.d.mts +0 -276
  72. package/dist/constants/hyperLiquidConfig.d.mts.map +0 -1
  73. package/dist/constants/hyperLiquidConfig.mjs +0 -357
  74. package/dist/constants/hyperLiquidConfig.mjs.map +0 -1
  75. package/dist/constants/index.cjs +0 -23
  76. package/dist/constants/index.cjs.map +0 -1
  77. package/dist/constants/index.d.cts +0 -7
  78. package/dist/constants/index.d.cts.map +0 -1
  79. package/dist/constants/index.d.mts +0 -7
  80. package/dist/constants/index.d.mts.map +0 -1
  81. package/dist/constants/index.mjs +0 -7
  82. package/dist/constants/index.mjs.map +0 -1
  83. package/dist/constants/orderTypes.cjs +0 -31
  84. package/dist/constants/orderTypes.cjs.map +0 -1
  85. package/dist/constants/orderTypes.d.cts +0 -19
  86. package/dist/constants/orderTypes.d.cts.map +0 -1
  87. package/dist/constants/orderTypes.d.mts +0 -19
  88. package/dist/constants/orderTypes.d.mts.map +0 -1
  89. package/dist/constants/orderTypes.mjs +0 -27
  90. package/dist/constants/orderTypes.mjs.map +0 -1
  91. package/dist/constants/performanceMetrics.cjs +0 -61
  92. package/dist/constants/performanceMetrics.cjs.map +0 -1
  93. package/dist/constants/performanceMetrics.d.cts +0 -44
  94. package/dist/constants/performanceMetrics.d.cts.map +0 -1
  95. package/dist/constants/performanceMetrics.d.mts +0 -44
  96. package/dist/constants/performanceMetrics.d.mts.map +0 -1
  97. package/dist/constants/performanceMetrics.mjs +0 -58
  98. package/dist/constants/performanceMetrics.mjs.map +0 -1
  99. package/dist/constants/perpsConfig.cjs +0 -461
  100. package/dist/constants/perpsConfig.cjs.map +0 -1
  101. package/dist/constants/perpsConfig.d.cts +0 -343
  102. package/dist/constants/perpsConfig.d.cts.map +0 -1
  103. package/dist/constants/perpsConfig.d.mts +0 -343
  104. package/dist/constants/perpsConfig.d.mts.map +0 -1
  105. package/dist/constants/perpsConfig.mjs +0 -458
  106. package/dist/constants/perpsConfig.mjs.map +0 -1
  107. package/dist/constants/perpsErrorCodes.cjs +0 -79
  108. package/dist/constants/perpsErrorCodes.cjs.map +0 -1
  109. package/dist/constants/perpsErrorCodes.d.cts +0 -64
  110. package/dist/constants/perpsErrorCodes.d.cts.map +0 -1
  111. package/dist/constants/perpsErrorCodes.d.mts +0 -64
  112. package/dist/constants/perpsErrorCodes.d.mts.map +0 -1
  113. package/dist/constants/perpsErrorCodes.mjs +0 -76
  114. package/dist/constants/perpsErrorCodes.mjs.map +0 -1
  115. package/dist/platform-services/HyperLiquidClientService.cjs +0 -857
  116. package/dist/platform-services/HyperLiquidClientService.cjs.map +0 -1
  117. package/dist/platform-services/HyperLiquidClientService.d.cts +0 -263
  118. package/dist/platform-services/HyperLiquidClientService.d.cts.map +0 -1
  119. package/dist/platform-services/HyperLiquidClientService.d.mts +0 -263
  120. package/dist/platform-services/HyperLiquidClientService.d.mts.map +0 -1
  121. package/dist/platform-services/HyperLiquidClientService.mjs +0 -853
  122. package/dist/platform-services/HyperLiquidClientService.mjs.map +0 -1
  123. package/dist/platform-services/HyperLiquidSubscriptionService.cjs +0 -2170
  124. package/dist/platform-services/HyperLiquidSubscriptionService.cjs.map +0 -1
  125. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts +0 -424
  126. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts.map +0 -1
  127. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts +0 -424
  128. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts.map +0 -1
  129. package/dist/platform-services/HyperLiquidSubscriptionService.mjs +0 -2166
  130. package/dist/platform-services/HyperLiquidSubscriptionService.mjs.map +0 -1
  131. package/dist/platform-services/HyperLiquidWalletService.cjs +0 -140
  132. package/dist/platform-services/HyperLiquidWalletService.cjs.map +0 -1
  133. package/dist/platform-services/HyperLiquidWalletService.d.cts +0 -78
  134. package/dist/platform-services/HyperLiquidWalletService.d.cts.map +0 -1
  135. package/dist/platform-services/HyperLiquidWalletService.d.mts +0 -78
  136. package/dist/platform-services/HyperLiquidWalletService.d.mts.map +0 -1
  137. package/dist/platform-services/HyperLiquidWalletService.mjs +0 -136
  138. package/dist/platform-services/HyperLiquidWalletService.mjs.map +0 -1
  139. package/dist/providers/AggregatedPerpsProvider.cjs +0 -777
  140. package/dist/providers/AggregatedPerpsProvider.cjs.map +0 -1
  141. package/dist/providers/AggregatedPerpsProvider.d.cts +0 -466
  142. package/dist/providers/AggregatedPerpsProvider.d.cts.map +0 -1
  143. package/dist/providers/AggregatedPerpsProvider.d.mts +0 -466
  144. package/dist/providers/AggregatedPerpsProvider.d.mts.map +0 -1
  145. package/dist/providers/AggregatedPerpsProvider.mjs +0 -773
  146. package/dist/providers/AggregatedPerpsProvider.mjs.map +0 -1
  147. package/dist/providers/HyperLiquidProvider.cjs +0 -5172
  148. package/dist/providers/HyperLiquidProvider.cjs.map +0 -1
  149. package/dist/providers/HyperLiquidProvider.d.cts +0 -881
  150. package/dist/providers/HyperLiquidProvider.d.cts.map +0 -1
  151. package/dist/providers/HyperLiquidProvider.d.mts +0 -881
  152. package/dist/providers/HyperLiquidProvider.d.mts.map +0 -1
  153. package/dist/providers/HyperLiquidProvider.mjs +0 -5168
  154. package/dist/providers/HyperLiquidProvider.mjs.map +0 -1
  155. package/dist/providers/index.cjs +0 -11
  156. package/dist/providers/index.cjs.map +0 -1
  157. package/dist/providers/index.d.cts +0 -6
  158. package/dist/providers/index.d.cts.map +0 -1
  159. package/dist/providers/index.d.mts +0 -6
  160. package/dist/providers/index.d.mts.map +0 -1
  161. package/dist/providers/index.mjs +0 -6
  162. package/dist/providers/index.mjs.map +0 -1
  163. package/dist/routing/ProviderRouter.cjs +0 -148
  164. package/dist/routing/ProviderRouter.cjs.map +0 -1
  165. package/dist/routing/ProviderRouter.d.cts +0 -124
  166. package/dist/routing/ProviderRouter.d.cts.map +0 -1
  167. package/dist/routing/ProviderRouter.d.mts +0 -124
  168. package/dist/routing/ProviderRouter.d.mts.map +0 -1
  169. package/dist/routing/ProviderRouter.mjs +0 -144
  170. package/dist/routing/ProviderRouter.mjs.map +0 -1
  171. package/dist/routing/index.cjs +0 -9
  172. package/dist/routing/index.cjs.map +0 -1
  173. package/dist/routing/index.d.cts +0 -6
  174. package/dist/routing/index.d.cts.map +0 -1
  175. package/dist/routing/index.d.mts +0 -6
  176. package/dist/routing/index.d.mts.map +0 -1
  177. package/dist/routing/index.mjs +0 -5
  178. package/dist/routing/index.mjs.map +0 -1
  179. package/dist/selectors.cjs +0 -161
  180. package/dist/selectors.cjs.map +0 -1
  181. package/dist/selectors.d.cts +0 -345
  182. package/dist/selectors.d.cts.map +0 -1
  183. package/dist/selectors.d.mts +0 -345
  184. package/dist/selectors.d.mts.map +0 -1
  185. package/dist/selectors.mjs +0 -153
  186. package/dist/selectors.mjs.map +0 -1
  187. package/dist/services/AccountService.cjs +0 -313
  188. package/dist/services/AccountService.cjs.map +0 -1
  189. package/dist/services/AccountService.d.cts +0 -53
  190. package/dist/services/AccountService.d.cts.map +0 -1
  191. package/dist/services/AccountService.d.mts +0 -53
  192. package/dist/services/AccountService.d.mts.map +0 -1
  193. package/dist/services/AccountService.mjs +0 -309
  194. package/dist/services/AccountService.mjs.map +0 -1
  195. package/dist/services/DataLakeService.cjs +0 -219
  196. package/dist/services/DataLakeService.cjs.map +0 -1
  197. package/dist/services/DataLakeService.d.cts +0 -49
  198. package/dist/services/DataLakeService.d.cts.map +0 -1
  199. package/dist/services/DataLakeService.d.mts +0 -49
  200. package/dist/services/DataLakeService.d.mts.map +0 -1
  201. package/dist/services/DataLakeService.mjs +0 -215
  202. package/dist/services/DataLakeService.mjs.map +0 -1
  203. package/dist/services/DepositService.cjs +0 -96
  204. package/dist/services/DepositService.cjs.map +0 -1
  205. package/dist/services/DepositService.d.cts +0 -37
  206. package/dist/services/DepositService.d.cts.map +0 -1
  207. package/dist/services/DepositService.d.mts +0 -37
  208. package/dist/services/DepositService.d.mts.map +0 -1
  209. package/dist/services/DepositService.mjs +0 -92
  210. package/dist/services/DepositService.mjs.map +0 -1
  211. package/dist/services/EligibilityService.cjs +0 -156
  212. package/dist/services/EligibilityService.cjs.map +0 -1
  213. package/dist/services/EligibilityService.d.cts +0 -48
  214. package/dist/services/EligibilityService.d.cts.map +0 -1
  215. package/dist/services/EligibilityService.d.mts +0 -48
  216. package/dist/services/EligibilityService.d.mts.map +0 -1
  217. package/dist/services/EligibilityService.mjs +0 -152
  218. package/dist/services/EligibilityService.mjs.map +0 -1
  219. package/dist/services/FeatureFlagConfigurationService.cjs +0 -258
  220. package/dist/services/FeatureFlagConfigurationService.cjs.map +0 -1
  221. package/dist/services/FeatureFlagConfigurationService.d.cts +0 -100
  222. package/dist/services/FeatureFlagConfigurationService.d.cts.map +0 -1
  223. package/dist/services/FeatureFlagConfigurationService.d.mts +0 -100
  224. package/dist/services/FeatureFlagConfigurationService.d.mts.map +0 -1
  225. package/dist/services/FeatureFlagConfigurationService.mjs +0 -254
  226. package/dist/services/FeatureFlagConfigurationService.mjs.map +0 -1
  227. package/dist/services/MarketDataService.cjs +0 -875
  228. package/dist/services/MarketDataService.cjs.map +0 -1
  229. package/dist/services/MarketDataService.d.cts +0 -289
  230. package/dist/services/MarketDataService.d.cts.map +0 -1
  231. package/dist/services/MarketDataService.d.mts +0 -289
  232. package/dist/services/MarketDataService.d.mts.map +0 -1
  233. package/dist/services/MarketDataService.mjs +0 -871
  234. package/dist/services/MarketDataService.mjs.map +0 -1
  235. package/dist/services/RewardsIntegrationService.cjs +0 -94
  236. package/dist/services/RewardsIntegrationService.cjs.map +0 -1
  237. package/dist/services/RewardsIntegrationService.d.cts +0 -30
  238. package/dist/services/RewardsIntegrationService.d.cts.map +0 -1
  239. package/dist/services/RewardsIntegrationService.d.mts +0 -30
  240. package/dist/services/RewardsIntegrationService.d.mts.map +0 -1
  241. package/dist/services/RewardsIntegrationService.mjs +0 -90
  242. package/dist/services/RewardsIntegrationService.mjs.map +0 -1
  243. package/dist/services/ServiceContext.cjs +0 -3
  244. package/dist/services/ServiceContext.cjs.map +0 -1
  245. package/dist/services/ServiceContext.d.cts +0 -110
  246. package/dist/services/ServiceContext.d.cts.map +0 -1
  247. package/dist/services/ServiceContext.d.mts +0 -110
  248. package/dist/services/ServiceContext.d.mts.map +0 -1
  249. package/dist/services/ServiceContext.mjs +0 -2
  250. package/dist/services/ServiceContext.mjs.map +0 -1
  251. package/dist/services/TradingService.cjs +0 -1481
  252. package/dist/services/TradingService.cjs.map +0 -1
  253. package/dist/services/TradingService.d.cts +0 -308
  254. package/dist/services/TradingService.d.cts.map +0 -1
  255. package/dist/services/TradingService.d.mts +0 -308
  256. package/dist/services/TradingService.d.mts.map +0 -1
  257. package/dist/services/TradingService.mjs +0 -1477
  258. package/dist/services/TradingService.mjs.map +0 -1
  259. package/dist/services/index.cjs +0 -26
  260. package/dist/services/index.cjs.map +0 -1
  261. package/dist/services/index.d.cts +0 -11
  262. package/dist/services/index.d.cts.map +0 -1
  263. package/dist/services/index.d.mts +0 -11
  264. package/dist/services/index.d.mts.map +0 -1
  265. package/dist/services/index.mjs +0 -10
  266. package/dist/services/index.mjs.map +0 -1
  267. package/dist/services/utils.cjs +0 -16
  268. package/dist/services/utils.cjs.map +0 -1
  269. package/dist/services/utils.d.cts +0 -8
  270. package/dist/services/utils.d.cts.map +0 -1
  271. package/dist/services/utils.d.mts +0 -8
  272. package/dist/services/utils.d.mts.map +0 -1
  273. package/dist/services/utils.mjs +0 -12
  274. package/dist/services/utils.mjs.map +0 -1
  275. package/dist/types/chart.cjs +0 -42
  276. package/dist/types/chart.cjs.map +0 -1
  277. package/dist/types/chart.d.cts +0 -62
  278. package/dist/types/chart.d.cts.map +0 -1
  279. package/dist/types/chart.d.mts +0 -62
  280. package/dist/types/chart.d.mts.map +0 -1
  281. package/dist/types/chart.mjs +0 -39
  282. package/dist/types/chart.mjs.map +0 -1
  283. package/dist/types/hyperliquid-types.cjs +0 -3
  284. package/dist/types/hyperliquid-types.cjs.map +0 -1
  285. package/dist/types/hyperliquid-types.d.cts +0 -52
  286. package/dist/types/hyperliquid-types.d.cts.map +0 -1
  287. package/dist/types/hyperliquid-types.d.mts +0 -52
  288. package/dist/types/hyperliquid-types.d.mts.map +0 -1
  289. package/dist/types/hyperliquid-types.mjs +0 -2
  290. package/dist/types/hyperliquid-types.mjs.map +0 -1
  291. package/dist/types/index.cjs +0 -96
  292. package/dist/types/index.cjs.map +0 -1
  293. package/dist/types/index.d.cts +0 -1153
  294. package/dist/types/index.d.cts.map +0 -1
  295. package/dist/types/index.d.mts +0 -1153
  296. package/dist/types/index.d.mts.map +0 -1
  297. package/dist/types/index.mjs +0 -79
  298. package/dist/types/index.mjs.map +0 -1
  299. package/dist/types/transactionTypes.cjs +0 -28
  300. package/dist/types/transactionTypes.cjs.map +0 -1
  301. package/dist/types/transactionTypes.d.cts +0 -64
  302. package/dist/types/transactionTypes.d.cts.map +0 -1
  303. package/dist/types/transactionTypes.d.mts +0 -64
  304. package/dist/types/transactionTypes.d.mts.map +0 -1
  305. package/dist/types/transactionTypes.mjs +0 -23
  306. package/dist/types/transactionTypes.mjs.map +0 -1
  307. package/dist/utils/accountUtils.cjs +0 -65
  308. package/dist/utils/accountUtils.cjs.map +0 -1
  309. package/dist/utils/accountUtils.d.cts +0 -26
  310. package/dist/utils/accountUtils.d.cts.map +0 -1
  311. package/dist/utils/accountUtils.d.mts +0 -26
  312. package/dist/utils/accountUtils.d.mts.map +0 -1
  313. package/dist/utils/accountUtils.mjs +0 -61
  314. package/dist/utils/accountUtils.mjs.map +0 -1
  315. package/dist/utils/amountConversion.cjs +0 -61
  316. package/dist/utils/amountConversion.cjs.map +0 -1
  317. package/dist/utils/amountConversion.d.cts +0 -16
  318. package/dist/utils/amountConversion.d.cts.map +0 -1
  319. package/dist/utils/amountConversion.d.mts +0 -16
  320. package/dist/utils/amountConversion.d.mts.map +0 -1
  321. package/dist/utils/amountConversion.mjs +0 -54
  322. package/dist/utils/amountConversion.mjs.map +0 -1
  323. package/dist/utils/chartUtils.cjs +0 -98
  324. package/dist/utils/chartUtils.cjs.map +0 -1
  325. package/dist/utils/chartUtils.d.cts +0 -14
  326. package/dist/utils/chartUtils.d.cts.map +0 -1
  327. package/dist/utils/chartUtils.d.mts +0 -14
  328. package/dist/utils/chartUtils.d.mts.map +0 -1
  329. package/dist/utils/chartUtils.mjs +0 -94
  330. package/dist/utils/chartUtils.mjs.map +0 -1
  331. package/dist/utils/errorUtils.cjs +0 -22
  332. package/dist/utils/errorUtils.cjs.map +0 -1
  333. package/dist/utils/errorUtils.d.cts +0 -13
  334. package/dist/utils/errorUtils.d.cts.map +0 -1
  335. package/dist/utils/errorUtils.d.mts +0 -13
  336. package/dist/utils/errorUtils.d.mts.map +0 -1
  337. package/dist/utils/errorUtils.mjs +0 -18
  338. package/dist/utils/errorUtils.mjs.map +0 -1
  339. package/dist/utils/formatUtils.cjs +0 -987
  340. package/dist/utils/formatUtils.cjs.map +0 -1
  341. package/dist/utils/formatUtils.d.cts +0 -387
  342. package/dist/utils/formatUtils.d.cts.map +0 -1
  343. package/dist/utils/formatUtils.d.mts +0 -387
  344. package/dist/utils/formatUtils.d.mts.map +0 -1
  345. package/dist/utils/formatUtils.mjs +0 -966
  346. package/dist/utils/formatUtils.mjs.map +0 -1
  347. package/dist/utils/hyperLiquidAdapter.cjs +0 -454
  348. package/dist/utils/hyperLiquidAdapter.cjs.map +0 -1
  349. package/dist/utils/hyperLiquidAdapter.d.cts +0 -158
  350. package/dist/utils/hyperLiquidAdapter.d.cts.map +0 -1
  351. package/dist/utils/hyperLiquidAdapter.d.mts +0 -158
  352. package/dist/utils/hyperLiquidAdapter.d.mts.map +0 -1
  353. package/dist/utils/hyperLiquidAdapter.mjs +0 -439
  354. package/dist/utils/hyperLiquidAdapter.mjs.map +0 -1
  355. package/dist/utils/hyperLiquidOrderBookProcessor.cjs +0 -89
  356. package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +0 -1
  357. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +0 -58
  358. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +0 -1
  359. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +0 -58
  360. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +0 -1
  361. package/dist/utils/hyperLiquidOrderBookProcessor.mjs +0 -84
  362. package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +0 -1
  363. package/dist/utils/hyperLiquidValidation.cjs +0 -426
  364. package/dist/utils/hyperLiquidValidation.cjs.map +0 -1
  365. package/dist/utils/hyperLiquidValidation.d.cts +0 -143
  366. package/dist/utils/hyperLiquidValidation.d.cts.map +0 -1
  367. package/dist/utils/hyperLiquidValidation.d.mts +0 -143
  368. package/dist/utils/hyperLiquidValidation.d.mts.map +0 -1
  369. package/dist/utils/hyperLiquidValidation.mjs +0 -413
  370. package/dist/utils/hyperLiquidValidation.mjs.map +0 -1
  371. package/dist/utils/idUtils.cjs +0 -50
  372. package/dist/utils/idUtils.cjs.map +0 -1
  373. package/dist/utils/idUtils.d.cts +0 -38
  374. package/dist/utils/idUtils.d.cts.map +0 -1
  375. package/dist/utils/idUtils.d.mts +0 -38
  376. package/dist/utils/idUtils.d.mts.map +0 -1
  377. package/dist/utils/idUtils.mjs +0 -42
  378. package/dist/utils/idUtils.mjs.map +0 -1
  379. package/dist/utils/marginUtils.cjs +0 -137
  380. package/dist/utils/marginUtils.cjs.map +0 -1
  381. package/dist/utils/marginUtils.d.cts +0 -64
  382. package/dist/utils/marginUtils.d.cts.map +0 -1
  383. package/dist/utils/marginUtils.d.mts +0 -64
  384. package/dist/utils/marginUtils.d.mts.map +0 -1
  385. package/dist/utils/marginUtils.mjs +0 -131
  386. package/dist/utils/marginUtils.mjs.map +0 -1
  387. package/dist/utils/marketDataTransform.cjs +0 -227
  388. package/dist/utils/marketDataTransform.cjs.map +0 -1
  389. package/dist/utils/marketDataTransform.d.cts +0 -45
  390. package/dist/utils/marketDataTransform.d.cts.map +0 -1
  391. package/dist/utils/marketDataTransform.d.mts +0 -45
  392. package/dist/utils/marketDataTransform.d.mts.map +0 -1
  393. package/dist/utils/marketDataTransform.mjs +0 -220
  394. package/dist/utils/marketDataTransform.mjs.map +0 -1
  395. package/dist/utils/marketUtils.cjs +0 -420
  396. package/dist/utils/marketUtils.cjs.map +0 -1
  397. package/dist/utils/marketUtils.d.cts +0 -227
  398. package/dist/utils/marketUtils.d.cts.map +0 -1
  399. package/dist/utils/marketUtils.d.mts +0 -227
  400. package/dist/utils/marketUtils.d.mts.map +0 -1
  401. package/dist/utils/marketUtils.mjs +0 -404
  402. package/dist/utils/marketUtils.mjs.map +0 -1
  403. package/dist/utils/orderBookGrouping.cjs +0 -151
  404. package/dist/utils/orderBookGrouping.cjs.map +0 -1
  405. package/dist/utils/orderBookGrouping.d.cts +0 -76
  406. package/dist/utils/orderBookGrouping.d.cts.map +0 -1
  407. package/dist/utils/orderBookGrouping.d.mts +0 -76
  408. package/dist/utils/orderBookGrouping.d.mts.map +0 -1
  409. package/dist/utils/orderBookGrouping.mjs +0 -143
  410. package/dist/utils/orderBookGrouping.mjs.map +0 -1
  411. package/dist/utils/orderCalculations.cjs +0 -283
  412. package/dist/utils/orderCalculations.cjs.map +0 -1
  413. package/dist/utils/orderCalculations.d.cts +0 -107
  414. package/dist/utils/orderCalculations.d.cts.map +0 -1
  415. package/dist/utils/orderCalculations.d.mts +0 -107
  416. package/dist/utils/orderCalculations.d.mts.map +0 -1
  417. package/dist/utils/orderCalculations.mjs +0 -274
  418. package/dist/utils/orderCalculations.mjs.map +0 -1
  419. package/dist/utils/orderUtils.cjs +0 -159
  420. package/dist/utils/orderUtils.cjs.map +0 -1
  421. package/dist/utils/orderUtils.d.cts +0 -66
  422. package/dist/utils/orderUtils.d.cts.map +0 -1
  423. package/dist/utils/orderUtils.d.mts +0 -66
  424. package/dist/utils/orderUtils.d.mts.map +0 -1
  425. package/dist/utils/orderUtils.mjs +0 -151
  426. package/dist/utils/orderUtils.mjs.map +0 -1
  427. package/dist/utils/pnlCalculations.cjs +0 -107
  428. package/dist/utils/pnlCalculations.cjs.map +0 -1
  429. package/dist/utils/pnlCalculations.d.cts +0 -79
  430. package/dist/utils/pnlCalculations.d.cts.map +0 -1
  431. package/dist/utils/pnlCalculations.d.mts +0 -79
  432. package/dist/utils/pnlCalculations.d.mts.map +0 -1
  433. package/dist/utils/pnlCalculations.mjs +0 -97
  434. package/dist/utils/pnlCalculations.mjs.map +0 -1
  435. package/dist/utils/positionCalculations.cjs +0 -176
  436. package/dist/utils/positionCalculations.cjs.map +0 -1
  437. package/dist/utils/positionCalculations.d.cts +0 -85
  438. package/dist/utils/positionCalculations.d.cts.map +0 -1
  439. package/dist/utils/positionCalculations.d.mts +0 -85
  440. package/dist/utils/positionCalculations.d.mts.map +0 -1
  441. package/dist/utils/positionCalculations.mjs +0 -165
  442. package/dist/utils/positionCalculations.mjs.map +0 -1
  443. package/dist/utils/sortMarkets.cjs +0 -88
  444. package/dist/utils/sortMarkets.cjs.map +0 -1
  445. package/dist/utils/sortMarkets.d.cts +0 -21
  446. package/dist/utils/sortMarkets.d.cts.map +0 -1
  447. package/dist/utils/sortMarkets.d.mts +0 -21
  448. package/dist/utils/sortMarkets.d.mts.map +0 -1
  449. package/dist/utils/sortMarkets.mjs +0 -84
  450. package/dist/utils/sortMarkets.mjs.map +0 -1
  451. package/dist/utils/standaloneInfoClient.cjs +0 -34
  452. package/dist/utils/standaloneInfoClient.cjs.map +0 -1
  453. package/dist/utils/standaloneInfoClient.d.cts +0 -31
  454. package/dist/utils/standaloneInfoClient.d.cts.map +0 -1
  455. package/dist/utils/standaloneInfoClient.d.mts +0 -31
  456. package/dist/utils/standaloneInfoClient.d.mts.map +0 -1
  457. package/dist/utils/standaloneInfoClient.mjs +0 -30
  458. package/dist/utils/standaloneInfoClient.mjs.map +0 -1
  459. package/dist/utils/stringParseUtils.cjs +0 -49
  460. package/dist/utils/stringParseUtils.cjs.map +0 -1
  461. package/dist/utils/stringParseUtils.d.cts +0 -35
  462. package/dist/utils/stringParseUtils.d.cts.map +0 -1
  463. package/dist/utils/stringParseUtils.d.mts +0 -35
  464. package/dist/utils/stringParseUtils.d.mts.map +0 -1
  465. package/dist/utils/stringParseUtils.mjs +0 -44
  466. package/dist/utils/stringParseUtils.mjs.map +0 -1
  467. package/dist/utils/time.cjs +0 -37
  468. package/dist/utils/time.cjs.map +0 -1
  469. package/dist/utils/time.d.cts +0 -17
  470. package/dist/utils/time.d.cts.map +0 -1
  471. package/dist/utils/time.d.mts +0 -17
  472. package/dist/utils/time.d.mts.map +0 -1
  473. package/dist/utils/time.mjs +0 -33
  474. package/dist/utils/time.mjs.map +0 -1
  475. package/dist/utils/tpslValidation.cjs +0 -505
  476. package/dist/utils/tpslValidation.cjs.map +0 -1
  477. package/dist/utils/tpslValidation.d.cts +0 -182
  478. package/dist/utils/tpslValidation.d.cts.map +0 -1
  479. package/dist/utils/tpslValidation.d.mts +0 -182
  480. package/dist/utils/tpslValidation.d.mts.map +0 -1
  481. package/dist/utils/tpslValidation.mjs +0 -482
  482. package/dist/utils/tpslValidation.mjs.map +0 -1
  483. package/dist/utils/transactionUtils.cjs +0 -36
  484. package/dist/utils/transactionUtils.cjs.map +0 -1
  485. package/dist/utils/transactionUtils.d.cts +0 -17
  486. package/dist/utils/transactionUtils.d.cts.map +0 -1
  487. package/dist/utils/transactionUtils.d.mts +0 -17
  488. package/dist/utils/transactionUtils.d.mts.map +0 -1
  489. package/dist/utils/transactionUtils.mjs +0 -32
  490. package/dist/utils/transactionUtils.mjs.map +0 -1
  491. package/dist/utils/wait.cjs +0 -12
  492. package/dist/utils/wait.cjs.map +0 -1
  493. package/dist/utils/wait.d.cts +0 -8
  494. package/dist/utils/wait.d.cts.map +0 -1
  495. package/dist/utils/wait.d.mts +0 -8
  496. package/dist/utils/wait.d.mts.map +0 -1
  497. package/dist/utils/wait.mjs +0 -8
  498. package/dist/utils/wait.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarketDataService.mjs","sourceRoot":"","sources":["../../src/services/MarketDataService.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable id-denylist, no-restricted-syntax, @typescript-eslint/prefer-nullish-coalescing */\n// TODO: Fix ESLint errors in this file - tracked for Phase 5 cleanup\nimport { v4 as uuidv4 } from 'uuid';\n\nimport type { ServiceContext } from './ServiceContext';\nimport { PerpsMeasurementName } from '../constants/performanceMetrics';\nimport { PERPS_ERROR_CODES } from '../constants/perpsErrorCodes';\nimport type {\n PerpsTraceNames,\n PerpsTraceOperations,\n PerpsProvider,\n Position,\n GetPositionsParams,\n AccountState,\n GetAccountStateParams,\n HistoricalPortfolioResult,\n GetHistoricalPortfolioParams,\n OrderFill,\n GetOrderFillsParams,\n Funding,\n GetFundingParams,\n Order,\n GetOrdersParams,\n MarketInfo,\n GetMarketsParams,\n GetAvailableDexsParams,\n LiquidationPriceParams,\n MaintenanceMarginParams,\n FeeCalculationParams,\n FeeCalculationResult,\n OrderParams,\n ClosePositionParams,\n AssetRoute,\n PerpsPlatformDependencies,\n CandleData,\n CandlePeriod,\n} from '../types';\n\n// Import trace names and operations from types\nconst TraceNames: typeof PerpsTraceNames = {\n PlaceOrder: 'Perps Place Order',\n EditOrder: 'Perps Edit Order',\n CancelOrder: 'Perps Cancel Order',\n ClosePosition: 'Perps Close Position',\n UpdateTpsl: 'Perps Update TP/SL',\n UpdateMargin: 'Perps Update Margin',\n FlipPosition: 'Perps Flip Position',\n Withdraw: 'Perps Withdraw',\n Deposit: 'Perps Deposit',\n GetPositions: 'Perps Get Positions',\n GetAccountState: 'Perps Get Account State',\n GetMarkets: 'Perps Get Markets',\n OrderFillsFetch: 'Perps Order Fills Fetch',\n OrdersFetch: 'Perps Orders Fetch',\n FundingFetch: 'Perps Funding Fetch',\n GetHistoricalPortfolio: 'Perps Get Historical Portfolio',\n FetchHistoricalCandles: 'Perps Fetch Historical Candles',\n DataLakeReport: 'Perps Data Lake Report',\n WebsocketConnected: 'Perps WebSocket Connected',\n WebsocketDisconnected: 'Perps WebSocket Disconnected',\n WebsocketFirstPositions: 'Perps WebSocket First Positions',\n WebsocketFirstOrders: 'Perps WebSocket First Orders',\n WebsocketFirstAccount: 'Perps WebSocket First Account',\n RewardsApiCall: 'Perps Rewards API Call',\n ConnectionEstablishment: 'Perps Connection Establishment',\n AccountSwitchReconnection: 'Perps Account Switch Reconnection',\n} as const;\n\nconst TraceOperations: typeof PerpsTraceOperations = {\n Operation: 'perps.operation',\n OrderSubmission: 'perps.order_submission',\n PositionManagement: 'perps.position_management',\n MarketData: 'perps.market_data',\n} as const;\n\n/**\n * MarketDataService\n *\n * Handles all read-only data-fetching operations for the Perps controller.\n * This service is stateless and delegates to the provider.\n * The controller is responsible for tracing and state management.\n *\n * Instance-based service with constructor injection of platform dependencies.\n */\nexport class MarketDataService {\n private readonly deps: PerpsPlatformDependencies;\n\n /**\n * Create a new MarketDataService instance.\n *\n * @param deps - Platform dependencies for logging, metrics, etc.\n */\n constructor(deps: PerpsPlatformDependencies) {\n this.deps = deps;\n }\n\n /**\n * Get current positions.\n * Handles full orchestration: tracing, error logging, state management, and provider delegation.\n *\n * @param options - Options for getting positions\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing and state management\n * @returns Array of positions\n */\n async getPositions(options: {\n provider: PerpsProvider;\n params?: GetPositionsParams;\n context: ServiceContext;\n }): Promise<Position[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.GetPositions,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n const positions = await provider.getPositions(params);\n\n // Update state on success (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastUpdateTimestamp = Date.now();\n state.lastError = null;\n });\n }\n\n traceData = { success: true };\n return positions;\n } catch (error) {\n const errorMessage =\n error instanceof Error\n ? error.message\n : PERPS_ERROR_CODES.POSITIONS_FAILED;\n\n // Update error state (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = errorMessage;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = {\n success: false,\n error: errorMessage,\n };\n\n throw error;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.GetPositions,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get order fills for a specific user or order.\n * Handles full orchestration: tracing, error logging, and provider delegation.\n *\n * @param options - Options for getting order fills\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing\n * @returns Array of order fills\n */\n async getOrderFills(options: {\n provider: PerpsProvider;\n params?: GetOrderFillsParams;\n context: ServiceContext;\n }): Promise<OrderFill[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.OrderFillsFetch,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n const result = await provider.getOrderFills(params);\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n traceData = {\n success: false,\n error: error.message,\n };\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.OrderFillsFetch,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get historical user orders (order lifecycle).\n * Handles full orchestration: tracing, error logging, and provider delegation.\n *\n * @param options - Options for getting orders\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing\n * @returns Array of orders\n */\n async getOrders(options: {\n provider: PerpsProvider;\n params?: GetOrdersParams;\n context: ServiceContext;\n }): Promise<Order[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.OrdersFetch,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n const result = await provider.getOrders(params);\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n traceData = {\n success: false,\n error: error.message,\n };\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.OrdersFetch,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get current open orders.\n * Handles full orchestration: tracing, error logging, performance measurement, and provider delegation.\n *\n * @param options - Options for getting open orders\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing\n * @returns Array of open orders\n */\n async getOpenOrders(options: {\n provider: PerpsProvider;\n params?: GetOrdersParams;\n context: ServiceContext;\n }): Promise<Order[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n const startTime = this.deps.performance.now();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.OrdersFetch,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n const result = await provider.getOpenOrders(params);\n\n const completionDuration = this.deps.performance.now() - startTime;\n this.deps.tracer.setMeasurement(\n PerpsMeasurementName.PerpsGetOpenOrdersOperation,\n completionDuration,\n 'millisecond',\n );\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n traceData = {\n success: false,\n error: error.message,\n };\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.OrdersFetch,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get funding rates.\n * Handles full orchestration: tracing, error logging, and provider delegation.\n *\n * @param options - Options for getting funding\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing\n * @returns Array of funding entries\n */\n async getFunding(options: {\n provider: PerpsProvider;\n params?: GetFundingParams;\n context: ServiceContext;\n }): Promise<Funding[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.FundingFetch,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n const result = await provider.getFunding(params);\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n traceData = {\n success: false,\n error: error.message,\n };\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.FundingFetch,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get account state.\n * Handles full orchestration: tracing, error logging, state management, and provider delegation.\n *\n * @param options - Options for getting account state\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing and state management\n * @returns Account state\n */\n async getAccountState(options: {\n provider: PerpsProvider;\n params?: GetAccountStateParams;\n context: ServiceContext;\n }): Promise<AccountState> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.GetAccountState,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n source: params?.source || 'unknown',\n },\n });\n\n const accountState = await provider.getAccountState(params);\n\n // Safety check for accountState\n if (!accountState) {\n const error = new Error(\n 'Failed to get account state: received null/undefined response',\n );\n\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n operation: 'nullAccountStateCheck',\n },\n },\n });\n\n throw error;\n }\n\n // Update state on success (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.accountState = accountState;\n state.lastUpdateTimestamp = Date.now();\n state.lastError = null;\n });\n }\n\n traceData = { success: true };\n return accountState;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Account state fetch failed';\n\n // Update error state (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = errorMessage;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = {\n success: false,\n error: errorMessage,\n };\n\n throw error;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.GetAccountState,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get historical portfolio data.\n * Handles full orchestration: tracing, error logging, state management, and provider delegation.\n *\n * @param options - Options for getting historical portfolio\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing and state management\n * @returns Historical portfolio result\n */\n async getHistoricalPortfolio(options: {\n provider: PerpsProvider;\n params?: GetHistoricalPortfolioParams;\n context: ServiceContext;\n }): Promise<HistoricalPortfolioResult> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.GetHistoricalPortfolio,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n\n if (!provider.getHistoricalPortfolio) {\n throw new Error('Historical portfolio not supported by provider');\n }\n\n const result = await provider.getHistoricalPortfolio(params);\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const errorMessage =\n err instanceof Error\n ? err.message\n : 'Failed to get historical portfolio';\n const error = err instanceof Error ? err : new Error(String(err));\n\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n // Update error state (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = errorMessage;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = {\n success: false,\n error: errorMessage,\n };\n\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.GetHistoricalPortfolio,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get available markets.\n * Handles full orchestration: tracing, error logging, state management, and provider delegation.\n *\n * @param options - Options for getting markets\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for tracing and state management\n * @returns Array of market info\n */\n async getMarkets(options: {\n provider: PerpsProvider;\n params?: GetMarketsParams;\n context: ServiceContext;\n }): Promise<MarketInfo[]> {\n const { provider, params, context } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.GetMarkets,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n ...(params?.symbols && {\n symbolCount: String(params.symbols.length),\n }),\n ...(params?.dex !== undefined && { dex: params.dex }),\n },\n });\n\n const markets = await provider.getMarkets(params);\n\n // Clear any previous errors on successful call (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = null;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = { success: true };\n return markets;\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : PERPS_ERROR_CODES.MARKETS_FAILED;\n const error = err instanceof Error ? err : new Error(String(err));\n\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n params,\n },\n },\n });\n\n // Update error state (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = errorMessage;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = {\n success: false,\n error: errorMessage,\n };\n\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.GetMarkets,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Get available DEXs (HIP-3 support required).\n *\n * @param options - Options for getting available DEXs\n * @param options.provider - The perps provider\n * @param options.params - Optional parameters for the request\n * @param options.context - Service context for error logging\n * @returns Array of DEX names\n */\n async getAvailableDexs(options: {\n provider: PerpsProvider;\n params?: GetAvailableDexsParams;\n context: ServiceContext;\n }): Promise<string[]> {\n const { provider, params } = options;\n\n try {\n if (!provider.getAvailableDexs) {\n throw new Error('Provider does not support HIP-3 DEXs');\n }\n\n return await provider.getAvailableDexs(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.getAvailableDexs',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Fetch historical candle data for charting.\n * Handles full orchestration: tracing, error logging, state management, and provider delegation.\n *\n * @param options - Options for fetching historical candles\n * @param options.provider - The perps provider\n * @param options.symbol - The asset symbol\n * @param options.interval - The candle period\n * @param options.limit - Maximum number of candles to fetch\n * @param options.endTime - End time for the candle range\n * @param options.context - Service context for tracing and state management\n * @returns Candle data\n */\n async fetchHistoricalCandles(options: {\n provider: PerpsProvider;\n symbol: string;\n interval: CandlePeriod;\n limit?: number;\n endTime?: number;\n context: ServiceContext;\n }): Promise<CandleData> {\n const {\n provider,\n symbol,\n interval,\n limit = 100,\n endTime,\n context,\n } = options;\n const traceId = uuidv4();\n let traceData: { success: boolean; error?: string } | undefined;\n\n try {\n this.deps.tracer.trace({\n name: TraceNames.FetchHistoricalCandles,\n id: traceId,\n op: TraceOperations.Operation,\n tags: {\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n symbol,\n interval,\n },\n });\n\n // Check if provider supports historical candles via clientService\n const hyperLiquidProvider = provider as {\n clientService?: {\n fetchHistoricalCandles?: (\n sym: string,\n int: CandlePeriod,\n lim: number,\n end?: number,\n ) => Promise<CandleData>;\n };\n };\n if (!hyperLiquidProvider.clientService?.fetchHistoricalCandles) {\n throw new Error('Historical candles not supported by provider');\n }\n\n const result =\n await hyperLiquidProvider.clientService.fetchHistoricalCandles(\n symbol,\n interval,\n limit,\n endTime,\n );\n\n traceData = { success: true };\n return result;\n } catch (err) {\n const errorMessage =\n err instanceof Error\n ? err.message\n : 'Failed to fetch historical candles';\n const error = err instanceof Error ? err : new Error(String(err));\n\n this.deps.logger.error(error, {\n tags: {\n feature: 'perps',\n provider: context.tracingContext.provider,\n network: context.tracingContext.isTestnet ? 'testnet' : 'mainnet',\n },\n context: {\n name: context.errorContext.controller,\n data: {\n method: context.errorContext.method,\n symbol,\n interval,\n limit,\n endTime,\n },\n },\n });\n\n // Update error state (if stateManager is provided)\n if (context.stateManager) {\n context.stateManager.update((state) => {\n state.lastError = errorMessage;\n state.lastUpdateTimestamp = Date.now();\n });\n }\n\n traceData = {\n success: false,\n error: errorMessage,\n };\n\n throw err;\n } finally {\n this.deps.tracer.endTrace({\n name: TraceNames.FetchHistoricalCandles,\n id: traceId,\n data: traceData,\n });\n }\n }\n\n /**\n * Calculate liquidation price for a position.\n *\n * @param options - Options for calculating liquidation price\n * @param options.provider - The perps provider\n * @param options.params - Liquidation price parameters\n * @param options.context - Service context for error logging\n * @returns Liquidation price as string\n */\n async calculateLiquidationPrice(options: {\n provider: PerpsProvider;\n params: LiquidationPriceParams;\n context: ServiceContext;\n }): Promise<string> {\n const { provider, params } = options;\n\n try {\n return await provider.calculateLiquidationPrice(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.calculateLiquidationPrice',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Calculate maintenance margin for a position.\n *\n * @param options - Options for calculating maintenance margin\n * @param options.provider - The perps provider\n * @param options.params - Maintenance margin parameters\n * @param options.context - Service context for error logging\n * @returns Maintenance margin as number\n */\n async calculateMaintenanceMargin(options: {\n provider: PerpsProvider;\n params: MaintenanceMarginParams;\n context: ServiceContext;\n }): Promise<number> {\n const { provider, params } = options;\n\n try {\n return await provider.calculateMaintenanceMargin(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.calculateMaintenanceMargin',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Get maximum leverage for an asset.\n *\n * @param options - Options for getting max leverage\n * @param options.provider - The perps provider\n * @param options.asset - The asset symbol\n * @param options.context - Service context for error logging\n * @returns Maximum leverage as number\n */\n async getMaxLeverage(options: {\n provider: PerpsProvider;\n asset: string;\n context: ServiceContext;\n }): Promise<number> {\n const { provider, asset } = options;\n\n try {\n return await provider.getMaxLeverage(asset);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.getMaxLeverage',\n data: { asset },\n },\n });\n throw err;\n }\n }\n\n /**\n * Calculate fees for an order.\n *\n * @param options - Options for calculating fees\n * @param options.provider - The perps provider\n * @param options.params - Fee calculation parameters\n * @param options.context - Service context for error logging\n * @returns Fee calculation result\n */\n async calculateFees(options: {\n provider: PerpsProvider;\n params: FeeCalculationParams;\n context: ServiceContext;\n }): Promise<FeeCalculationResult> {\n const { provider, params } = options;\n\n try {\n return await provider.calculateFees(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.calculateFees',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Validate an order before placement.\n *\n * @param options - Options for validating order\n * @param options.provider - The perps provider\n * @param options.params - Order parameters\n * @param options.context - Service context for error logging\n * @returns Validation result\n */\n async validateOrder(options: {\n provider: PerpsProvider;\n params: OrderParams;\n context: ServiceContext;\n }): Promise<{ isValid: boolean; error?: string }> {\n const { provider, params } = options;\n\n try {\n return await provider.validateOrder(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.validateOrder',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Validate a position close request.\n *\n * @param options - Options for validating close position\n * @param options.provider - The perps provider\n * @param options.params - Close position parameters\n * @param options.context - Service context for error logging\n * @returns Validation result\n */\n async validateClosePosition(options: {\n provider: PerpsProvider;\n params: ClosePositionParams;\n context: ServiceContext;\n }): Promise<{ isValid: boolean; error?: string }> {\n const { provider, params } = options;\n\n try {\n return await provider.validateClosePosition(params);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'MarketDataService.validateClosePosition',\n data: { params },\n },\n });\n throw err;\n }\n }\n\n /**\n * Get supported withdrawal routes (synchronous).\n * Note: This method doesn't log errors to avoid needing context for a synchronous getter.\n *\n * @param options - Options for getting withdrawal routes\n * @param options.provider - The perps provider\n * @returns Array of asset routes\n */\n getWithdrawalRoutes(options: { provider: PerpsProvider }): AssetRoute[] {\n const { provider } = options;\n\n try {\n return provider.getWithdrawalRoutes();\n } catch {\n // Silent fail - withdrawal routes are not critical\n return [];\n }\n }\n\n /**\n * Get block explorer URL (synchronous).\n *\n * @param options - Options for getting block explorer URL\n * @param options.provider - The perps provider\n * @param options.address - Optional address to include in URL\n * @returns Block explorer URL\n */\n getBlockExplorerUrl(options: {\n provider: PerpsProvider;\n address?: string;\n }): string {\n const { provider, address } = options;\n return provider.getBlockExplorerUrl(address);\n }\n}\n"]}
@@ -1,94 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RewardsIntegrationService = void 0;
4
- /**
5
- * RewardsIntegrationService
6
- *
7
- * Handles rewards-related operations and fee discount calculations.
8
- * Stateless service that coordinates with RewardsController and NetworkController.
9
- *
10
- * Instance-based service with constructor injection of platform dependencies.
11
- */
12
- class RewardsIntegrationService {
13
- /**
14
- * Create a new RewardsIntegrationService instance.
15
- *
16
- * @param deps - Platform dependencies for logging, metrics, etc.
17
- */
18
- constructor(deps) {
19
- this.deps = deps;
20
- }
21
- /**
22
- * Calculate user fee discount from rewards.
23
- * Returns discount in basis points (e.g., 6500 = 65% discount).
24
- *
25
- * @param options - Options for fee discount calculation
26
- * @param options.controllers - Consolidated controller access interface
27
- * @returns Discount in basis points or undefined if unavailable
28
- */
29
- async calculateUserFeeDiscount(options) {
30
- const { controllers } = options;
31
- try {
32
- const evmAccount = controllers.accounts.getSelectedEvmAccount();
33
- if (!evmAccount) {
34
- this.deps.debugLogger.log('RewardsIntegrationService: No EVM account found for fee discount');
35
- return undefined;
36
- }
37
- // Get the chain ID using controllers.network
38
- const selectedNetworkClientId = controllers.network.getSelectedNetworkClientId();
39
- let chainId;
40
- try {
41
- chainId = controllers.network.getChainIdForNetwork(selectedNetworkClientId);
42
- }
43
- catch {
44
- // Network client may not exist
45
- chainId = undefined;
46
- }
47
- if (!chainId) {
48
- this.deps.logger.error(new Error('Chain ID not found for fee discount calculation'), {
49
- context: {
50
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
51
- data: {
52
- selectedNetworkClientId,
53
- },
54
- },
55
- });
56
- return undefined;
57
- }
58
- const caipAccountId = controllers.accounts.formatAccountToCaipId(evmAccount.address, chainId);
59
- if (!caipAccountId) {
60
- this.deps.logger.error(new Error('Failed to format CAIP account ID for fee discount'), {
61
- context: {
62
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
63
- data: {
64
- address: evmAccount.address,
65
- chainId,
66
- selectedNetworkClientId,
67
- },
68
- },
69
- });
70
- return undefined;
71
- }
72
- const discountBips = await controllers.rewards.getFeeDiscount(caipAccountId);
73
- this.deps.debugLogger.log('RewardsIntegrationService: Fee discount calculated', {
74
- address: evmAccount.address,
75
- caipAccountId,
76
- discountBips,
77
- discountPercentage: discountBips / 100,
78
- });
79
- return discountBips;
80
- }
81
- catch (err) {
82
- const error = err instanceof Error ? err : new Error(String(err));
83
- this.deps.logger.error(error, {
84
- context: {
85
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
86
- data: {},
87
- },
88
- });
89
- return undefined;
90
- }
91
- }
92
- }
93
- exports.RewardsIntegrationService = RewardsIntegrationService;
94
- //# sourceMappingURL=RewardsIntegrationService.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RewardsIntegrationService.cjs","sourceRoot":"","sources":["../../src/services/RewardsIntegrationService.ts"],"names":[],"mappings":";;;AAOA;;;;;;;GAOG;AACH,MAAa,yBAAyB;IAGpC;;;;OAIG;IACH,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAE9B;QACC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CACvB,kEAAkE,CACnE,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,6CAA6C;YAC7C,MAAM,uBAAuB,GAC3B,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;YACnD,IAAI,OAA2B,CAAC;YAEhC,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAChD,uBAAuB,CACxB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;gBAC/B,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,KAAK,CAAC,iDAAiD,CAAC,EAC5D;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,oDAAoD;wBAC1D,IAAI,EAAE;4BACJ,uBAAuB;yBACxB;qBACF;iBACF,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAC9D,UAAU,CAAC,OAAO,EAClB,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,KAAK,CAAC,mDAAmD,CAAC,EAC9D;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,oDAAoD;wBAC1D,IAAI,EAAE;4BACJ,OAAO,EAAE,UAAU,CAAC,OAAO;4BAC3B,OAAO;4BACP,uBAAuB;yBACxB;qBACF;iBACF,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAC3D,aAAgD,CACjD,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CACvB,oDAAoD,EACpD;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa;gBACb,YAAY;gBACZ,kBAAkB,EAAE,YAAY,GAAG,GAAG;aACvC,CACF,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC5B,OAAO,EAAE;oBACP,IAAI,EAAE,oDAAoD;oBAC1D,IAAI,EAAE,EAAE;iBACT;aACF,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAhHD,8DAgHC","sourcesContent":["/* eslint-disable no-restricted-syntax, id-denylist */\n// TODO: Fix ESLint errors in this file - tracked for Phase 5 cleanup\nimport type {\n PerpsPlatformDependencies,\n PerpsControllerAccess,\n} from '../types';\n\n/**\n * RewardsIntegrationService\n *\n * Handles rewards-related operations and fee discount calculations.\n * Stateless service that coordinates with RewardsController and NetworkController.\n *\n * Instance-based service with constructor injection of platform dependencies.\n */\nexport class RewardsIntegrationService {\n private readonly deps: PerpsPlatformDependencies;\n\n /**\n * Create a new RewardsIntegrationService instance.\n *\n * @param deps - Platform dependencies for logging, metrics, etc.\n */\n constructor(deps: PerpsPlatformDependencies) {\n this.deps = deps;\n }\n\n /**\n * Calculate user fee discount from rewards.\n * Returns discount in basis points (e.g., 6500 = 65% discount).\n *\n * @param options - Options for fee discount calculation\n * @param options.controllers - Consolidated controller access interface\n * @returns Discount in basis points or undefined if unavailable\n */\n async calculateUserFeeDiscount(options: {\n controllers: PerpsControllerAccess;\n }): Promise<number | undefined> {\n const { controllers } = options;\n\n try {\n const evmAccount = controllers.accounts.getSelectedEvmAccount();\n\n if (!evmAccount) {\n this.deps.debugLogger.log(\n 'RewardsIntegrationService: No EVM account found for fee discount',\n );\n return undefined;\n }\n\n // Get the chain ID using controllers.network\n const selectedNetworkClientId =\n controllers.network.getSelectedNetworkClientId();\n let chainId: string | undefined;\n\n try {\n chainId = controllers.network.getChainIdForNetwork(\n selectedNetworkClientId,\n );\n } catch {\n // Network client may not exist\n chainId = undefined;\n }\n\n if (!chainId) {\n this.deps.logger.error(\n new Error('Chain ID not found for fee discount calculation'),\n {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {\n selectedNetworkClientId,\n },\n },\n },\n );\n return undefined;\n }\n\n const caipAccountId = controllers.accounts.formatAccountToCaipId(\n evmAccount.address,\n chainId,\n );\n\n if (!caipAccountId) {\n this.deps.logger.error(\n new Error('Failed to format CAIP account ID for fee discount'),\n {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {\n address: evmAccount.address,\n chainId,\n selectedNetworkClientId,\n },\n },\n },\n );\n return undefined;\n }\n\n const discountBips = await controllers.rewards.getFeeDiscount(\n caipAccountId as `${string}:${string}:${string}`,\n );\n\n this.deps.debugLogger.log(\n 'RewardsIntegrationService: Fee discount calculated',\n {\n address: evmAccount.address,\n caipAccountId,\n discountBips,\n discountPercentage: discountBips / 100,\n },\n );\n\n return discountBips;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {},\n },\n });\n return undefined;\n }\n }\n}\n"]}
@@ -1,30 +0,0 @@
1
- import type { PerpsPlatformDependencies, PerpsControllerAccess } from "../types/index.cjs";
2
- /**
3
- * RewardsIntegrationService
4
- *
5
- * Handles rewards-related operations and fee discount calculations.
6
- * Stateless service that coordinates with RewardsController and NetworkController.
7
- *
8
- * Instance-based service with constructor injection of platform dependencies.
9
- */
10
- export declare class RewardsIntegrationService {
11
- private readonly deps;
12
- /**
13
- * Create a new RewardsIntegrationService instance.
14
- *
15
- * @param deps - Platform dependencies for logging, metrics, etc.
16
- */
17
- constructor(deps: PerpsPlatformDependencies);
18
- /**
19
- * Calculate user fee discount from rewards.
20
- * Returns discount in basis points (e.g., 6500 = 65% discount).
21
- *
22
- * @param options - Options for fee discount calculation
23
- * @param options.controllers - Consolidated controller access interface
24
- * @returns Discount in basis points or undefined if unavailable
25
- */
26
- calculateUserFeeDiscount(options: {
27
- controllers: PerpsControllerAccess;
28
- }): Promise<number | undefined>;
29
- }
30
- //# sourceMappingURL=RewardsIntegrationService.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RewardsIntegrationService.d.cts","sourceRoot":"","sources":["../../src/services/RewardsIntegrationService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACtB,2BAAiB;AAElB;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IAEjD;;;;OAIG;gBACS,IAAI,EAAE,yBAAyB;IAI3C;;;;;;;OAOG;IACG,wBAAwB,CAAC,OAAO,EAAE;QACtC,WAAW,EAAE,qBAAqB,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA0FhC"}
@@ -1,30 +0,0 @@
1
- import type { PerpsPlatformDependencies, PerpsControllerAccess } from "../types/index.mjs";
2
- /**
3
- * RewardsIntegrationService
4
- *
5
- * Handles rewards-related operations and fee discount calculations.
6
- * Stateless service that coordinates with RewardsController and NetworkController.
7
- *
8
- * Instance-based service with constructor injection of platform dependencies.
9
- */
10
- export declare class RewardsIntegrationService {
11
- private readonly deps;
12
- /**
13
- * Create a new RewardsIntegrationService instance.
14
- *
15
- * @param deps - Platform dependencies for logging, metrics, etc.
16
- */
17
- constructor(deps: PerpsPlatformDependencies);
18
- /**
19
- * Calculate user fee discount from rewards.
20
- * Returns discount in basis points (e.g., 6500 = 65% discount).
21
- *
22
- * @param options - Options for fee discount calculation
23
- * @param options.controllers - Consolidated controller access interface
24
- * @returns Discount in basis points or undefined if unavailable
25
- */
26
- calculateUserFeeDiscount(options: {
27
- controllers: PerpsControllerAccess;
28
- }): Promise<number | undefined>;
29
- }
30
- //# sourceMappingURL=RewardsIntegrationService.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RewardsIntegrationService.d.mts","sourceRoot":"","sources":["../../src/services/RewardsIntegrationService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACtB,2BAAiB;AAElB;;;;;;;GAOG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IAEjD;;;;OAIG;gBACS,IAAI,EAAE,yBAAyB;IAI3C;;;;;;;OAOG;IACG,wBAAwB,CAAC,OAAO,EAAE;QACtC,WAAW,EAAE,qBAAqB,CAAC;KACpC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CA0FhC"}
@@ -1,90 +0,0 @@
1
- /**
2
- * RewardsIntegrationService
3
- *
4
- * Handles rewards-related operations and fee discount calculations.
5
- * Stateless service that coordinates with RewardsController and NetworkController.
6
- *
7
- * Instance-based service with constructor injection of platform dependencies.
8
- */
9
- export class RewardsIntegrationService {
10
- /**
11
- * Create a new RewardsIntegrationService instance.
12
- *
13
- * @param deps - Platform dependencies for logging, metrics, etc.
14
- */
15
- constructor(deps) {
16
- this.deps = deps;
17
- }
18
- /**
19
- * Calculate user fee discount from rewards.
20
- * Returns discount in basis points (e.g., 6500 = 65% discount).
21
- *
22
- * @param options - Options for fee discount calculation
23
- * @param options.controllers - Consolidated controller access interface
24
- * @returns Discount in basis points or undefined if unavailable
25
- */
26
- async calculateUserFeeDiscount(options) {
27
- const { controllers } = options;
28
- try {
29
- const evmAccount = controllers.accounts.getSelectedEvmAccount();
30
- if (!evmAccount) {
31
- this.deps.debugLogger.log('RewardsIntegrationService: No EVM account found for fee discount');
32
- return undefined;
33
- }
34
- // Get the chain ID using controllers.network
35
- const selectedNetworkClientId = controllers.network.getSelectedNetworkClientId();
36
- let chainId;
37
- try {
38
- chainId = controllers.network.getChainIdForNetwork(selectedNetworkClientId);
39
- }
40
- catch {
41
- // Network client may not exist
42
- chainId = undefined;
43
- }
44
- if (!chainId) {
45
- this.deps.logger.error(new Error('Chain ID not found for fee discount calculation'), {
46
- context: {
47
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
48
- data: {
49
- selectedNetworkClientId,
50
- },
51
- },
52
- });
53
- return undefined;
54
- }
55
- const caipAccountId = controllers.accounts.formatAccountToCaipId(evmAccount.address, chainId);
56
- if (!caipAccountId) {
57
- this.deps.logger.error(new Error('Failed to format CAIP account ID for fee discount'), {
58
- context: {
59
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
60
- data: {
61
- address: evmAccount.address,
62
- chainId,
63
- selectedNetworkClientId,
64
- },
65
- },
66
- });
67
- return undefined;
68
- }
69
- const discountBips = await controllers.rewards.getFeeDiscount(caipAccountId);
70
- this.deps.debugLogger.log('RewardsIntegrationService: Fee discount calculated', {
71
- address: evmAccount.address,
72
- caipAccountId,
73
- discountBips,
74
- discountPercentage: discountBips / 100,
75
- });
76
- return discountBips;
77
- }
78
- catch (err) {
79
- const error = err instanceof Error ? err : new Error(String(err));
80
- this.deps.logger.error(error, {
81
- context: {
82
- name: 'RewardsIntegrationService.calculateUserFeeDiscount',
83
- data: {},
84
- },
85
- });
86
- return undefined;
87
- }
88
- }
89
- }
90
- //# sourceMappingURL=RewardsIntegrationService.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RewardsIntegrationService.mjs","sourceRoot":"","sources":["../../src/services/RewardsIntegrationService.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,MAAM,OAAO,yBAAyB;IAGpC;;;;OAIG;IACH,YAAY,IAA+B;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAE9B;QACC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;YAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CACvB,kEAAkE,CACnE,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,6CAA6C;YAC7C,MAAM,uBAAuB,GAC3B,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC;YACnD,IAAI,OAA2B,CAAC;YAEhC,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAChD,uBAAuB,CACxB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;gBAC/B,OAAO,GAAG,SAAS,CAAC;YACtB,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,KAAK,CAAC,iDAAiD,CAAC,EAC5D;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,oDAAoD;wBAC1D,IAAI,EAAE;4BACJ,uBAAuB;yBACxB;qBACF;iBACF,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAC9D,UAAU,CAAC,OAAO,EAClB,OAAO,CACR,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CACpB,IAAI,KAAK,CAAC,mDAAmD,CAAC,EAC9D;oBACE,OAAO,EAAE;wBACP,IAAI,EAAE,oDAAoD;wBAC1D,IAAI,EAAE;4BACJ,OAAO,EAAE,UAAU,CAAC,OAAO;4BAC3B,OAAO;4BACP,uBAAuB;yBACxB;qBACF;iBACF,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,cAAc,CAC3D,aAAgD,CACjD,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CACvB,oDAAoD,EACpD;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,aAAa;gBACb,YAAY;gBACZ,kBAAkB,EAAE,YAAY,GAAG,GAAG;aACvC,CACF,CAAC;YAEF,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC5B,OAAO,EAAE;oBACP,IAAI,EAAE,oDAAoD;oBAC1D,IAAI,EAAE,EAAE;iBACT;aACF,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;CACF","sourcesContent":["/* eslint-disable no-restricted-syntax, id-denylist */\n// TODO: Fix ESLint errors in this file - tracked for Phase 5 cleanup\nimport type {\n PerpsPlatformDependencies,\n PerpsControllerAccess,\n} from '../types';\n\n/**\n * RewardsIntegrationService\n *\n * Handles rewards-related operations and fee discount calculations.\n * Stateless service that coordinates with RewardsController and NetworkController.\n *\n * Instance-based service with constructor injection of platform dependencies.\n */\nexport class RewardsIntegrationService {\n private readonly deps: PerpsPlatformDependencies;\n\n /**\n * Create a new RewardsIntegrationService instance.\n *\n * @param deps - Platform dependencies for logging, metrics, etc.\n */\n constructor(deps: PerpsPlatformDependencies) {\n this.deps = deps;\n }\n\n /**\n * Calculate user fee discount from rewards.\n * Returns discount in basis points (e.g., 6500 = 65% discount).\n *\n * @param options - Options for fee discount calculation\n * @param options.controllers - Consolidated controller access interface\n * @returns Discount in basis points or undefined if unavailable\n */\n async calculateUserFeeDiscount(options: {\n controllers: PerpsControllerAccess;\n }): Promise<number | undefined> {\n const { controllers } = options;\n\n try {\n const evmAccount = controllers.accounts.getSelectedEvmAccount();\n\n if (!evmAccount) {\n this.deps.debugLogger.log(\n 'RewardsIntegrationService: No EVM account found for fee discount',\n );\n return undefined;\n }\n\n // Get the chain ID using controllers.network\n const selectedNetworkClientId =\n controllers.network.getSelectedNetworkClientId();\n let chainId: string | undefined;\n\n try {\n chainId = controllers.network.getChainIdForNetwork(\n selectedNetworkClientId,\n );\n } catch {\n // Network client may not exist\n chainId = undefined;\n }\n\n if (!chainId) {\n this.deps.logger.error(\n new Error('Chain ID not found for fee discount calculation'),\n {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {\n selectedNetworkClientId,\n },\n },\n },\n );\n return undefined;\n }\n\n const caipAccountId = controllers.accounts.formatAccountToCaipId(\n evmAccount.address,\n chainId,\n );\n\n if (!caipAccountId) {\n this.deps.logger.error(\n new Error('Failed to format CAIP account ID for fee discount'),\n {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {\n address: evmAccount.address,\n chainId,\n selectedNetworkClientId,\n },\n },\n },\n );\n return undefined;\n }\n\n const discountBips = await controllers.rewards.getFeeDiscount(\n caipAccountId as `${string}:${string}:${string}`,\n );\n\n this.deps.debugLogger.log(\n 'RewardsIntegrationService: Fee discount calculated',\n {\n address: evmAccount.address,\n caipAccountId,\n discountBips,\n discountPercentage: discountBips / 100,\n },\n );\n\n return discountBips;\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n this.deps.logger.error(error, {\n context: {\n name: 'RewardsIntegrationService.calculateUserFeeDiscount',\n data: {},\n },\n });\n return undefined;\n }\n }\n}\n"]}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=ServiceContext.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContext.cjs","sourceRoot":"","sources":["../../src/services/ServiceContext.ts"],"names":[],"mappings":"","sourcesContent":["import type { PerpsControllerMessenger } from '../PerpsController';\nimport type { Order, Position } from '../types';\nimport type {\n TransactionRecord,\n LastTransactionResult,\n} from '../types/transactionTypes';\n\n/**\n * State interface for service state management.\n * Uses generic state shape to decouple from specific PerpsControllerState definition.\n */\ntype ServiceState = {\n lastUpdateTimestamp?: number;\n lastError?: string | null;\n accountState?: unknown;\n withdrawInProgress?: boolean;\n depositInProgress?: boolean;\n lastWithdrawResult?: LastTransactionResult | null;\n lastDepositResult?: LastTransactionResult | null;\n withdrawalRequests: TransactionRecord[];\n depositRequests: TransactionRecord[];\n [key: string]: unknown;\n};\n\n/**\n * ServiceContext\n *\n * Lightweight per-call context for Perps services.\n * Contains ONLY data that varies per operation:\n * - Tracing context (provider, network)\n * - Error context (controller, method)\n * - State management callbacks\n * - Query/action callbacks specific to the operation\n *\n * Platform dependencies (logging, metrics, tracing) are injected into service\n * instances via constructor, not passed per-call.\n *\n * Controller-level singletons (RewardsController, NetworkController, messenger)\n * are also injected into services that need them, not passed per-call.\n *\n * This enables:\n * - Clean method signatures (no verbose dependency passing)\n * - Fat services with complete orchestration\n * - Thin controller with pure delegation\n * - Easy testing through mock contexts and constructor injection\n */\nexport type ServiceContext = {\n /**\n * Tracing context for performance monitoring\n * Used in trace() calls to tag operations\n */\n tracingContext: {\n provider: string;\n isTestnet: boolean;\n };\n\n /**\n * Error logging context\n * Provides consistent error logging across services\n */\n errorContext: {\n controller: string;\n method: string;\n extra?: Record<string, unknown>;\n };\n\n /**\n * State management functions (optional)\n * Only provided for operations that need to mutate controller state\n * Example: Trading operations that update lastTransaction\n */\n stateManager?: {\n update: (updater: (state: ServiceState) => void) => void;\n getState: () => ServiceState;\n };\n\n /**\n * Messenger for controller communication (optional)\n * Required by: DataLakeService (getBearerToken)\n * Note: TradingService now receives this via setControllerDependencies()\n */\n messenger?: PerpsControllerMessenger;\n\n /**\n * Query functions for dependent data\n * Required by: Operations that need to fetch related data\n */\n getOpenOrders?: () => Promise<Order[]>;\n getPositions?: () => Promise<Position[]>;\n\n /**\n * Callback functions for controller-specific operations\n */\n saveTradeConfiguration?: (symbol: string, leverage: number) => void;\n\n /**\n * Feature flag configuration callbacks\n * Required by: FeatureFlagConfigurationService\n */\n getBlockedRegionList?: () => {\n list: string[];\n source: 'remote' | 'fallback';\n };\n setBlockedRegionList?: (\n list: string[],\n source: 'remote' | 'fallback',\n ) => void;\n getHip3Config?: () => {\n enabled: boolean;\n allowlistMarkets: string[];\n blocklistMarkets: string[];\n source: 'remote' | 'fallback';\n };\n setHip3Config?: (config: {\n enabled?: boolean;\n allowlistMarkets?: string[];\n blocklistMarkets?: string[];\n source: 'remote' | 'fallback';\n }) => void;\n incrementHip3ConfigVersion?: () => number;\n refreshEligibility?: () => Promise<void>;\n};\n"]}
@@ -1,110 +0,0 @@
1
- import type { PerpsControllerMessenger } from "../PerpsController.cjs";
2
- import type { Order, Position } from "../types/index.cjs";
3
- import type { TransactionRecord, LastTransactionResult } from "../types/transactionTypes.cjs";
4
- /**
5
- * State interface for service state management.
6
- * Uses generic state shape to decouple from specific PerpsControllerState definition.
7
- */
8
- type ServiceState = {
9
- lastUpdateTimestamp?: number;
10
- lastError?: string | null;
11
- accountState?: unknown;
12
- withdrawInProgress?: boolean;
13
- depositInProgress?: boolean;
14
- lastWithdrawResult?: LastTransactionResult | null;
15
- lastDepositResult?: LastTransactionResult | null;
16
- withdrawalRequests: TransactionRecord[];
17
- depositRequests: TransactionRecord[];
18
- [key: string]: unknown;
19
- };
20
- /**
21
- * ServiceContext
22
- *
23
- * Lightweight per-call context for Perps services.
24
- * Contains ONLY data that varies per operation:
25
- * - Tracing context (provider, network)
26
- * - Error context (controller, method)
27
- * - State management callbacks
28
- * - Query/action callbacks specific to the operation
29
- *
30
- * Platform dependencies (logging, metrics, tracing) are injected into service
31
- * instances via constructor, not passed per-call.
32
- *
33
- * Controller-level singletons (RewardsController, NetworkController, messenger)
34
- * are also injected into services that need them, not passed per-call.
35
- *
36
- * This enables:
37
- * - Clean method signatures (no verbose dependency passing)
38
- * - Fat services with complete orchestration
39
- * - Thin controller with pure delegation
40
- * - Easy testing through mock contexts and constructor injection
41
- */
42
- export type ServiceContext = {
43
- /**
44
- * Tracing context for performance monitoring
45
- * Used in trace() calls to tag operations
46
- */
47
- tracingContext: {
48
- provider: string;
49
- isTestnet: boolean;
50
- };
51
- /**
52
- * Error logging context
53
- * Provides consistent error logging across services
54
- */
55
- errorContext: {
56
- controller: string;
57
- method: string;
58
- extra?: Record<string, unknown>;
59
- };
60
- /**
61
- * State management functions (optional)
62
- * Only provided for operations that need to mutate controller state
63
- * Example: Trading operations that update lastTransaction
64
- */
65
- stateManager?: {
66
- update: (updater: (state: ServiceState) => void) => void;
67
- getState: () => ServiceState;
68
- };
69
- /**
70
- * Messenger for controller communication (optional)
71
- * Required by: DataLakeService (getBearerToken)
72
- * Note: TradingService now receives this via setControllerDependencies()
73
- */
74
- messenger?: PerpsControllerMessenger;
75
- /**
76
- * Query functions for dependent data
77
- * Required by: Operations that need to fetch related data
78
- */
79
- getOpenOrders?: () => Promise<Order[]>;
80
- getPositions?: () => Promise<Position[]>;
81
- /**
82
- * Callback functions for controller-specific operations
83
- */
84
- saveTradeConfiguration?: (symbol: string, leverage: number) => void;
85
- /**
86
- * Feature flag configuration callbacks
87
- * Required by: FeatureFlagConfigurationService
88
- */
89
- getBlockedRegionList?: () => {
90
- list: string[];
91
- source: 'remote' | 'fallback';
92
- };
93
- setBlockedRegionList?: (list: string[], source: 'remote' | 'fallback') => void;
94
- getHip3Config?: () => {
95
- enabled: boolean;
96
- allowlistMarkets: string[];
97
- blocklistMarkets: string[];
98
- source: 'remote' | 'fallback';
99
- };
100
- setHip3Config?: (config: {
101
- enabled?: boolean;
102
- allowlistMarkets?: string[];
103
- blocklistMarkets?: string[];
104
- source: 'remote' | 'fallback';
105
- }) => void;
106
- incrementHip3ConfigVersion?: () => number;
107
- refreshEligibility?: () => Promise<void>;
108
- };
109
- export {};
110
- //# sourceMappingURL=ServiceContext.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServiceContext.d.cts","sourceRoot":"","sources":["../../src/services/ServiceContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,+BAA2B;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,2BAAiB;AAChD,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACtB,sCAAkC;AAEnC;;;GAGG;AACH,KAAK,YAAY,GAAG;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAClD,iBAAiB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACjD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,eAAe,EAAE,iBAAiB,EAAE,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IAEF;;;OAGG;IACH,YAAY,EAAE;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACjC,CAAC;IAEF;;;;OAIG;IACH,YAAY,CAAC,EAAE;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC;QACzD,QAAQ,EAAE,MAAM,YAAY,CAAC;KAC9B,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAErC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEzC;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpE;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM;QAC3B,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,CAAC;IACF,oBAAoB,CAAC,EAAE,CACrB,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,QAAQ,GAAG,UAAU,KAC1B,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,MAAM;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,CAAC;IACF,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE;QACvB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;KAC/B,KAAK,IAAI,CAAC;IACX,0BAA0B,CAAC,EAAE,MAAM,MAAM,CAAC;IAC1C,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C,CAAC"}