@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,227 @@
1
+ import type { BadgeType, CandleData, PerpsMarketData } from "../types/index.cjs";
2
+ /**
3
+ * Pattern matcher type - either string (exact match) or RegExp (wildcard)
4
+ */
5
+ export type MarketPatternMatcher = RegExp | string;
6
+ /**
7
+ * Pre-compiled pattern with original pattern string and matcher
8
+ */
9
+ export type CompiledMarketPattern = {
10
+ pattern: string;
11
+ matcher: MarketPatternMatcher;
12
+ };
13
+ /**
14
+ * Escape special regex characters in a string
15
+ *
16
+ * @param str - String to escape
17
+ * @returns Escaped string safe for regex
18
+ */
19
+ export declare const escapeRegex: (str: string) => string;
20
+ /**
21
+ * Validate market filter pattern for safety
22
+ * Prevents regex DoS attacks from malicious patterns
23
+ *
24
+ * @param pattern - Pattern to validate
25
+ * @returns true if pattern is safe
26
+ * @throws Error if pattern is unsafe
27
+ *
28
+ * @example Valid patterns
29
+ * validateMarketPattern("BTC") // → true
30
+ * validateMarketPattern("xyz:TSLA") // → true
31
+ * validateMarketPattern("xyz:*") // → true
32
+ *
33
+ * @example Invalid patterns
34
+ * validateMarketPattern("") // → throws Error
35
+ * validateMarketPattern("xyz:.*") // → throws Error (regex chars)
36
+ * validateMarketPattern("BTC#SCAM") // → throws Error (invalid char)
37
+ */
38
+ export declare const validateMarketPattern: (pattern: string) => boolean;
39
+ /**
40
+ * Compile market filter pattern into optimized matcher
41
+ * Supports wildcards ("xyz:*"), DEX shorthand ("xyz"), and exact matches ("xyz:TSLA")
42
+ *
43
+ * Note: Main DEX markets (no prefix) don't need filtering - they're always included.
44
+ * Patterns without colons are treated as HIP-3 DEX shorthand.
45
+ *
46
+ * @param pattern - Pattern string (e.g., "xyz:*", "xyz:TSLA", "xyz")
47
+ * @returns Compiled matcher (RegExp for wildcards/shorthand, string for exact match)
48
+ *
49
+ * @example Wildcard - matches all markets from a DEX
50
+ * compileMarketPattern("xyz:*") // → /^xyz:/
51
+ *
52
+ * @example DEX shorthand - equivalent to wildcard
53
+ * compileMarketPattern("xyz") // → /^xyz:/ (matches all xyz markets)
54
+ *
55
+ * @example Exact match - matches specific market
56
+ * compileMarketPattern("xyz:TSLA") // → "xyz:TSLA"
57
+ */
58
+ export declare const compileMarketPattern: (pattern: string) => MarketPatternMatcher;
59
+ /**
60
+ * Check if a symbol matches a compiled pattern matcher
61
+ *
62
+ * @param symbol - Market symbol (e.g., "BTC", "xyz:TSLA")
63
+ * @param matcher - Compiled matcher (string or RegExp)
64
+ * @returns true if symbol matches the pattern
65
+ */
66
+ export declare const matchesMarketPattern: (symbol: string, matcher: MarketPatternMatcher) => boolean;
67
+ /**
68
+ * Check if a market should be included based on HIP-3 master switch and whitelist/blacklist patterns
69
+ * Main DEX markets (null dex) are ALWAYS included (no filtering)
70
+ *
71
+ * Logic: Check master switch → apply whitelist (if non-empty) → apply blacklist
72
+ *
73
+ * @param symbol - Market symbol (e.g., "BTC", "xyz:TSLA")
74
+ * @param dex - DEX identifier (null for main DEX, "xyz" for HIP-3 DEX)
75
+ * @param hip3Enabled - Master switch for HIP-3 markets (false = block all HIP-3)
76
+ * @param compiledEnabledPatterns - Pre-compiled whitelist patterns (empty = allow all)
77
+ * @param compiledBlockedPatterns - Pre-compiled blacklist patterns (empty = block none)
78
+ * @returns true if market should be shown to users
79
+ *
80
+ * @example Main DEX market (always included)
81
+ * shouldIncludeMarket("BTC", null, true, [...], [...]) // → true
82
+ *
83
+ * @example HIP-3 when master switch is OFF
84
+ * shouldIncludeMarket("xyz:TSLA", "xyz", false, [...], [...]) // → false (HIP-3 disabled)
85
+ *
86
+ * @example HIP-3 with empty whitelist (discovery mode)
87
+ * shouldIncludeMarket("xyz:TSLA", "xyz", true, [], []) // → true (allow all)
88
+ *
89
+ * @example HIP-3 with whitelist
90
+ * shouldIncludeMarket("xyz:TSLA", "xyz", true,
91
+ * [{pattern: "xyz:*", matcher: /^xyz:/}], []) // → true (matches whitelist)
92
+ *
93
+ * @example HIP-3 with blacklist
94
+ * shouldIncludeMarket("xyz:SCAM", "xyz", true, [],
95
+ * [{pattern: "xyz:SCAM", matcher: "xyz:SCAM"}]) // → false (blocked)
96
+ */
97
+ export declare const shouldIncludeMarket: (symbol: string, dex: string | null, hip3Enabled: boolean, compiledEnabledPatterns: CompiledMarketPattern[], compiledBlockedPatterns: CompiledMarketPattern[]) => boolean;
98
+ /**
99
+ * Extract the display symbol from a full symbol string
100
+ * Strips DEX prefix for HIP-3 markets (e.g., "xyz:XYZ100" -> "XYZ100")
101
+ * Returns the symbol unchanged if no DEX prefix is present
102
+ *
103
+ * @param symbol - Full symbol (e.g., "BTC" or "xyz:XYZ100")
104
+ * @returns Display symbol without DEX prefix (e.g., "BTC" or "XYZ100")
105
+ */
106
+ export declare const getPerpsDisplaySymbol: (symbol: string) => string;
107
+ /**
108
+ * Extract the DEX identifier from a full symbol string
109
+ * Returns the DEX prefix for HIP-3 markets (e.g., "xyz:XYZ100" -> "xyz")
110
+ * Returns null if no DEX prefix is present (main DEX market)
111
+ *
112
+ * @param symbol - Full symbol (e.g., "BTC" or "xyz:XYZ100")
113
+ * @returns DEX identifier or null if main DEX (e.g., "xyz" or null)
114
+ */
115
+ export declare const getPerpsDexFromSymbol: (symbol: string) => string | null;
116
+ type FundingCountdownParams = {
117
+ /**
118
+ * Next funding time in milliseconds since epoch (optional, market-specific)
119
+ */
120
+ nextFundingTime?: number;
121
+ /**
122
+ * Funding interval in hours (optional, market-specific)
123
+ * Default is 1 hour for HyperLiquid (funding is paid every hour)
124
+ */
125
+ fundingIntervalHours?: number;
126
+ };
127
+ /**
128
+ * Calculate the time until the next funding period.
129
+ * Supports market-specific funding times when provided.
130
+ * Falls back to default HyperLiquid 1-hour periods (funding paid every hour).
131
+ *
132
+ * @param params - Optional funding countdown parameters
133
+ * @returns Formatted countdown string in HH:MM:SS format
134
+ */
135
+ export declare const calculateFundingCountdown: (params?: FundingCountdownParams) => string;
136
+ /**
137
+ * Calculate 24h high and low from candlestick data.
138
+ *
139
+ * @param candleData - Candlestick data containing price candles
140
+ * @returns Object with high and low prices for the last 24 hours
141
+ */
142
+ export declare const calculate24hHighLow: (candleData: CandleData | null) => {
143
+ high: number;
144
+ low: number;
145
+ };
146
+ /**
147
+ * Determine badge type for a market based on its metadata
148
+ * Prioritizes explicit marketType over generic experimental badge
149
+ *
150
+ * @param market - Market data object (only needs marketType and marketSource fields)
151
+ * @returns Badge type to display, or undefined for no badge (main DEX)
152
+ *
153
+ * @example Main DEX
154
+ * getMarketBadgeType({ symbol: 'BTC', marketSource: null }) // → undefined
155
+ *
156
+ * @example Mapped HIP-3 DEX
157
+ * getMarketBadgeType({ symbol: 'xyz:XYZ100', marketSource: 'xyz', marketType: 'equity' }) // → 'equity'
158
+ *
159
+ * @example Unmapped HIP-3 DEX
160
+ * getMarketBadgeType({ symbol: 'abc:ABC100', marketSource: 'abc' }) // → 'experimental'
161
+ */
162
+ export declare const getMarketBadgeType: (market: Pick<PerpsMarketData, 'marketType' | 'marketSource'>) => BadgeType | undefined;
163
+ /**
164
+ * Filter markets by search query
165
+ * Searches through both symbol and name fields (case-insensitive)
166
+ *
167
+ * @param markets - Array of markets to filter
168
+ * @param searchQuery - Search query string
169
+ * @returns Filtered array of markets matching the query
170
+ *
171
+ * @example
172
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], 'btc') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
173
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], 'coin') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
174
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], '') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
175
+ */
176
+ export declare const filterMarketsByQuery: (markets: PerpsMarketData[], searchQuery: string) => PerpsMarketData[];
177
+ /**
178
+ * Generate the appropriate icon URL for an asset symbol
179
+ * Handles both regular assets and HIP-3 assets (dex:symbol format)
180
+ *
181
+ * @param symbol - Asset symbol (e.g., "BTC" or "xyz:TSLA")
182
+ * @param kPrefixAssets - Optional set of assets that have a 'k' prefix to remove
183
+ * @returns Icon URL for the asset
184
+ *
185
+ * @example Regular asset
186
+ * getAssetIconUrl('BTC') // → 'https://app.hyperliquid.xyz/coins/BTC.svg'
187
+ *
188
+ * @example HIP-3 asset
189
+ * getAssetIconUrl('xyz:TSLA') // → 'https://raw.githubusercontent.com/.../hip3%3Axyz_TSLA.svg'
190
+ *
191
+ * @example With k-prefix handling
192
+ * getAssetIconUrl('kBONK', new Set(['KBONK'])) // → 'https://app.hyperliquid.xyz/coins/BONK.svg'
193
+ */
194
+ export declare const getAssetIconUrl: (symbol: string, kPrefixAssets?: Set<string>) => string;
195
+ /**
196
+ * Icon URLs with primary (MetaMask-hosted) and fallback (HyperLiquid) sources
197
+ */
198
+ export type AssetIconUrls = {
199
+ /** MetaMask contract-metadata repo (preferred source) */
200
+ primary: string;
201
+ /** HyperLiquid CDN (fallback source) */
202
+ fallback: string;
203
+ };
204
+ /**
205
+ * Generate icon URLs for an asset symbol with fallback support
206
+ *
207
+ * Resolution order:
208
+ * 1. Primary: MetaMask contract-metadata repo (manually curated)
209
+ * 2. Fallback: HyperLiquid CDN (always available)
210
+ *
211
+ * @param symbol - Asset symbol (e.g., "BTC" or "xyz:TSLA")
212
+ * @param kPrefixAssets - Optional set of assets that have a 'k' prefix to remove
213
+ * @returns Object with primary and fallback URLs, or null if no symbol
214
+ *
215
+ * @example Regular asset
216
+ * getAssetIconUrls('BTC')
217
+ * // → { primary: 'https://raw.githubusercontent.com/.../BTC.svg',
218
+ * // fallback: 'https://app.hyperliquid.xyz/coins/BTC.svg' }
219
+ *
220
+ * @example HIP-3 asset
221
+ * getAssetIconUrls('xyz:TSLA')
222
+ * // → { primary: 'https://raw.githubusercontent.com/.../hip3:xyz_TSLA.svg',
223
+ * // fallback: 'https://app.hyperliquid.xyz/coins/xyz:TSLA.svg' }
224
+ */
225
+ export declare const getAssetIconUrls: (symbol: string, kPrefixAssets?: Set<string>) => AssetIconUrls | null;
226
+ export {};
227
+ //# sourceMappingURL=marketUtils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketUtils.d.cts","sourceRoot":"","sources":["../../src/utils/marketUtils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EAEV,eAAe,EAChB,2BAAiB;AAOlB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,MACG,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,YAAa,MAAM,KAAG,OAkCvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,oBAkBtD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,WACL,oBAAoB,KAC5B,OAQF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,mBAAmB,WACtB,MAAM,OACT,MAAM,GAAG,IAAI,eACL,OAAO,2BACK,qBAAqB,EAAE,2BACvB,qBAAqB,EAAE,KAC/C,OAgCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MActD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MAAM,GAAG,IAc/D,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,YAC3B,sBAAsB,KAC9B,MAuDF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,eAClB,UAAU,GAAG,IAAI,KAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CA6B7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,WACrB,KAAK,eAAe,EAAE,YAAY,GAAG,cAAc,CAAC,KAC3D,SAAS,GAAG,SAI0D,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,YACtB,eAAe,EAAE,eACb,MAAM,KAClB,eAAe,EAajB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,kBACE,IAAI,MAAM,CAAC,KAC1B,MAqBF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,kBACE,IAAI,MAAM,CAAC,KAC1B,aAAa,GAAG,IA8BlB,CAAC"}
@@ -0,0 +1,227 @@
1
+ import type { BadgeType, CandleData, PerpsMarketData } from "../types/index.mjs";
2
+ /**
3
+ * Pattern matcher type - either string (exact match) or RegExp (wildcard)
4
+ */
5
+ export type MarketPatternMatcher = RegExp | string;
6
+ /**
7
+ * Pre-compiled pattern with original pattern string and matcher
8
+ */
9
+ export type CompiledMarketPattern = {
10
+ pattern: string;
11
+ matcher: MarketPatternMatcher;
12
+ };
13
+ /**
14
+ * Escape special regex characters in a string
15
+ *
16
+ * @param str - String to escape
17
+ * @returns Escaped string safe for regex
18
+ */
19
+ export declare const escapeRegex: (str: string) => string;
20
+ /**
21
+ * Validate market filter pattern for safety
22
+ * Prevents regex DoS attacks from malicious patterns
23
+ *
24
+ * @param pattern - Pattern to validate
25
+ * @returns true if pattern is safe
26
+ * @throws Error if pattern is unsafe
27
+ *
28
+ * @example Valid patterns
29
+ * validateMarketPattern("BTC") // → true
30
+ * validateMarketPattern("xyz:TSLA") // → true
31
+ * validateMarketPattern("xyz:*") // → true
32
+ *
33
+ * @example Invalid patterns
34
+ * validateMarketPattern("") // → throws Error
35
+ * validateMarketPattern("xyz:.*") // → throws Error (regex chars)
36
+ * validateMarketPattern("BTC#SCAM") // → throws Error (invalid char)
37
+ */
38
+ export declare const validateMarketPattern: (pattern: string) => boolean;
39
+ /**
40
+ * Compile market filter pattern into optimized matcher
41
+ * Supports wildcards ("xyz:*"), DEX shorthand ("xyz"), and exact matches ("xyz:TSLA")
42
+ *
43
+ * Note: Main DEX markets (no prefix) don't need filtering - they're always included.
44
+ * Patterns without colons are treated as HIP-3 DEX shorthand.
45
+ *
46
+ * @param pattern - Pattern string (e.g., "xyz:*", "xyz:TSLA", "xyz")
47
+ * @returns Compiled matcher (RegExp for wildcards/shorthand, string for exact match)
48
+ *
49
+ * @example Wildcard - matches all markets from a DEX
50
+ * compileMarketPattern("xyz:*") // → /^xyz:/
51
+ *
52
+ * @example DEX shorthand - equivalent to wildcard
53
+ * compileMarketPattern("xyz") // → /^xyz:/ (matches all xyz markets)
54
+ *
55
+ * @example Exact match - matches specific market
56
+ * compileMarketPattern("xyz:TSLA") // → "xyz:TSLA"
57
+ */
58
+ export declare const compileMarketPattern: (pattern: string) => MarketPatternMatcher;
59
+ /**
60
+ * Check if a symbol matches a compiled pattern matcher
61
+ *
62
+ * @param symbol - Market symbol (e.g., "BTC", "xyz:TSLA")
63
+ * @param matcher - Compiled matcher (string or RegExp)
64
+ * @returns true if symbol matches the pattern
65
+ */
66
+ export declare const matchesMarketPattern: (symbol: string, matcher: MarketPatternMatcher) => boolean;
67
+ /**
68
+ * Check if a market should be included based on HIP-3 master switch and whitelist/blacklist patterns
69
+ * Main DEX markets (null dex) are ALWAYS included (no filtering)
70
+ *
71
+ * Logic: Check master switch → apply whitelist (if non-empty) → apply blacklist
72
+ *
73
+ * @param symbol - Market symbol (e.g., "BTC", "xyz:TSLA")
74
+ * @param dex - DEX identifier (null for main DEX, "xyz" for HIP-3 DEX)
75
+ * @param hip3Enabled - Master switch for HIP-3 markets (false = block all HIP-3)
76
+ * @param compiledEnabledPatterns - Pre-compiled whitelist patterns (empty = allow all)
77
+ * @param compiledBlockedPatterns - Pre-compiled blacklist patterns (empty = block none)
78
+ * @returns true if market should be shown to users
79
+ *
80
+ * @example Main DEX market (always included)
81
+ * shouldIncludeMarket("BTC", null, true, [...], [...]) // → true
82
+ *
83
+ * @example HIP-3 when master switch is OFF
84
+ * shouldIncludeMarket("xyz:TSLA", "xyz", false, [...], [...]) // → false (HIP-3 disabled)
85
+ *
86
+ * @example HIP-3 with empty whitelist (discovery mode)
87
+ * shouldIncludeMarket("xyz:TSLA", "xyz", true, [], []) // → true (allow all)
88
+ *
89
+ * @example HIP-3 with whitelist
90
+ * shouldIncludeMarket("xyz:TSLA", "xyz", true,
91
+ * [{pattern: "xyz:*", matcher: /^xyz:/}], []) // → true (matches whitelist)
92
+ *
93
+ * @example HIP-3 with blacklist
94
+ * shouldIncludeMarket("xyz:SCAM", "xyz", true, [],
95
+ * [{pattern: "xyz:SCAM", matcher: "xyz:SCAM"}]) // → false (blocked)
96
+ */
97
+ export declare const shouldIncludeMarket: (symbol: string, dex: string | null, hip3Enabled: boolean, compiledEnabledPatterns: CompiledMarketPattern[], compiledBlockedPatterns: CompiledMarketPattern[]) => boolean;
98
+ /**
99
+ * Extract the display symbol from a full symbol string
100
+ * Strips DEX prefix for HIP-3 markets (e.g., "xyz:XYZ100" -> "XYZ100")
101
+ * Returns the symbol unchanged if no DEX prefix is present
102
+ *
103
+ * @param symbol - Full symbol (e.g., "BTC" or "xyz:XYZ100")
104
+ * @returns Display symbol without DEX prefix (e.g., "BTC" or "XYZ100")
105
+ */
106
+ export declare const getPerpsDisplaySymbol: (symbol: string) => string;
107
+ /**
108
+ * Extract the DEX identifier from a full symbol string
109
+ * Returns the DEX prefix for HIP-3 markets (e.g., "xyz:XYZ100" -> "xyz")
110
+ * Returns null if no DEX prefix is present (main DEX market)
111
+ *
112
+ * @param symbol - Full symbol (e.g., "BTC" or "xyz:XYZ100")
113
+ * @returns DEX identifier or null if main DEX (e.g., "xyz" or null)
114
+ */
115
+ export declare const getPerpsDexFromSymbol: (symbol: string) => string | null;
116
+ type FundingCountdownParams = {
117
+ /**
118
+ * Next funding time in milliseconds since epoch (optional, market-specific)
119
+ */
120
+ nextFundingTime?: number;
121
+ /**
122
+ * Funding interval in hours (optional, market-specific)
123
+ * Default is 1 hour for HyperLiquid (funding is paid every hour)
124
+ */
125
+ fundingIntervalHours?: number;
126
+ };
127
+ /**
128
+ * Calculate the time until the next funding period.
129
+ * Supports market-specific funding times when provided.
130
+ * Falls back to default HyperLiquid 1-hour periods (funding paid every hour).
131
+ *
132
+ * @param params - Optional funding countdown parameters
133
+ * @returns Formatted countdown string in HH:MM:SS format
134
+ */
135
+ export declare const calculateFundingCountdown: (params?: FundingCountdownParams) => string;
136
+ /**
137
+ * Calculate 24h high and low from candlestick data.
138
+ *
139
+ * @param candleData - Candlestick data containing price candles
140
+ * @returns Object with high and low prices for the last 24 hours
141
+ */
142
+ export declare const calculate24hHighLow: (candleData: CandleData | null) => {
143
+ high: number;
144
+ low: number;
145
+ };
146
+ /**
147
+ * Determine badge type for a market based on its metadata
148
+ * Prioritizes explicit marketType over generic experimental badge
149
+ *
150
+ * @param market - Market data object (only needs marketType and marketSource fields)
151
+ * @returns Badge type to display, or undefined for no badge (main DEX)
152
+ *
153
+ * @example Main DEX
154
+ * getMarketBadgeType({ symbol: 'BTC', marketSource: null }) // → undefined
155
+ *
156
+ * @example Mapped HIP-3 DEX
157
+ * getMarketBadgeType({ symbol: 'xyz:XYZ100', marketSource: 'xyz', marketType: 'equity' }) // → 'equity'
158
+ *
159
+ * @example Unmapped HIP-3 DEX
160
+ * getMarketBadgeType({ symbol: 'abc:ABC100', marketSource: 'abc' }) // → 'experimental'
161
+ */
162
+ export declare const getMarketBadgeType: (market: Pick<PerpsMarketData, 'marketType' | 'marketSource'>) => BadgeType | undefined;
163
+ /**
164
+ * Filter markets by search query
165
+ * Searches through both symbol and name fields (case-insensitive)
166
+ *
167
+ * @param markets - Array of markets to filter
168
+ * @param searchQuery - Search query string
169
+ * @returns Filtered array of markets matching the query
170
+ *
171
+ * @example
172
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], 'btc') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
173
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], 'coin') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
174
+ * filterMarketsByQuery([{ symbol: 'BTC', name: 'Bitcoin' }], '') // → [{ symbol: 'BTC', name: 'Bitcoin' }]
175
+ */
176
+ export declare const filterMarketsByQuery: (markets: PerpsMarketData[], searchQuery: string) => PerpsMarketData[];
177
+ /**
178
+ * Generate the appropriate icon URL for an asset symbol
179
+ * Handles both regular assets and HIP-3 assets (dex:symbol format)
180
+ *
181
+ * @param symbol - Asset symbol (e.g., "BTC" or "xyz:TSLA")
182
+ * @param kPrefixAssets - Optional set of assets that have a 'k' prefix to remove
183
+ * @returns Icon URL for the asset
184
+ *
185
+ * @example Regular asset
186
+ * getAssetIconUrl('BTC') // → 'https://app.hyperliquid.xyz/coins/BTC.svg'
187
+ *
188
+ * @example HIP-3 asset
189
+ * getAssetIconUrl('xyz:TSLA') // → 'https://raw.githubusercontent.com/.../hip3%3Axyz_TSLA.svg'
190
+ *
191
+ * @example With k-prefix handling
192
+ * getAssetIconUrl('kBONK', new Set(['KBONK'])) // → 'https://app.hyperliquid.xyz/coins/BONK.svg'
193
+ */
194
+ export declare const getAssetIconUrl: (symbol: string, kPrefixAssets?: Set<string>) => string;
195
+ /**
196
+ * Icon URLs with primary (MetaMask-hosted) and fallback (HyperLiquid) sources
197
+ */
198
+ export type AssetIconUrls = {
199
+ /** MetaMask contract-metadata repo (preferred source) */
200
+ primary: string;
201
+ /** HyperLiquid CDN (fallback source) */
202
+ fallback: string;
203
+ };
204
+ /**
205
+ * Generate icon URLs for an asset symbol with fallback support
206
+ *
207
+ * Resolution order:
208
+ * 1. Primary: MetaMask contract-metadata repo (manually curated)
209
+ * 2. Fallback: HyperLiquid CDN (always available)
210
+ *
211
+ * @param symbol - Asset symbol (e.g., "BTC" or "xyz:TSLA")
212
+ * @param kPrefixAssets - Optional set of assets that have a 'k' prefix to remove
213
+ * @returns Object with primary and fallback URLs, or null if no symbol
214
+ *
215
+ * @example Regular asset
216
+ * getAssetIconUrls('BTC')
217
+ * // → { primary: 'https://raw.githubusercontent.com/.../BTC.svg',
218
+ * // fallback: 'https://app.hyperliquid.xyz/coins/BTC.svg' }
219
+ *
220
+ * @example HIP-3 asset
221
+ * getAssetIconUrls('xyz:TSLA')
222
+ * // → { primary: 'https://raw.githubusercontent.com/.../hip3:xyz_TSLA.svg',
223
+ * // fallback: 'https://app.hyperliquid.xyz/coins/xyz:TSLA.svg' }
224
+ */
225
+ export declare const getAssetIconUrls: (symbol: string, kPrefixAssets?: Set<string>) => AssetIconUrls | null;
226
+ export {};
227
+ //# sourceMappingURL=marketUtils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketUtils.d.mts","sourceRoot":"","sources":["../../src/utils/marketUtils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EAEV,eAAe,EAChB,2BAAiB;AAOlB;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,MACG,CAAC;AAE9C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,YAAa,MAAM,KAAG,OAkCvD,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,oBAAoB,YAAa,MAAM,KAAG,oBAkBtD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,WACvB,MAAM,WACL,oBAAoB,KAC5B,OAQF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,mBAAmB,WACtB,MAAM,OACT,MAAM,GAAG,IAAI,eACL,OAAO,2BACK,qBAAqB,EAAE,2BACvB,qBAAqB,EAAE,KAC/C,OAgCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MActD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,KAAG,MAAM,GAAG,IAc/D,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,YAC3B,sBAAsB,KAC9B,MAuDF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,eAClB,UAAU,GAAG,IAAI,KAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CA6B7B,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,WACrB,KAAK,eAAe,EAAE,YAAY,GAAG,cAAc,CAAC,KAC3D,SAAS,GAAG,SAI0D,CAAC;AAE1E;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,YACtB,eAAe,EAAE,eACb,MAAM,KAClB,eAAe,EAajB,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,kBACE,IAAI,MAAM,CAAC,KAC1B,MAqBF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,kBACE,IAAI,MAAM,CAAC,KAC1B,aAAa,GAAG,IA8BlB,CAAC"}