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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/dist/PerpsController.cjs +2224 -66
  3. package/dist/PerpsController.cjs.map +1 -1
  4. package/dist/PerpsController.d.cts +933 -79
  5. package/dist/PerpsController.d.cts.map +1 -1
  6. package/dist/PerpsController.d.mts +933 -79
  7. package/dist/PerpsController.d.mts.map +1 -1
  8. package/dist/PerpsController.mjs +2221 -64
  9. package/dist/PerpsController.mjs.map +1 -1
  10. package/dist/__mocks__/hyperliquidMock.cjs +68 -0
  11. package/dist/__mocks__/hyperliquidMock.cjs.map +1 -0
  12. package/dist/__mocks__/hyperliquidMock.d.cts +15 -0
  13. package/dist/__mocks__/hyperliquidMock.d.cts.map +1 -0
  14. package/dist/__mocks__/hyperliquidMock.d.mts +15 -0
  15. package/dist/__mocks__/hyperliquidMock.d.mts.map +1 -0
  16. package/dist/__mocks__/hyperliquidMock.mjs +65 -0
  17. package/dist/__mocks__/hyperliquidMock.mjs.map +1 -0
  18. package/dist/__mocks__/providerMocks.cjs +144 -0
  19. package/dist/__mocks__/providerMocks.cjs.map +1 -0
  20. package/dist/__mocks__/providerMocks.d.cts +44 -0
  21. package/dist/__mocks__/providerMocks.d.cts.map +1 -0
  22. package/dist/__mocks__/providerMocks.d.mts +44 -0
  23. package/dist/__mocks__/providerMocks.d.mts.map +1 -0
  24. package/dist/__mocks__/providerMocks.mjs +136 -0
  25. package/dist/__mocks__/providerMocks.mjs.map +1 -0
  26. package/dist/__mocks__/serviceMocks.cjs +187 -0
  27. package/dist/__mocks__/serviceMocks.cjs.map +1 -0
  28. package/dist/__mocks__/serviceMocks.d.cts +58 -0
  29. package/dist/__mocks__/serviceMocks.d.cts.map +1 -0
  30. package/dist/__mocks__/serviceMocks.d.mts +58 -0
  31. package/dist/__mocks__/serviceMocks.d.mts.map +1 -0
  32. package/dist/__mocks__/serviceMocks.mjs +180 -0
  33. package/dist/__mocks__/serviceMocks.mjs.map +1 -0
  34. package/dist/aggregation/SubscriptionMultiplexer.cjs +459 -0
  35. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
  36. package/dist/aggregation/SubscriptionMultiplexer.d.cts +222 -0
  37. package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
  38. package/dist/aggregation/SubscriptionMultiplexer.d.mts +222 -0
  39. package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
  40. package/dist/aggregation/SubscriptionMultiplexer.mjs +455 -0
  41. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -0
  42. package/dist/aggregation/index.cjs +9 -0
  43. package/dist/aggregation/index.cjs.map +1 -0
  44. package/dist/aggregation/index.d.cts +6 -0
  45. package/dist/aggregation/index.d.cts.map +1 -0
  46. package/dist/aggregation/index.d.mts +6 -0
  47. package/dist/aggregation/index.d.mts.map +1 -0
  48. package/dist/aggregation/index.mjs +5 -0
  49. package/dist/aggregation/index.mjs.map +1 -0
  50. package/dist/constants/eventNames.cjs +117 -0
  51. package/dist/constants/eventNames.cjs.map +1 -0
  52. package/dist/constants/eventNames.d.cts +106 -0
  53. package/dist/constants/eventNames.d.cts.map +1 -0
  54. package/dist/constants/eventNames.d.mts +106 -0
  55. package/dist/constants/eventNames.d.mts.map +1 -0
  56. package/dist/constants/eventNames.mjs +114 -0
  57. package/dist/constants/eventNames.mjs.map +1 -0
  58. package/dist/constants/hyperLiquidConfig.cjs +366 -0
  59. package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
  60. package/dist/constants/hyperLiquidConfig.d.cts +276 -0
  61. package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
  62. package/dist/constants/hyperLiquidConfig.d.mts +276 -0
  63. package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
  64. package/dist/constants/hyperLiquidConfig.mjs +357 -0
  65. package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
  66. package/dist/constants/index.cjs +23 -0
  67. package/dist/constants/index.cjs.map +1 -0
  68. package/dist/constants/index.d.cts +7 -0
  69. package/dist/constants/index.d.cts.map +1 -0
  70. package/dist/constants/index.d.mts +7 -0
  71. package/dist/constants/index.d.mts.map +1 -0
  72. package/dist/constants/index.mjs +7 -0
  73. package/dist/constants/index.mjs.map +1 -0
  74. package/dist/constants/orderTypes.cjs +31 -0
  75. package/dist/constants/orderTypes.cjs.map +1 -0
  76. package/dist/constants/orderTypes.d.cts +19 -0
  77. package/dist/constants/orderTypes.d.cts.map +1 -0
  78. package/dist/constants/orderTypes.d.mts +19 -0
  79. package/dist/constants/orderTypes.d.mts.map +1 -0
  80. package/dist/constants/orderTypes.mjs +27 -0
  81. package/dist/constants/orderTypes.mjs.map +1 -0
  82. package/dist/constants/performanceMetrics.cjs +61 -0
  83. package/dist/constants/performanceMetrics.cjs.map +1 -0
  84. package/dist/constants/performanceMetrics.d.cts +44 -0
  85. package/dist/constants/performanceMetrics.d.cts.map +1 -0
  86. package/dist/constants/performanceMetrics.d.mts +44 -0
  87. package/dist/constants/performanceMetrics.d.mts.map +1 -0
  88. package/dist/constants/performanceMetrics.mjs +58 -0
  89. package/dist/constants/performanceMetrics.mjs.map +1 -0
  90. package/dist/constants/perpsConfig.cjs +461 -0
  91. package/dist/constants/perpsConfig.cjs.map +1 -0
  92. package/dist/constants/perpsConfig.d.cts +343 -0
  93. package/dist/constants/perpsConfig.d.cts.map +1 -0
  94. package/dist/constants/perpsConfig.d.mts +343 -0
  95. package/dist/constants/perpsConfig.d.mts.map +1 -0
  96. package/dist/constants/perpsConfig.mjs +458 -0
  97. package/dist/constants/perpsConfig.mjs.map +1 -0
  98. package/dist/constants/perpsErrorCodes.cjs +79 -0
  99. package/dist/constants/perpsErrorCodes.cjs.map +1 -0
  100. package/dist/constants/perpsErrorCodes.d.cts +64 -0
  101. package/dist/constants/perpsErrorCodes.d.cts.map +1 -0
  102. package/dist/constants/perpsErrorCodes.d.mts +64 -0
  103. package/dist/constants/perpsErrorCodes.d.mts.map +1 -0
  104. package/dist/constants/perpsErrorCodes.mjs +76 -0
  105. package/dist/constants/perpsErrorCodes.mjs.map +1 -0
  106. package/dist/index.cjs +32 -1
  107. package/dist/index.cjs.map +1 -1
  108. package/dist/index.d.cts +6 -2
  109. package/dist/index.d.cts.map +1 -1
  110. package/dist/index.d.mts +6 -2
  111. package/dist/index.d.mts.map +1 -1
  112. package/dist/index.mjs +9 -1
  113. package/dist/index.mjs.map +1 -1
  114. package/dist/platform-services/HyperLiquidClientService.cjs +857 -0
  115. package/dist/platform-services/HyperLiquidClientService.cjs.map +1 -0
  116. package/dist/platform-services/HyperLiquidClientService.d.cts +263 -0
  117. package/dist/platform-services/HyperLiquidClientService.d.cts.map +1 -0
  118. package/dist/platform-services/HyperLiquidClientService.d.mts +263 -0
  119. package/dist/platform-services/HyperLiquidClientService.d.mts.map +1 -0
  120. package/dist/platform-services/HyperLiquidClientService.mjs +853 -0
  121. package/dist/platform-services/HyperLiquidClientService.mjs.map +1 -0
  122. package/dist/platform-services/HyperLiquidSubscriptionService.cjs +2170 -0
  123. package/dist/platform-services/HyperLiquidSubscriptionService.cjs.map +1 -0
  124. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts +424 -0
  125. package/dist/platform-services/HyperLiquidSubscriptionService.d.cts.map +1 -0
  126. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts +424 -0
  127. package/dist/platform-services/HyperLiquidSubscriptionService.d.mts.map +1 -0
  128. package/dist/platform-services/HyperLiquidSubscriptionService.mjs +2166 -0
  129. package/dist/platform-services/HyperLiquidSubscriptionService.mjs.map +1 -0
  130. package/dist/platform-services/HyperLiquidWalletService.cjs +140 -0
  131. package/dist/platform-services/HyperLiquidWalletService.cjs.map +1 -0
  132. package/dist/platform-services/HyperLiquidWalletService.d.cts +78 -0
  133. package/dist/platform-services/HyperLiquidWalletService.d.cts.map +1 -0
  134. package/dist/platform-services/HyperLiquidWalletService.d.mts +78 -0
  135. package/dist/platform-services/HyperLiquidWalletService.d.mts.map +1 -0
  136. package/dist/platform-services/HyperLiquidWalletService.mjs +136 -0
  137. package/dist/platform-services/HyperLiquidWalletService.mjs.map +1 -0
  138. package/dist/providers/AggregatedPerpsProvider.cjs +777 -0
  139. package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
  140. package/dist/providers/AggregatedPerpsProvider.d.cts +466 -0
  141. package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
  142. package/dist/providers/AggregatedPerpsProvider.d.mts +466 -0
  143. package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
  144. package/dist/providers/AggregatedPerpsProvider.mjs +773 -0
  145. package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
  146. package/dist/providers/HyperLiquidProvider.cjs +5172 -0
  147. package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
  148. package/dist/providers/HyperLiquidProvider.d.cts +881 -0
  149. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
  150. package/dist/providers/HyperLiquidProvider.d.mts +881 -0
  151. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
  152. package/dist/providers/HyperLiquidProvider.mjs +5168 -0
  153. package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
  154. package/dist/providers/index.cjs +11 -0
  155. package/dist/providers/index.cjs.map +1 -0
  156. package/dist/providers/index.d.cts +6 -0
  157. package/dist/providers/index.d.cts.map +1 -0
  158. package/dist/providers/index.d.mts +6 -0
  159. package/dist/providers/index.d.mts.map +1 -0
  160. package/dist/providers/index.mjs +6 -0
  161. package/dist/providers/index.mjs.map +1 -0
  162. package/dist/routing/ProviderRouter.cjs +148 -0
  163. package/dist/routing/ProviderRouter.cjs.map +1 -0
  164. package/dist/routing/ProviderRouter.d.cts +124 -0
  165. package/dist/routing/ProviderRouter.d.cts.map +1 -0
  166. package/dist/routing/ProviderRouter.d.mts +124 -0
  167. package/dist/routing/ProviderRouter.d.mts.map +1 -0
  168. package/dist/routing/ProviderRouter.mjs +144 -0
  169. package/dist/routing/ProviderRouter.mjs.map +1 -0
  170. package/dist/routing/index.cjs +9 -0
  171. package/dist/routing/index.cjs.map +1 -0
  172. package/dist/routing/index.d.cts +6 -0
  173. package/dist/routing/index.d.cts.map +1 -0
  174. package/dist/routing/index.d.mts +6 -0
  175. package/dist/routing/index.d.mts.map +1 -0
  176. package/dist/routing/index.mjs +5 -0
  177. package/dist/routing/index.mjs.map +1 -0
  178. package/dist/selectors.cjs +161 -0
  179. package/dist/selectors.cjs.map +1 -0
  180. package/dist/selectors.d.cts +345 -0
  181. package/dist/selectors.d.cts.map +1 -0
  182. package/dist/selectors.d.mts +345 -0
  183. package/dist/selectors.d.mts.map +1 -0
  184. package/dist/selectors.mjs +153 -0
  185. package/dist/selectors.mjs.map +1 -0
  186. package/dist/services/AccountService.cjs +313 -0
  187. package/dist/services/AccountService.cjs.map +1 -0
  188. package/dist/services/AccountService.d.cts +53 -0
  189. package/dist/services/AccountService.d.cts.map +1 -0
  190. package/dist/services/AccountService.d.mts +53 -0
  191. package/dist/services/AccountService.d.mts.map +1 -0
  192. package/dist/services/AccountService.mjs +309 -0
  193. package/dist/services/AccountService.mjs.map +1 -0
  194. package/dist/services/DataLakeService.cjs +219 -0
  195. package/dist/services/DataLakeService.cjs.map +1 -0
  196. package/dist/services/DataLakeService.d.cts +49 -0
  197. package/dist/services/DataLakeService.d.cts.map +1 -0
  198. package/dist/services/DataLakeService.d.mts +49 -0
  199. package/dist/services/DataLakeService.d.mts.map +1 -0
  200. package/dist/services/DataLakeService.mjs +215 -0
  201. package/dist/services/DataLakeService.mjs.map +1 -0
  202. package/dist/services/DepositService.cjs +96 -0
  203. package/dist/services/DepositService.cjs.map +1 -0
  204. package/dist/services/DepositService.d.cts +37 -0
  205. package/dist/services/DepositService.d.cts.map +1 -0
  206. package/dist/services/DepositService.d.mts +37 -0
  207. package/dist/services/DepositService.d.mts.map +1 -0
  208. package/dist/services/DepositService.mjs +92 -0
  209. package/dist/services/DepositService.mjs.map +1 -0
  210. package/dist/services/EligibilityService.cjs +156 -0
  211. package/dist/services/EligibilityService.cjs.map +1 -0
  212. package/dist/services/EligibilityService.d.cts +48 -0
  213. package/dist/services/EligibilityService.d.cts.map +1 -0
  214. package/dist/services/EligibilityService.d.mts +48 -0
  215. package/dist/services/EligibilityService.d.mts.map +1 -0
  216. package/dist/services/EligibilityService.mjs +152 -0
  217. package/dist/services/EligibilityService.mjs.map +1 -0
  218. package/dist/services/FeatureFlagConfigurationService.cjs +258 -0
  219. package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
  220. package/dist/services/FeatureFlagConfigurationService.d.cts +100 -0
  221. package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
  222. package/dist/services/FeatureFlagConfigurationService.d.mts +100 -0
  223. package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
  224. package/dist/services/FeatureFlagConfigurationService.mjs +254 -0
  225. package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
  226. package/dist/services/MarketDataService.cjs +875 -0
  227. package/dist/services/MarketDataService.cjs.map +1 -0
  228. package/dist/services/MarketDataService.d.cts +289 -0
  229. package/dist/services/MarketDataService.d.cts.map +1 -0
  230. package/dist/services/MarketDataService.d.mts +289 -0
  231. package/dist/services/MarketDataService.d.mts.map +1 -0
  232. package/dist/services/MarketDataService.mjs +871 -0
  233. package/dist/services/MarketDataService.mjs.map +1 -0
  234. package/dist/services/RewardsIntegrationService.cjs +94 -0
  235. package/dist/services/RewardsIntegrationService.cjs.map +1 -0
  236. package/dist/services/RewardsIntegrationService.d.cts +30 -0
  237. package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
  238. package/dist/services/RewardsIntegrationService.d.mts +30 -0
  239. package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
  240. package/dist/services/RewardsIntegrationService.mjs +90 -0
  241. package/dist/services/RewardsIntegrationService.mjs.map +1 -0
  242. package/dist/services/ServiceContext.cjs +3 -0
  243. package/dist/services/ServiceContext.cjs.map +1 -0
  244. package/dist/services/ServiceContext.d.cts +110 -0
  245. package/dist/services/ServiceContext.d.cts.map +1 -0
  246. package/dist/services/ServiceContext.d.mts +110 -0
  247. package/dist/services/ServiceContext.d.mts.map +1 -0
  248. package/dist/services/ServiceContext.mjs +2 -0
  249. package/dist/services/ServiceContext.mjs.map +1 -0
  250. package/dist/services/TradingService.cjs +1481 -0
  251. package/dist/services/TradingService.cjs.map +1 -0
  252. package/dist/services/TradingService.d.cts +308 -0
  253. package/dist/services/TradingService.d.cts.map +1 -0
  254. package/dist/services/TradingService.d.mts +308 -0
  255. package/dist/services/TradingService.d.mts.map +1 -0
  256. package/dist/services/TradingService.mjs +1477 -0
  257. package/dist/services/TradingService.mjs.map +1 -0
  258. package/dist/services/index.cjs +26 -0
  259. package/dist/services/index.cjs.map +1 -0
  260. package/dist/services/index.d.cts +11 -0
  261. package/dist/services/index.d.cts.map +1 -0
  262. package/dist/services/index.d.mts +11 -0
  263. package/dist/services/index.d.mts.map +1 -0
  264. package/dist/services/index.mjs +10 -0
  265. package/dist/services/index.mjs.map +1 -0
  266. package/dist/services/utils.cjs +16 -0
  267. package/dist/services/utils.cjs.map +1 -0
  268. package/dist/services/utils.d.cts +8 -0
  269. package/dist/services/utils.d.cts.map +1 -0
  270. package/dist/services/utils.d.mts +8 -0
  271. package/dist/services/utils.d.mts.map +1 -0
  272. package/dist/services/utils.mjs +12 -0
  273. package/dist/services/utils.mjs.map +1 -0
  274. package/dist/types/chart.cjs +42 -0
  275. package/dist/types/chart.cjs.map +1 -0
  276. package/dist/types/chart.d.cts +62 -0
  277. package/dist/types/chart.d.cts.map +1 -0
  278. package/dist/types/chart.d.mts +62 -0
  279. package/dist/types/chart.d.mts.map +1 -0
  280. package/dist/types/chart.mjs +39 -0
  281. package/dist/types/chart.mjs.map +1 -0
  282. package/dist/types/hyperliquid-types.cjs +3 -0
  283. package/dist/types/hyperliquid-types.cjs.map +1 -0
  284. package/dist/types/hyperliquid-types.d.cts +52 -0
  285. package/dist/types/hyperliquid-types.d.cts.map +1 -0
  286. package/dist/types/hyperliquid-types.d.mts +52 -0
  287. package/dist/types/hyperliquid-types.d.mts.map +1 -0
  288. package/dist/types/hyperliquid-types.mjs +2 -0
  289. package/dist/types/hyperliquid-types.mjs.map +1 -0
  290. package/dist/types/index.cjs +96 -0
  291. package/dist/types/index.cjs.map +1 -0
  292. package/dist/types/index.d.cts +1153 -0
  293. package/dist/types/index.d.cts.map +1 -0
  294. package/dist/types/index.d.mts +1153 -0
  295. package/dist/types/index.d.mts.map +1 -0
  296. package/dist/types/index.mjs +79 -0
  297. package/dist/types/index.mjs.map +1 -0
  298. package/dist/types/transactionTypes.cjs +28 -0
  299. package/dist/types/transactionTypes.cjs.map +1 -0
  300. package/dist/types/transactionTypes.d.cts +64 -0
  301. package/dist/types/transactionTypes.d.cts.map +1 -0
  302. package/dist/types/transactionTypes.d.mts +64 -0
  303. package/dist/types/transactionTypes.d.mts.map +1 -0
  304. package/dist/types/transactionTypes.mjs +23 -0
  305. package/dist/types/transactionTypes.mjs.map +1 -0
  306. package/dist/utils/accountUtils.cjs +65 -0
  307. package/dist/utils/accountUtils.cjs.map +1 -0
  308. package/dist/utils/accountUtils.d.cts +26 -0
  309. package/dist/utils/accountUtils.d.cts.map +1 -0
  310. package/dist/utils/accountUtils.d.mts +26 -0
  311. package/dist/utils/accountUtils.d.mts.map +1 -0
  312. package/dist/utils/accountUtils.mjs +61 -0
  313. package/dist/utils/accountUtils.mjs.map +1 -0
  314. package/dist/utils/amountConversion.cjs +61 -0
  315. package/dist/utils/amountConversion.cjs.map +1 -0
  316. package/dist/utils/amountConversion.d.cts +16 -0
  317. package/dist/utils/amountConversion.d.cts.map +1 -0
  318. package/dist/utils/amountConversion.d.mts +16 -0
  319. package/dist/utils/amountConversion.d.mts.map +1 -0
  320. package/dist/utils/amountConversion.mjs +54 -0
  321. package/dist/utils/amountConversion.mjs.map +1 -0
  322. package/dist/utils/chartUtils.cjs +98 -0
  323. package/dist/utils/chartUtils.cjs.map +1 -0
  324. package/dist/utils/chartUtils.d.cts +14 -0
  325. package/dist/utils/chartUtils.d.cts.map +1 -0
  326. package/dist/utils/chartUtils.d.mts +14 -0
  327. package/dist/utils/chartUtils.d.mts.map +1 -0
  328. package/dist/utils/chartUtils.mjs +94 -0
  329. package/dist/utils/chartUtils.mjs.map +1 -0
  330. package/dist/utils/errorUtils.cjs +22 -0
  331. package/dist/utils/errorUtils.cjs.map +1 -0
  332. package/dist/utils/errorUtils.d.cts +13 -0
  333. package/dist/utils/errorUtils.d.cts.map +1 -0
  334. package/dist/utils/errorUtils.d.mts +13 -0
  335. package/dist/utils/errorUtils.d.mts.map +1 -0
  336. package/dist/utils/errorUtils.mjs +18 -0
  337. package/dist/utils/errorUtils.mjs.map +1 -0
  338. package/dist/utils/formatUtils.cjs +987 -0
  339. package/dist/utils/formatUtils.cjs.map +1 -0
  340. package/dist/utils/formatUtils.d.cts +387 -0
  341. package/dist/utils/formatUtils.d.cts.map +1 -0
  342. package/dist/utils/formatUtils.d.mts +387 -0
  343. package/dist/utils/formatUtils.d.mts.map +1 -0
  344. package/dist/utils/formatUtils.mjs +966 -0
  345. package/dist/utils/formatUtils.mjs.map +1 -0
  346. package/dist/utils/hyperLiquidAdapter.cjs +454 -0
  347. package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
  348. package/dist/utils/hyperLiquidAdapter.d.cts +158 -0
  349. package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
  350. package/dist/utils/hyperLiquidAdapter.d.mts +158 -0
  351. package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
  352. package/dist/utils/hyperLiquidAdapter.mjs +439 -0
  353. package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
  354. package/dist/utils/hyperLiquidOrderBookProcessor.cjs +89 -0
  355. package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
  356. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +58 -0
  357. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
  358. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +58 -0
  359. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
  360. package/dist/utils/hyperLiquidOrderBookProcessor.mjs +84 -0
  361. package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -0
  362. package/dist/utils/hyperLiquidValidation.cjs +426 -0
  363. package/dist/utils/hyperLiquidValidation.cjs.map +1 -0
  364. package/dist/utils/hyperLiquidValidation.d.cts +143 -0
  365. package/dist/utils/hyperLiquidValidation.d.cts.map +1 -0
  366. package/dist/utils/hyperLiquidValidation.d.mts +143 -0
  367. package/dist/utils/hyperLiquidValidation.d.mts.map +1 -0
  368. package/dist/utils/hyperLiquidValidation.mjs +413 -0
  369. package/dist/utils/hyperLiquidValidation.mjs.map +1 -0
  370. package/dist/utils/idUtils.cjs +50 -0
  371. package/dist/utils/idUtils.cjs.map +1 -0
  372. package/dist/utils/idUtils.d.cts +38 -0
  373. package/dist/utils/idUtils.d.cts.map +1 -0
  374. package/dist/utils/idUtils.d.mts +38 -0
  375. package/dist/utils/idUtils.d.mts.map +1 -0
  376. package/dist/utils/idUtils.mjs +42 -0
  377. package/dist/utils/idUtils.mjs.map +1 -0
  378. package/dist/utils/marginUtils.cjs +137 -0
  379. package/dist/utils/marginUtils.cjs.map +1 -0
  380. package/dist/utils/marginUtils.d.cts +64 -0
  381. package/dist/utils/marginUtils.d.cts.map +1 -0
  382. package/dist/utils/marginUtils.d.mts +64 -0
  383. package/dist/utils/marginUtils.d.mts.map +1 -0
  384. package/dist/utils/marginUtils.mjs +131 -0
  385. package/dist/utils/marginUtils.mjs.map +1 -0
  386. package/dist/utils/marketDataTransform.cjs +227 -0
  387. package/dist/utils/marketDataTransform.cjs.map +1 -0
  388. package/dist/utils/marketDataTransform.d.cts +45 -0
  389. package/dist/utils/marketDataTransform.d.cts.map +1 -0
  390. package/dist/utils/marketDataTransform.d.mts +45 -0
  391. package/dist/utils/marketDataTransform.d.mts.map +1 -0
  392. package/dist/utils/marketDataTransform.mjs +220 -0
  393. package/dist/utils/marketDataTransform.mjs.map +1 -0
  394. package/dist/utils/marketUtils.cjs +420 -0
  395. package/dist/utils/marketUtils.cjs.map +1 -0
  396. package/dist/utils/marketUtils.d.cts +227 -0
  397. package/dist/utils/marketUtils.d.cts.map +1 -0
  398. package/dist/utils/marketUtils.d.mts +227 -0
  399. package/dist/utils/marketUtils.d.mts.map +1 -0
  400. package/dist/utils/marketUtils.mjs +404 -0
  401. package/dist/utils/marketUtils.mjs.map +1 -0
  402. package/dist/utils/orderBookGrouping.cjs +151 -0
  403. package/dist/utils/orderBookGrouping.cjs.map +1 -0
  404. package/dist/utils/orderBookGrouping.d.cts +76 -0
  405. package/dist/utils/orderBookGrouping.d.cts.map +1 -0
  406. package/dist/utils/orderBookGrouping.d.mts +76 -0
  407. package/dist/utils/orderBookGrouping.d.mts.map +1 -0
  408. package/dist/utils/orderBookGrouping.mjs +143 -0
  409. package/dist/utils/orderBookGrouping.mjs.map +1 -0
  410. package/dist/utils/orderCalculations.cjs +283 -0
  411. package/dist/utils/orderCalculations.cjs.map +1 -0
  412. package/dist/utils/orderCalculations.d.cts +107 -0
  413. package/dist/utils/orderCalculations.d.cts.map +1 -0
  414. package/dist/utils/orderCalculations.d.mts +107 -0
  415. package/dist/utils/orderCalculations.d.mts.map +1 -0
  416. package/dist/utils/orderCalculations.mjs +274 -0
  417. package/dist/utils/orderCalculations.mjs.map +1 -0
  418. package/dist/utils/orderUtils.cjs +159 -0
  419. package/dist/utils/orderUtils.cjs.map +1 -0
  420. package/dist/utils/orderUtils.d.cts +66 -0
  421. package/dist/utils/orderUtils.d.cts.map +1 -0
  422. package/dist/utils/orderUtils.d.mts +66 -0
  423. package/dist/utils/orderUtils.d.mts.map +1 -0
  424. package/dist/utils/orderUtils.mjs +151 -0
  425. package/dist/utils/orderUtils.mjs.map +1 -0
  426. package/dist/utils/pnlCalculations.cjs +107 -0
  427. package/dist/utils/pnlCalculations.cjs.map +1 -0
  428. package/dist/utils/pnlCalculations.d.cts +79 -0
  429. package/dist/utils/pnlCalculations.d.cts.map +1 -0
  430. package/dist/utils/pnlCalculations.d.mts +79 -0
  431. package/dist/utils/pnlCalculations.d.mts.map +1 -0
  432. package/dist/utils/pnlCalculations.mjs +97 -0
  433. package/dist/utils/pnlCalculations.mjs.map +1 -0
  434. package/dist/utils/positionCalculations.cjs +176 -0
  435. package/dist/utils/positionCalculations.cjs.map +1 -0
  436. package/dist/utils/positionCalculations.d.cts +85 -0
  437. package/dist/utils/positionCalculations.d.cts.map +1 -0
  438. package/dist/utils/positionCalculations.d.mts +85 -0
  439. package/dist/utils/positionCalculations.d.mts.map +1 -0
  440. package/dist/utils/positionCalculations.mjs +165 -0
  441. package/dist/utils/positionCalculations.mjs.map +1 -0
  442. package/dist/utils/sortMarkets.cjs +88 -0
  443. package/dist/utils/sortMarkets.cjs.map +1 -0
  444. package/dist/utils/sortMarkets.d.cts +21 -0
  445. package/dist/utils/sortMarkets.d.cts.map +1 -0
  446. package/dist/utils/sortMarkets.d.mts +21 -0
  447. package/dist/utils/sortMarkets.d.mts.map +1 -0
  448. package/dist/utils/sortMarkets.mjs +84 -0
  449. package/dist/utils/sortMarkets.mjs.map +1 -0
  450. package/dist/utils/standaloneInfoClient.cjs +34 -0
  451. package/dist/utils/standaloneInfoClient.cjs.map +1 -0
  452. package/dist/utils/standaloneInfoClient.d.cts +31 -0
  453. package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
  454. package/dist/utils/standaloneInfoClient.d.mts +31 -0
  455. package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
  456. package/dist/utils/standaloneInfoClient.mjs +30 -0
  457. package/dist/utils/standaloneInfoClient.mjs.map +1 -0
  458. package/dist/utils/stringParseUtils.cjs +49 -0
  459. package/dist/utils/stringParseUtils.cjs.map +1 -0
  460. package/dist/utils/stringParseUtils.d.cts +35 -0
  461. package/dist/utils/stringParseUtils.d.cts.map +1 -0
  462. package/dist/utils/stringParseUtils.d.mts +35 -0
  463. package/dist/utils/stringParseUtils.d.mts.map +1 -0
  464. package/dist/utils/stringParseUtils.mjs +44 -0
  465. package/dist/utils/stringParseUtils.mjs.map +1 -0
  466. package/dist/utils/time.cjs +37 -0
  467. package/dist/utils/time.cjs.map +1 -0
  468. package/dist/utils/time.d.cts +17 -0
  469. package/dist/utils/time.d.cts.map +1 -0
  470. package/dist/utils/time.d.mts +17 -0
  471. package/dist/utils/time.d.mts.map +1 -0
  472. package/dist/utils/time.mjs +33 -0
  473. package/dist/utils/time.mjs.map +1 -0
  474. package/dist/utils/tpslValidation.cjs +505 -0
  475. package/dist/utils/tpslValidation.cjs.map +1 -0
  476. package/dist/utils/tpslValidation.d.cts +182 -0
  477. package/dist/utils/tpslValidation.d.cts.map +1 -0
  478. package/dist/utils/tpslValidation.d.mts +182 -0
  479. package/dist/utils/tpslValidation.d.mts.map +1 -0
  480. package/dist/utils/tpslValidation.mjs +482 -0
  481. package/dist/utils/tpslValidation.mjs.map +1 -0
  482. package/dist/utils/transactionUtils.cjs +36 -0
  483. package/dist/utils/transactionUtils.cjs.map +1 -0
  484. package/dist/utils/transactionUtils.d.cts +17 -0
  485. package/dist/utils/transactionUtils.d.cts.map +1 -0
  486. package/dist/utils/transactionUtils.d.mts +17 -0
  487. package/dist/utils/transactionUtils.d.mts.map +1 -0
  488. package/dist/utils/transactionUtils.mjs +32 -0
  489. package/dist/utils/transactionUtils.mjs.map +1 -0
  490. package/dist/utils/wait.cjs +12 -0
  491. package/dist/utils/wait.cjs.map +1 -0
  492. package/dist/utils/wait.d.cts +8 -0
  493. package/dist/utils/wait.d.cts.map +1 -0
  494. package/dist/utils/wait.d.mts +8 -0
  495. package/dist/utils/wait.d.mts.map +1 -0
  496. package/dist/utils/wait.mjs +8 -0
  497. package/dist/utils/wait.mjs.map +1 -0
  498. package/package.json +19 -4
@@ -0,0 +1,345 @@
1
+ import type { SortOptionId } from "./constants/perpsConfig.mjs";
2
+ import type { PerpsControllerState } from "./PerpsController.mjs";
3
+ import type { SortDirection } from "./utils/sortMarkets.mjs";
4
+ /**
5
+ * Select whether the user is a first-time perps user
6
+ *
7
+ * @param state - PerpsController state
8
+ * @returns true if user is first-time, false otherwise
9
+ */
10
+ export declare const selectIsFirstTimeUser: (state: PerpsControllerState | undefined) => boolean;
11
+ /**
12
+ * Select whether user has ever placed their first successful order
13
+ *
14
+ * @param state - PerpsController state
15
+ * @returns boolean indicating if first order was placed
16
+ */
17
+ export declare const selectHasPlacedFirstOrder: (state: PerpsControllerState) => boolean;
18
+ /**
19
+ * Select watchlist markets for the current network
20
+ *
21
+ * @param state - PerpsController state
22
+ * @returns Array of watchlist market symbols for current network
23
+ */
24
+ export declare const selectWatchlistMarkets: (state: PerpsControllerState) => string[];
25
+ /**
26
+ * Check if a specific market is in the watchlist on the current network
27
+ *
28
+ * @param state - PerpsController state
29
+ * @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')
30
+ * @returns boolean indicating if market is in watchlist
31
+ */
32
+ export declare const selectIsWatchlistMarket: (state: PerpsControllerState, symbol: string) => boolean;
33
+ /**
34
+ * Select trade configuration for a specific market on the current network.
35
+ * Uses memoization to return stable object references and prevent unnecessary re-renders.
36
+ *
37
+ * Usage: selectTradeConfiguration(state, coin)
38
+ */
39
+ export declare const selectTradeConfiguration: ((state: PerpsControllerState, _coin: string) => {
40
+ leverage?: number | undefined;
41
+ } | undefined) & {
42
+ clearCache: () => void;
43
+ resultsCount: () => number;
44
+ resetResultsCount: () => void;
45
+ } & {
46
+ resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
47
+ testnet: {
48
+ [marketSymbol: string]: {
49
+ leverage?: number | undefined;
50
+ orderBookGrouping?: number | undefined;
51
+ pendingConfig?: {
52
+ amount?: string | undefined;
53
+ leverage?: number | undefined;
54
+ takeProfitPrice?: string | undefined;
55
+ stopLossPrice?: string | undefined;
56
+ limitPrice?: string | undefined;
57
+ orderType?: import("./types/index.mjs").OrderType | undefined;
58
+ timestamp: number;
59
+ } | undefined;
60
+ };
61
+ };
62
+ mainnet: {
63
+ [marketSymbol: string]: {
64
+ leverage?: number | undefined;
65
+ orderBookGrouping?: number | undefined;
66
+ pendingConfig?: {
67
+ amount?: string | undefined;
68
+ leverage?: number | undefined;
69
+ takeProfitPrice?: string | undefined;
70
+ stopLossPrice?: string | undefined;
71
+ limitPrice?: string | undefined;
72
+ orderType?: import("./types/index.mjs").OrderType | undefined;
73
+ timestamp: number;
74
+ } | undefined;
75
+ };
76
+ };
77
+ } | undefined, resultFuncArgs_2: string) => {
78
+ leverage?: number | undefined;
79
+ } | undefined;
80
+ memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
81
+ testnet: {
82
+ [marketSymbol: string]: {
83
+ leverage?: number | undefined;
84
+ orderBookGrouping?: number | undefined;
85
+ pendingConfig?: {
86
+ amount?: string | undefined;
87
+ leverage?: number | undefined;
88
+ takeProfitPrice?: string | undefined;
89
+ stopLossPrice?: string | undefined;
90
+ limitPrice?: string | undefined;
91
+ orderType?: import("./types/index.mjs").OrderType | undefined;
92
+ timestamp: number;
93
+ } | undefined;
94
+ };
95
+ };
96
+ mainnet: {
97
+ [marketSymbol: string]: {
98
+ leverage?: number | undefined;
99
+ orderBookGrouping?: number | undefined;
100
+ pendingConfig?: {
101
+ amount?: string | undefined;
102
+ leverage?: number | undefined;
103
+ takeProfitPrice?: string | undefined;
104
+ stopLossPrice?: string | undefined;
105
+ limitPrice?: string | undefined;
106
+ orderType?: import("./types/index.mjs").OrderType | undefined;
107
+ timestamp: number;
108
+ } | undefined;
109
+ };
110
+ };
111
+ } | undefined, resultFuncArgs_2: string) => {
112
+ leverage?: number | undefined;
113
+ } | undefined) & {
114
+ clearCache: () => void;
115
+ resultsCount: () => number;
116
+ resetResultsCount: () => void;
117
+ };
118
+ lastResult: () => {
119
+ leverage?: number | undefined;
120
+ } | undefined;
121
+ dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
122
+ recomputations: () => number;
123
+ resetRecomputations: () => void;
124
+ dependencyRecomputations: () => number;
125
+ resetDependencyRecomputations: () => void;
126
+ } & {
127
+ memoize: typeof import("reselect").weakMapMemoize;
128
+ argsMemoize: typeof import("reselect").weakMapMemoize;
129
+ };
130
+ /**
131
+ * Select pending trade configuration for a specific market on the current network.
132
+ * Returns undefined if config doesn't exist or has expired (more than 5 minutes old).
133
+ *
134
+ * Usage: selectPendingTradeConfiguration(state, coin)
135
+ */
136
+ export declare const selectPendingTradeConfiguration: ((state: PerpsControllerState, _coin: string) => {
137
+ amount?: string | undefined;
138
+ leverage?: number | undefined;
139
+ takeProfitPrice?: string | undefined;
140
+ stopLossPrice?: string | undefined;
141
+ limitPrice?: string | undefined;
142
+ orderType?: "market" | "limit" | undefined;
143
+ } | undefined) & {
144
+ clearCache: () => void;
145
+ resultsCount: () => number;
146
+ resetResultsCount: () => void;
147
+ } & {
148
+ resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
149
+ testnet: {
150
+ [marketSymbol: string]: {
151
+ leverage?: number | undefined;
152
+ orderBookGrouping?: number | undefined;
153
+ pendingConfig?: {
154
+ amount?: string | undefined;
155
+ leverage?: number | undefined;
156
+ takeProfitPrice?: string | undefined;
157
+ stopLossPrice?: string | undefined;
158
+ limitPrice?: string | undefined;
159
+ orderType?: import("./types/index.mjs").OrderType | undefined;
160
+ timestamp: number;
161
+ } | undefined;
162
+ };
163
+ };
164
+ mainnet: {
165
+ [marketSymbol: string]: {
166
+ leverage?: number | undefined;
167
+ orderBookGrouping?: number | undefined;
168
+ pendingConfig?: {
169
+ amount?: string | undefined;
170
+ leverage?: number | undefined;
171
+ takeProfitPrice?: string | undefined;
172
+ stopLossPrice?: string | undefined;
173
+ limitPrice?: string | undefined;
174
+ orderType?: import("./types/index.mjs").OrderType | undefined;
175
+ timestamp: number;
176
+ } | undefined;
177
+ };
178
+ };
179
+ } | undefined, resultFuncArgs_2: string) => {
180
+ amount?: string | undefined;
181
+ leverage?: number | undefined;
182
+ takeProfitPrice?: string | undefined;
183
+ stopLossPrice?: string | undefined;
184
+ limitPrice?: string | undefined;
185
+ orderType?: "market" | "limit" | undefined;
186
+ } | undefined;
187
+ memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
188
+ testnet: {
189
+ [marketSymbol: string]: {
190
+ leverage?: number | undefined;
191
+ orderBookGrouping?: number | undefined;
192
+ pendingConfig?: {
193
+ amount?: string | undefined;
194
+ leverage?: number | undefined;
195
+ takeProfitPrice?: string | undefined;
196
+ stopLossPrice?: string | undefined;
197
+ limitPrice?: string | undefined;
198
+ orderType?: import("./types/index.mjs").OrderType | undefined;
199
+ timestamp: number;
200
+ } | undefined;
201
+ };
202
+ };
203
+ mainnet: {
204
+ [marketSymbol: string]: {
205
+ leverage?: number | undefined;
206
+ orderBookGrouping?: number | undefined;
207
+ pendingConfig?: {
208
+ amount?: string | undefined;
209
+ leverage?: number | undefined;
210
+ takeProfitPrice?: string | undefined;
211
+ stopLossPrice?: string | undefined;
212
+ limitPrice?: string | undefined;
213
+ orderType?: import("./types/index.mjs").OrderType | undefined;
214
+ timestamp: number;
215
+ } | undefined;
216
+ };
217
+ };
218
+ } | undefined, resultFuncArgs_2: string) => {
219
+ amount?: string | undefined;
220
+ leverage?: number | undefined;
221
+ takeProfitPrice?: string | undefined;
222
+ stopLossPrice?: string | undefined;
223
+ limitPrice?: string | undefined;
224
+ orderType?: "market" | "limit" | undefined;
225
+ } | undefined) & {
226
+ clearCache: () => void;
227
+ resultsCount: () => number;
228
+ resetResultsCount: () => void;
229
+ };
230
+ lastResult: () => {
231
+ amount?: string | undefined;
232
+ leverage?: number | undefined;
233
+ takeProfitPrice?: string | undefined;
234
+ stopLossPrice?: string | undefined;
235
+ limitPrice?: string | undefined;
236
+ orderType?: "market" | "limit" | undefined;
237
+ } | undefined;
238
+ dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
239
+ recomputations: () => number;
240
+ resetRecomputations: () => void;
241
+ dependencyRecomputations: () => number;
242
+ resetDependencyRecomputations: () => void;
243
+ } & {
244
+ memoize: typeof import("reselect").weakMapMemoize;
245
+ argsMemoize: typeof import("reselect").weakMapMemoize;
246
+ };
247
+ /**
248
+ * Select market filter preferences (network-independent)
249
+ *
250
+ * @param state - PerpsController state
251
+ * @returns Sort/filter preferences object with optionId and direction
252
+ */
253
+ export declare const selectMarketFilterPreferences: (state: PerpsControllerState) => {
254
+ optionId: SortOptionId;
255
+ direction: SortDirection;
256
+ };
257
+ /**
258
+ * Select order book grouping for a specific market on the current network.
259
+ *
260
+ * Usage: selectOrderBookGrouping(state, coin)
261
+ */
262
+ export declare const selectOrderBookGrouping: ((state: PerpsControllerState, _coin: string) => number | undefined) & {
263
+ clearCache: () => void;
264
+ resultsCount: () => number;
265
+ resetResultsCount: () => void;
266
+ } & {
267
+ resultFunc: (resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
268
+ testnet: {
269
+ [marketSymbol: string]: {
270
+ leverage?: number | undefined;
271
+ orderBookGrouping?: number | undefined;
272
+ pendingConfig?: {
273
+ amount?: string | undefined;
274
+ leverage?: number | undefined;
275
+ takeProfitPrice?: string | undefined;
276
+ stopLossPrice?: string | undefined;
277
+ limitPrice?: string | undefined;
278
+ orderType?: import("./types/index.mjs").OrderType | undefined;
279
+ timestamp: number;
280
+ } | undefined;
281
+ };
282
+ };
283
+ mainnet: {
284
+ [marketSymbol: string]: {
285
+ leverage?: number | undefined;
286
+ orderBookGrouping?: number | undefined;
287
+ pendingConfig?: {
288
+ amount?: string | undefined;
289
+ leverage?: number | undefined;
290
+ takeProfitPrice?: string | undefined;
291
+ stopLossPrice?: string | undefined;
292
+ limitPrice?: string | undefined;
293
+ orderType?: import("./types/index.mjs").OrderType | undefined;
294
+ timestamp: number;
295
+ } | undefined;
296
+ };
297
+ };
298
+ } | undefined, resultFuncArgs_2: string) => number | undefined;
299
+ memoizedResultFunc: ((resultFuncArgs_0: boolean | undefined, resultFuncArgs_1: {
300
+ testnet: {
301
+ [marketSymbol: string]: {
302
+ leverage?: number | undefined;
303
+ orderBookGrouping?: number | undefined;
304
+ pendingConfig?: {
305
+ amount?: string | undefined;
306
+ leverage?: number | undefined;
307
+ takeProfitPrice?: string | undefined;
308
+ stopLossPrice?: string | undefined;
309
+ limitPrice?: string | undefined;
310
+ orderType?: import("./types/index.mjs").OrderType | undefined;
311
+ timestamp: number;
312
+ } | undefined;
313
+ };
314
+ };
315
+ mainnet: {
316
+ [marketSymbol: string]: {
317
+ leverage?: number | undefined;
318
+ orderBookGrouping?: number | undefined;
319
+ pendingConfig?: {
320
+ amount?: string | undefined;
321
+ leverage?: number | undefined;
322
+ takeProfitPrice?: string | undefined;
323
+ stopLossPrice?: string | undefined;
324
+ limitPrice?: string | undefined;
325
+ orderType?: import("./types/index.mjs").OrderType | undefined;
326
+ timestamp: number;
327
+ } | undefined;
328
+ };
329
+ };
330
+ } | undefined, resultFuncArgs_2: string) => number | undefined) & {
331
+ clearCache: () => void;
332
+ resultsCount: () => number;
333
+ resetResultsCount: () => void;
334
+ };
335
+ lastResult: () => number | undefined;
336
+ dependencies: [(state: PerpsControllerState) => boolean | undefined, (state: PerpsControllerState, _coin: string) => PerpsControllerState['tradeConfigurations'] | undefined, (_state: PerpsControllerState, coin: string) => string];
337
+ recomputations: () => number;
338
+ resetRecomputations: () => void;
339
+ dependencyRecomputations: () => number;
340
+ resetDependencyRecomputations: () => void;
341
+ } & {
342
+ memoize: typeof import("reselect").weakMapMemoize;
343
+ argsMemoize: typeof import("reselect").weakMapMemoize;
344
+ };
345
+ //# sourceMappingURL=selectors.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.mts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,oCAAgC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA0B;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,gCAA4B;AAEzD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,UACzB,oBAAoB,GAAG,SAAS,KACtC,OAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,UAC7B,oBAAoB,KAC1B,OAKF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,UAC1B,oBAAoB,KAC1B,MAAM,EAKR,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAC3B,oBAAoB,UACnB,MAAM,KACb,OAGF,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAEzB,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAYvD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAEhC,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAqCvD,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,UACjC,oBAAoB,KAC1B;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAmCpD,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAExB,oBAAoB,KAAG,OAAO,GAAG,SAAS,UAEzC,oBAAoB,SACpB,MAAM,KACZ,oBAAoB,CAAC,qBAAqB,CAAC,GAAG,SAAS,WAEjD,oBAAoB,QAAQ,MAAM,KAAG,MAAM;;;;;;;;CAMvD,CAAC"}
@@ -0,0 +1,153 @@
1
+ import { createSelector } from "reselect";
2
+ import { MARKET_SORTING_CONFIG } from "./constants/perpsConfig.mjs";
3
+ /**
4
+ * Select whether the user is a first-time perps user
5
+ *
6
+ * @param state - PerpsController state
7
+ * @returns true if user is first-time, false otherwise
8
+ */
9
+ export const selectIsFirstTimeUser = (state) => {
10
+ if (state?.isTestnet) {
11
+ return state?.isFirstTimeUser?.testnet ?? true;
12
+ }
13
+ return state?.isFirstTimeUser?.mainnet ?? true;
14
+ };
15
+ /**
16
+ * Select whether user has ever placed their first successful order
17
+ *
18
+ * @param state - PerpsController state
19
+ * @returns boolean indicating if first order was placed
20
+ */
21
+ export const selectHasPlacedFirstOrder = (state) => {
22
+ if (state?.isTestnet) {
23
+ return state?.hasPlacedFirstOrder?.testnet ?? false;
24
+ }
25
+ return state?.hasPlacedFirstOrder?.mainnet ?? false;
26
+ };
27
+ /**
28
+ * Select watchlist markets for the current network
29
+ *
30
+ * @param state - PerpsController state
31
+ * @returns Array of watchlist market symbols for current network
32
+ */
33
+ export const selectWatchlistMarkets = (state) => {
34
+ if (state?.isTestnet) {
35
+ return state?.watchlistMarkets?.testnet ?? [];
36
+ }
37
+ return state?.watchlistMarkets?.mainnet ?? [];
38
+ };
39
+ /**
40
+ * Check if a specific market is in the watchlist on the current network
41
+ *
42
+ * @param state - PerpsController state
43
+ * @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')
44
+ * @returns boolean indicating if market is in watchlist
45
+ */
46
+ export const selectIsWatchlistMarket = (state, symbol) => {
47
+ const watchlist = selectWatchlistMarkets(state);
48
+ return watchlist.includes(symbol);
49
+ };
50
+ // Note: createSelector functions below use eslint-disable comments because Core's
51
+ // jsdoc rules require documentation for all input selector functions, which would
52
+ // add noise to these utility selectors. Mobile does not have this ESLint rule.
53
+ /* eslint-disable jsdoc/require-param, jsdoc/require-returns */
54
+ /**
55
+ * Select trade configuration for a specific market on the current network.
56
+ * Uses memoization to return stable object references and prevent unnecessary re-renders.
57
+ *
58
+ * Usage: selectTradeConfiguration(state, coin)
59
+ */
60
+ export const selectTradeConfiguration = createSelector([
61
+ (state) => state?.isTestnet,
62
+ (state, _coin) => state?.tradeConfigurations,
63
+ (_state, coin) => coin,
64
+ ], (isTestnet, configs, coin) => {
65
+ const network = isTestnet ? 'testnet' : 'mainnet';
66
+ const config = configs?.[network]?.[coin];
67
+ if (!config?.leverage) {
68
+ return undefined;
69
+ }
70
+ return { leverage: config.leverage };
71
+ });
72
+ /**
73
+ * Select pending trade configuration for a specific market on the current network.
74
+ * Returns undefined if config doesn't exist or has expired (more than 5 minutes old).
75
+ *
76
+ * Usage: selectPendingTradeConfiguration(state, coin)
77
+ */
78
+ export const selectPendingTradeConfiguration = createSelector([
79
+ (state) => state?.isTestnet,
80
+ (state, _coin) => state?.tradeConfigurations,
81
+ (_state, coin) => coin,
82
+ ], (isTestnet, configs, coin) => {
83
+ const network = isTestnet ? 'testnet' : 'mainnet';
84
+ const config = configs?.[network]?.[coin]?.pendingConfig;
85
+ if (!config) {
86
+ return undefined;
87
+ }
88
+ // Check if config has expired (5 minutes = 300,000 milliseconds)
89
+ const FIVE_MINUTES_MS = 5 * 60 * 1000;
90
+ const now = Date.now();
91
+ const age = now - config.timestamp;
92
+ if (age > FIVE_MINUTES_MS) {
93
+ // Config expired, return undefined
94
+ return undefined;
95
+ }
96
+ // Return config without timestamp
97
+ const { timestamp, ...configWithoutTimestamp } = config;
98
+ return configWithoutTimestamp;
99
+ });
100
+ /* eslint-enable jsdoc/require-param, jsdoc/require-returns */
101
+ /**
102
+ * Select market filter preferences (network-independent)
103
+ *
104
+ * @param state - PerpsController state
105
+ * @returns Sort/filter preferences object with optionId and direction
106
+ */
107
+ export const selectMarketFilterPreferences = (state) => {
108
+ const pref = state?.marketFilterPreferences;
109
+ // Handle legacy string format (backward compatibility)
110
+ if (typeof pref === 'string') {
111
+ // Map legacy compound IDs to new format
112
+ // Old format: 'priceChange-desc' or 'priceChange-asc'
113
+ // New format: { optionId: 'priceChange', direction: 'desc'/'asc' }
114
+ if (pref === 'priceChange-desc') {
115
+ return {
116
+ optionId: 'priceChange',
117
+ direction: 'desc',
118
+ };
119
+ }
120
+ if (pref === 'priceChange-asc') {
121
+ return {
122
+ optionId: 'priceChange',
123
+ direction: 'asc',
124
+ };
125
+ }
126
+ // Handle other simple legacy strings (e.g., 'volume', 'openInterest', etc.)
127
+ return {
128
+ optionId: pref,
129
+ direction: MARKET_SORTING_CONFIG.DefaultDirection,
130
+ };
131
+ }
132
+ // Return new object format or default
133
+ return (pref ?? {
134
+ optionId: MARKET_SORTING_CONFIG.DefaultSortOptionId,
135
+ direction: MARKET_SORTING_CONFIG.DefaultDirection,
136
+ });
137
+ };
138
+ /* eslint-disable jsdoc/require-param, jsdoc/require-returns */
139
+ /**
140
+ * Select order book grouping for a specific market on the current network.
141
+ *
142
+ * Usage: selectOrderBookGrouping(state, coin)
143
+ */
144
+ export const selectOrderBookGrouping = createSelector([
145
+ (state) => state?.isTestnet,
146
+ (state, _coin) => state?.tradeConfigurations,
147
+ (_state, coin) => coin,
148
+ ], (isTestnet, configs, coin) => {
149
+ const network = isTestnet ? 'testnet' : 'mainnet';
150
+ return configs?.[network]?.[coin]?.orderBookGrouping;
151
+ });
152
+ /* eslint-enable jsdoc/require-param, jsdoc/require-returns */
153
+ //# sourceMappingURL=selectors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.mjs","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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","sourcesContent":["import { createSelector } from 'reselect';\n\nimport { MARKET_SORTING_CONFIG } from './constants/perpsConfig';\nimport type { SortOptionId } from './constants/perpsConfig';\nimport type { PerpsControllerState } from './PerpsController';\nimport type { SortDirection } from './utils/sortMarkets';\n\n/**\n * Select whether the user is a first-time perps user\n *\n * @param state - PerpsController state\n * @returns true if user is first-time, false otherwise\n */\nexport const selectIsFirstTimeUser = (\n state: PerpsControllerState | undefined,\n): boolean => {\n if (state?.isTestnet) {\n return state?.isFirstTimeUser?.testnet ?? true;\n }\n return state?.isFirstTimeUser?.mainnet ?? true;\n};\n\n/**\n * Select whether user has ever placed their first successful order\n *\n * @param state - PerpsController state\n * @returns boolean indicating if first order was placed\n */\nexport const selectHasPlacedFirstOrder = (\n state: PerpsControllerState,\n): boolean => {\n if (state?.isTestnet) {\n return state?.hasPlacedFirstOrder?.testnet ?? false;\n }\n return state?.hasPlacedFirstOrder?.mainnet ?? false;\n};\n\n/**\n * Select watchlist markets for the current network\n *\n * @param state - PerpsController state\n * @returns Array of watchlist market symbols for current network\n */\nexport const selectWatchlistMarkets = (\n state: PerpsControllerState,\n): string[] => {\n if (state?.isTestnet) {\n return state?.watchlistMarkets?.testnet ?? [];\n }\n return state?.watchlistMarkets?.mainnet ?? [];\n};\n\n/**\n * Check if a specific market is in the watchlist on the current network\n *\n * @param state - PerpsController state\n * @param symbol - Market symbol to check (e.g., 'BTC', 'ETH')\n * @returns boolean indicating if market is in watchlist\n */\nexport const selectIsWatchlistMarket = (\n state: PerpsControllerState,\n symbol: string,\n): boolean => {\n const watchlist = selectWatchlistMarkets(state);\n return watchlist.includes(symbol);\n};\n\n// Note: createSelector functions below use eslint-disable comments because Core's\n// jsdoc rules require documentation for all input selector functions, which would\n// add noise to these utility selectors. Mobile does not have this ESLint rule.\n\n/* eslint-disable jsdoc/require-param, jsdoc/require-returns */\n\n/**\n * Select trade configuration for a specific market on the current network.\n * Uses memoization to return stable object references and prevent unnecessary re-renders.\n *\n * Usage: selectTradeConfiguration(state, coin)\n */\nexport const selectTradeConfiguration = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (isTestnet, configs, coin): { leverage?: number } | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n const config = configs?.[network]?.[coin];\n\n if (!config?.leverage) {\n return undefined;\n }\n\n return { leverage: config.leverage };\n },\n);\n\n/**\n * Select pending trade configuration for a specific market on the current network.\n * Returns undefined if config doesn't exist or has expired (more than 5 minutes old).\n *\n * Usage: selectPendingTradeConfiguration(state, coin)\n */\nexport const selectPendingTradeConfiguration = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (\n isTestnet,\n configs,\n coin,\n ):\n | {\n amount?: string;\n leverage?: number;\n takeProfitPrice?: string;\n stopLossPrice?: string;\n limitPrice?: string;\n orderType?: 'market' | 'limit';\n }\n | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n const config = configs?.[network]?.[coin]?.pendingConfig;\n\n if (!config) {\n return undefined;\n }\n\n // Check if config has expired (5 minutes = 300,000 milliseconds)\n const FIVE_MINUTES_MS = 5 * 60 * 1000;\n const now = Date.now();\n const age = now - config.timestamp;\n\n if (age > FIVE_MINUTES_MS) {\n // Config expired, return undefined\n return undefined;\n }\n\n // Return config without timestamp\n const { timestamp, ...configWithoutTimestamp } = config;\n return configWithoutTimestamp;\n },\n);\n\n/* eslint-enable jsdoc/require-param, jsdoc/require-returns */\n\n/**\n * Select market filter preferences (network-independent)\n *\n * @param state - PerpsController state\n * @returns Sort/filter preferences object with optionId and direction\n */\nexport const selectMarketFilterPreferences = (\n state: PerpsControllerState,\n): { optionId: SortOptionId; direction: SortDirection } => {\n const pref = state?.marketFilterPreferences;\n\n // Handle legacy string format (backward compatibility)\n if (typeof pref === 'string') {\n // Map legacy compound IDs to new format\n // Old format: 'priceChange-desc' or 'priceChange-asc'\n // New format: { optionId: 'priceChange', direction: 'desc'/'asc' }\n if (pref === 'priceChange-desc') {\n return {\n optionId: 'priceChange',\n direction: 'desc',\n };\n }\n if (pref === 'priceChange-asc') {\n return {\n optionId: 'priceChange',\n direction: 'asc',\n };\n }\n\n // Handle other simple legacy strings (e.g., 'volume', 'openInterest', etc.)\n return {\n optionId: pref as SortOptionId,\n direction: MARKET_SORTING_CONFIG.DefaultDirection,\n };\n }\n\n // Return new object format or default\n return (\n pref ?? {\n optionId: MARKET_SORTING_CONFIG.DefaultSortOptionId,\n direction: MARKET_SORTING_CONFIG.DefaultDirection,\n }\n );\n};\n\n/* eslint-disable jsdoc/require-param, jsdoc/require-returns */\n\n/**\n * Select order book grouping for a specific market on the current network.\n *\n * Usage: selectOrderBookGrouping(state, coin)\n */\nexport const selectOrderBookGrouping = createSelector(\n [\n (state: PerpsControllerState): boolean | undefined => state?.isTestnet,\n (\n state: PerpsControllerState,\n _coin: string,\n ): PerpsControllerState['tradeConfigurations'] | undefined =>\n state?.tradeConfigurations,\n (_state: PerpsControllerState, coin: string): string => coin,\n ],\n (isTestnet, configs, coin): number | undefined => {\n const network = isTestnet ? 'testnet' : 'mainnet';\n return configs?.[network]?.[coin]?.orderBookGrouping;\n },\n);\n\n/* eslint-enable jsdoc/require-param, jsdoc/require-returns */\n"]}