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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/CHANGELOG.md +30 -2
  2. package/dist/PerpsController.cjs +3077 -65
  3. package/dist/PerpsController.cjs.map +1 -1
  4. package/dist/PerpsController.d.cts +969 -82
  5. package/dist/PerpsController.d.cts.map +1 -1
  6. package/dist/PerpsController.d.mts +969 -82
  7. package/dist/PerpsController.d.mts.map +1 -1
  8. package/dist/PerpsController.mjs +3073 -62
  9. package/dist/PerpsController.mjs.map +1 -1
  10. package/dist/aggregation/SubscriptionMultiplexer.cjs +441 -0
  11. package/dist/aggregation/SubscriptionMultiplexer.cjs.map +1 -0
  12. package/dist/aggregation/SubscriptionMultiplexer.d.cts +171 -0
  13. package/dist/aggregation/SubscriptionMultiplexer.d.cts.map +1 -0
  14. package/dist/aggregation/SubscriptionMultiplexer.d.mts +171 -0
  15. package/dist/aggregation/SubscriptionMultiplexer.d.mts.map +1 -0
  16. package/dist/aggregation/SubscriptionMultiplexer.mjs +437 -0
  17. package/dist/aggregation/SubscriptionMultiplexer.mjs.map +1 -0
  18. package/dist/aggregation/index.cjs +9 -0
  19. package/dist/aggregation/index.cjs.map +1 -0
  20. package/dist/aggregation/index.d.cts +6 -0
  21. package/dist/aggregation/index.d.cts.map +1 -0
  22. package/dist/aggregation/index.d.mts +6 -0
  23. package/dist/aggregation/index.d.mts.map +1 -0
  24. package/dist/aggregation/index.mjs +5 -0
  25. package/dist/aggregation/index.mjs.map +1 -0
  26. package/dist/constants/chartConfig.cjs +227 -0
  27. package/dist/constants/chartConfig.cjs.map +1 -0
  28. package/dist/constants/chartConfig.d.cts +216 -0
  29. package/dist/constants/chartConfig.d.cts.map +1 -0
  30. package/dist/constants/chartConfig.d.mts +216 -0
  31. package/dist/constants/chartConfig.d.mts.map +1 -0
  32. package/dist/constants/chartConfig.mjs +221 -0
  33. package/dist/constants/chartConfig.mjs.map +1 -0
  34. package/dist/constants/eventNames.cjs +436 -0
  35. package/dist/constants/eventNames.cjs.map +1 -0
  36. package/dist/constants/eventNames.d.cts +387 -0
  37. package/dist/constants/eventNames.d.cts.map +1 -0
  38. package/dist/constants/eventNames.d.mts +387 -0
  39. package/dist/constants/eventNames.d.mts.map +1 -0
  40. package/dist/constants/eventNames.mjs +433 -0
  41. package/dist/constants/eventNames.mjs.map +1 -0
  42. package/dist/constants/hyperLiquidConfig.cjs +380 -0
  43. package/dist/constants/hyperLiquidConfig.cjs.map +1 -0
  44. package/dist/constants/hyperLiquidConfig.d.cts +236 -0
  45. package/dist/constants/hyperLiquidConfig.d.cts.map +1 -0
  46. package/dist/constants/hyperLiquidConfig.d.mts +236 -0
  47. package/dist/constants/hyperLiquidConfig.d.mts.map +1 -0
  48. package/dist/constants/hyperLiquidConfig.mjs +371 -0
  49. package/dist/constants/hyperLiquidConfig.mjs.map +1 -0
  50. package/dist/constants/index.cjs +28 -0
  51. package/dist/constants/index.cjs.map +1 -0
  52. package/dist/constants/index.d.cts +12 -0
  53. package/dist/constants/index.d.cts.map +1 -0
  54. package/dist/constants/index.d.mts +12 -0
  55. package/dist/constants/index.d.mts.map +1 -0
  56. package/dist/constants/index.mjs +12 -0
  57. package/dist/constants/index.mjs.map +1 -0
  58. package/dist/constants/myxConfig.cjs +229 -0
  59. package/dist/constants/myxConfig.cjs.map +1 -0
  60. package/dist/constants/myxConfig.d.cts +106 -0
  61. package/dist/constants/myxConfig.d.cts.map +1 -0
  62. package/dist/constants/myxConfig.d.mts +106 -0
  63. package/dist/constants/myxConfig.d.mts.map +1 -0
  64. package/dist/constants/myxConfig.mjs +219 -0
  65. package/dist/constants/myxConfig.mjs.map +1 -0
  66. package/dist/constants/orderTypes.cjs +31 -0
  67. package/dist/constants/orderTypes.cjs.map +1 -0
  68. package/dist/constants/orderTypes.d.cts +19 -0
  69. package/dist/constants/orderTypes.d.cts.map +1 -0
  70. package/dist/constants/orderTypes.d.mts +19 -0
  71. package/dist/constants/orderTypes.d.mts.map +1 -0
  72. package/dist/constants/orderTypes.mjs +27 -0
  73. package/dist/constants/orderTypes.mjs.map +1 -0
  74. package/dist/constants/performanceMetrics.cjs +63 -0
  75. package/dist/constants/performanceMetrics.cjs.map +1 -0
  76. package/dist/constants/performanceMetrics.d.cts +46 -0
  77. package/dist/constants/performanceMetrics.d.cts.map +1 -0
  78. package/dist/constants/performanceMetrics.d.mts +46 -0
  79. package/dist/constants/performanceMetrics.d.mts.map +1 -0
  80. package/dist/constants/performanceMetrics.mjs +60 -0
  81. package/dist/constants/performanceMetrics.mjs.map +1 -0
  82. package/dist/constants/perpsConfig.cjs +295 -0
  83. package/dist/constants/perpsConfig.cjs.map +1 -0
  84. package/dist/constants/perpsConfig.d.cts +221 -0
  85. package/dist/constants/perpsConfig.d.cts.map +1 -0
  86. package/dist/constants/perpsConfig.d.mts +221 -0
  87. package/dist/constants/perpsConfig.d.mts.map +1 -0
  88. package/dist/constants/perpsConfig.mjs +292 -0
  89. package/dist/constants/perpsConfig.mjs.map +1 -0
  90. package/dist/constants/transactionsHistoryConfig.cjs +19 -0
  91. package/dist/constants/transactionsHistoryConfig.cjs.map +1 -0
  92. package/dist/constants/transactionsHistoryConfig.d.cts +16 -0
  93. package/dist/constants/transactionsHistoryConfig.d.cts.map +1 -0
  94. package/dist/constants/transactionsHistoryConfig.d.mts +16 -0
  95. package/dist/constants/transactionsHistoryConfig.d.mts.map +1 -0
  96. package/dist/constants/transactionsHistoryConfig.mjs +16 -0
  97. package/dist/constants/transactionsHistoryConfig.mjs.map +1 -0
  98. package/dist/index.cjs +63 -1
  99. package/dist/index.cjs.map +1 -1
  100. package/dist/index.d.cts +38 -2
  101. package/dist/index.d.cts.map +1 -1
  102. package/dist/index.d.mts +38 -2
  103. package/dist/index.d.mts.map +1 -1
  104. package/dist/index.mjs +46 -1
  105. package/dist/index.mjs.map +1 -1
  106. package/dist/perpsErrorCodes.cjs +80 -0
  107. package/dist/perpsErrorCodes.cjs.map +1 -0
  108. package/dist/perpsErrorCodes.d.cts +65 -0
  109. package/dist/perpsErrorCodes.d.cts.map +1 -0
  110. package/dist/perpsErrorCodes.d.mts +65 -0
  111. package/dist/perpsErrorCodes.d.mts.map +1 -0
  112. package/dist/perpsErrorCodes.mjs +77 -0
  113. package/dist/perpsErrorCodes.mjs.map +1 -0
  114. package/dist/providers/AggregatedPerpsProvider.cjs +508 -0
  115. package/dist/providers/AggregatedPerpsProvider.cjs.map +1 -0
  116. package/dist/providers/AggregatedPerpsProvider.d.cts +171 -0
  117. package/dist/providers/AggregatedPerpsProvider.d.cts.map +1 -0
  118. package/dist/providers/AggregatedPerpsProvider.d.mts +171 -0
  119. package/dist/providers/AggregatedPerpsProvider.d.mts.map +1 -0
  120. package/dist/providers/AggregatedPerpsProvider.mjs +504 -0
  121. package/dist/providers/AggregatedPerpsProvider.mjs.map +1 -0
  122. package/dist/providers/HyperLiquidProvider.cjs +5679 -0
  123. package/dist/providers/HyperLiquidProvider.cjs.map +1 -0
  124. package/dist/providers/HyperLiquidProvider.d.cts +516 -0
  125. package/dist/providers/HyperLiquidProvider.d.cts.map +1 -0
  126. package/dist/providers/HyperLiquidProvider.d.mts +516 -0
  127. package/dist/providers/HyperLiquidProvider.d.mts.map +1 -0
  128. package/dist/providers/HyperLiquidProvider.mjs +5675 -0
  129. package/dist/providers/HyperLiquidProvider.mjs.map +1 -0
  130. package/dist/providers/MYXProvider.cjs +514 -0
  131. package/dist/providers/MYXProvider.cjs.map +1 -0
  132. package/dist/providers/MYXProvider.d.cts +105 -0
  133. package/dist/providers/MYXProvider.d.cts.map +1 -0
  134. package/dist/providers/MYXProvider.d.mts +105 -0
  135. package/dist/providers/MYXProvider.d.mts.map +1 -0
  136. package/dist/providers/MYXProvider.mjs +510 -0
  137. package/dist/providers/MYXProvider.mjs.map +1 -0
  138. package/dist/routing/ProviderRouter.cjs +154 -0
  139. package/dist/routing/ProviderRouter.cjs.map +1 -0
  140. package/dist/routing/ProviderRouter.d.cts +112 -0
  141. package/dist/routing/ProviderRouter.d.cts.map +1 -0
  142. package/dist/routing/ProviderRouter.d.mts +112 -0
  143. package/dist/routing/ProviderRouter.d.mts.map +1 -0
  144. package/dist/routing/ProviderRouter.mjs +150 -0
  145. package/dist/routing/ProviderRouter.mjs.map +1 -0
  146. package/dist/routing/index.cjs +9 -0
  147. package/dist/routing/index.cjs.map +1 -0
  148. package/dist/routing/index.d.cts +6 -0
  149. package/dist/routing/index.d.cts.map +1 -0
  150. package/dist/routing/index.d.mts +6 -0
  151. package/dist/routing/index.d.mts.map +1 -0
  152. package/dist/routing/index.mjs +5 -0
  153. package/dist/routing/index.mjs.map +1 -0
  154. package/dist/selectors.cjs +166 -0
  155. package/dist/selectors.cjs.map +1 -0
  156. package/dist/selectors.d.cts +362 -0
  157. package/dist/selectors.d.cts.map +1 -0
  158. package/dist/selectors.d.mts +362 -0
  159. package/dist/selectors.d.mts.map +1 -0
  160. package/dist/selectors.mjs +158 -0
  161. package/dist/selectors.mjs.map +1 -0
  162. package/dist/services/AccountService.cjs +324 -0
  163. package/dist/services/AccountService.cjs.map +1 -0
  164. package/dist/services/AccountService.d.cts +56 -0
  165. package/dist/services/AccountService.d.cts.map +1 -0
  166. package/dist/services/AccountService.d.mts +56 -0
  167. package/dist/services/AccountService.d.mts.map +1 -0
  168. package/dist/services/AccountService.mjs +320 -0
  169. package/dist/services/AccountService.mjs.map +1 -0
  170. package/dist/services/DataLakeService.cjs +233 -0
  171. package/dist/services/DataLakeService.cjs.map +1 -0
  172. package/dist/services/DataLakeService.d.cts +51 -0
  173. package/dist/services/DataLakeService.d.cts.map +1 -0
  174. package/dist/services/DataLakeService.d.mts +51 -0
  175. package/dist/services/DataLakeService.d.mts.map +1 -0
  176. package/dist/services/DataLakeService.mjs +229 -0
  177. package/dist/services/DataLakeService.mjs.map +1 -0
  178. package/dist/services/DepositService.cjs +98 -0
  179. package/dist/services/DepositService.cjs.map +1 -0
  180. package/dist/services/DepositService.d.cts +39 -0
  181. package/dist/services/DepositService.d.cts.map +1 -0
  182. package/dist/services/DepositService.d.mts +39 -0
  183. package/dist/services/DepositService.d.mts.map +1 -0
  184. package/dist/services/DepositService.mjs +94 -0
  185. package/dist/services/DepositService.mjs.map +1 -0
  186. package/dist/services/EligibilityService.cjs +173 -0
  187. package/dist/services/EligibilityService.cjs.map +1 -0
  188. package/dist/services/EligibilityService.d.cts +39 -0
  189. package/dist/services/EligibilityService.d.cts.map +1 -0
  190. package/dist/services/EligibilityService.d.mts +39 -0
  191. package/dist/services/EligibilityService.d.mts.map +1 -0
  192. package/dist/services/EligibilityService.mjs +169 -0
  193. package/dist/services/EligibilityService.mjs.map +1 -0
  194. package/dist/services/FeatureFlagConfigurationService.cjs +257 -0
  195. package/dist/services/FeatureFlagConfigurationService.cjs.map +1 -0
  196. package/dist/services/FeatureFlagConfigurationService.d.cts +73 -0
  197. package/dist/services/FeatureFlagConfigurationService.d.cts.map +1 -0
  198. package/dist/services/FeatureFlagConfigurationService.d.mts +73 -0
  199. package/dist/services/FeatureFlagConfigurationService.d.mts.map +1 -0
  200. package/dist/services/FeatureFlagConfigurationService.mjs +253 -0
  201. package/dist/services/FeatureFlagConfigurationService.mjs.map +1 -0
  202. package/dist/services/HyperLiquidClientService.cjs +867 -0
  203. package/dist/services/HyperLiquidClientService.cjs.map +1 -0
  204. package/dist/services/HyperLiquidClientService.d.cts +214 -0
  205. package/dist/services/HyperLiquidClientService.d.cts.map +1 -0
  206. package/dist/services/HyperLiquidClientService.d.mts +214 -0
  207. package/dist/services/HyperLiquidClientService.d.mts.map +1 -0
  208. package/dist/services/HyperLiquidClientService.mjs +862 -0
  209. package/dist/services/HyperLiquidClientService.mjs.map +1 -0
  210. package/dist/services/HyperLiquidSubscriptionService.cjs +2199 -0
  211. package/dist/services/HyperLiquidSubscriptionService.cjs.map +1 -0
  212. package/dist/services/HyperLiquidSubscriptionService.d.cts +187 -0
  213. package/dist/services/HyperLiquidSubscriptionService.d.cts.map +1 -0
  214. package/dist/services/HyperLiquidSubscriptionService.d.mts +187 -0
  215. package/dist/services/HyperLiquidSubscriptionService.d.mts.map +1 -0
  216. package/dist/services/HyperLiquidSubscriptionService.mjs +2195 -0
  217. package/dist/services/HyperLiquidSubscriptionService.mjs.map +1 -0
  218. package/dist/services/HyperLiquidWalletService.cjs +163 -0
  219. package/dist/services/HyperLiquidWalletService.cjs.map +1 -0
  220. package/dist/services/HyperLiquidWalletService.d.cts +78 -0
  221. package/dist/services/HyperLiquidWalletService.d.cts.map +1 -0
  222. package/dist/services/HyperLiquidWalletService.d.mts +78 -0
  223. package/dist/services/HyperLiquidWalletService.d.mts.map +1 -0
  224. package/dist/services/HyperLiquidWalletService.mjs +159 -0
  225. package/dist/services/HyperLiquidWalletService.mjs.map +1 -0
  226. package/dist/services/MYXClientService.cjs +304 -0
  227. package/dist/services/MYXClientService.cjs.map +1 -0
  228. package/dist/services/MYXClientService.d.cts +81 -0
  229. package/dist/services/MYXClientService.d.cts.map +1 -0
  230. package/dist/services/MYXClientService.d.mts +81 -0
  231. package/dist/services/MYXClientService.d.mts.map +1 -0
  232. package/dist/services/MYXClientService.mjs +300 -0
  233. package/dist/services/MYXClientService.mjs.map +1 -0
  234. package/dist/services/MarketDataService.cjs +848 -0
  235. package/dist/services/MarketDataService.cjs.map +1 -0
  236. package/dist/services/MarketDataService.d.cts +291 -0
  237. package/dist/services/MarketDataService.d.cts.map +1 -0
  238. package/dist/services/MarketDataService.d.mts +291 -0
  239. package/dist/services/MarketDataService.d.mts.map +1 -0
  240. package/dist/services/MarketDataService.mjs +844 -0
  241. package/dist/services/MarketDataService.mjs.map +1 -0
  242. package/dist/services/RewardsIntegrationService.cjs +120 -0
  243. package/dist/services/RewardsIntegrationService.cjs.map +1 -0
  244. package/dist/services/RewardsIntegrationService.d.cts +28 -0
  245. package/dist/services/RewardsIntegrationService.d.cts.map +1 -0
  246. package/dist/services/RewardsIntegrationService.d.mts +28 -0
  247. package/dist/services/RewardsIntegrationService.d.mts.map +1 -0
  248. package/dist/services/RewardsIntegrationService.mjs +116 -0
  249. package/dist/services/RewardsIntegrationService.mjs.map +1 -0
  250. package/dist/services/ServiceContext.cjs +3 -0
  251. package/dist/services/ServiceContext.cjs.map +1 -0
  252. package/dist/services/ServiceContext.d.cts +86 -0
  253. package/dist/services/ServiceContext.d.cts.map +1 -0
  254. package/dist/services/ServiceContext.d.mts +86 -0
  255. package/dist/services/ServiceContext.d.mts.map +1 -0
  256. package/dist/services/ServiceContext.mjs +2 -0
  257. package/dist/services/ServiceContext.mjs.map +1 -0
  258. package/dist/services/TradingReadinessCache.cjs +288 -0
  259. package/dist/services/TradingReadinessCache.cjs.map +1 -0
  260. package/dist/services/TradingReadinessCache.d.cts +174 -0
  261. package/dist/services/TradingReadinessCache.d.cts.map +1 -0
  262. package/dist/services/TradingReadinessCache.d.mts +174 -0
  263. package/dist/services/TradingReadinessCache.d.mts.map +1 -0
  264. package/dist/services/TradingReadinessCache.mjs +285 -0
  265. package/dist/services/TradingReadinessCache.mjs.map +1 -0
  266. package/dist/services/TradingService.cjs +1457 -0
  267. package/dist/services/TradingService.cjs.map +1 -0
  268. package/dist/services/TradingService.d.cts +195 -0
  269. package/dist/services/TradingService.d.cts.map +1 -0
  270. package/dist/services/TradingService.d.mts +195 -0
  271. package/dist/services/TradingService.d.mts.map +1 -0
  272. package/dist/services/TradingService.mjs +1453 -0
  273. package/dist/services/TradingService.mjs.map +1 -0
  274. package/dist/types/config.cjs +3 -0
  275. package/dist/types/config.cjs.map +1 -0
  276. package/dist/types/config.d.cts +49 -0
  277. package/dist/types/config.d.cts.map +1 -0
  278. package/dist/types/config.d.mts +49 -0
  279. package/dist/types/config.d.mts.map +1 -0
  280. package/dist/types/config.mjs +2 -0
  281. package/dist/types/config.mjs.map +1 -0
  282. package/dist/types/hyperliquid-types.cjs +3 -0
  283. package/dist/types/hyperliquid-types.cjs.map +1 -0
  284. package/dist/types/hyperliquid-types.d.cts +20 -0
  285. package/dist/types/hyperliquid-types.d.cts.map +1 -0
  286. package/dist/types/hyperliquid-types.d.mts +20 -0
  287. package/dist/types/hyperliquid-types.d.mts.map +1 -0
  288. package/dist/types/hyperliquid-types.mjs +2 -0
  289. package/dist/types/hyperliquid-types.mjs.map +1 -0
  290. package/dist/types/index.cjs +115 -0
  291. package/dist/types/index.cjs.map +1 -0
  292. package/dist/types/index.d.cts +1262 -0
  293. package/dist/types/index.d.cts.map +1 -0
  294. package/dist/types/index.d.mts +1262 -0
  295. package/dist/types/index.d.mts.map +1 -0
  296. package/dist/types/index.mjs +97 -0
  297. package/dist/types/index.mjs.map +1 -0
  298. package/dist/types/messenger.cjs +3 -0
  299. package/dist/types/messenger.cjs.map +1 -0
  300. package/dist/types/messenger.d.cts +27 -0
  301. package/dist/types/messenger.d.cts.map +1 -0
  302. package/dist/types/messenger.d.mts +27 -0
  303. package/dist/types/messenger.d.mts.map +1 -0
  304. package/dist/types/messenger.mjs +2 -0
  305. package/dist/types/messenger.mjs.map +1 -0
  306. package/dist/types/myx-types.cjs +25 -0
  307. package/dist/types/myx-types.cjs.map +1 -0
  308. package/dist/types/myx-types.d.cts +63 -0
  309. package/dist/types/myx-types.d.cts.map +1 -0
  310. package/dist/types/myx-types.d.mts +63 -0
  311. package/dist/types/myx-types.d.mts.map +1 -0
  312. package/dist/types/myx-types.mjs +22 -0
  313. package/dist/types/myx-types.mjs.map +1 -0
  314. package/dist/types/perps-types.cjs +4 -0
  315. package/dist/types/perps-types.cjs.map +1 -0
  316. package/dist/types/perps-types.d.cts +105 -0
  317. package/dist/types/perps-types.d.cts.map +1 -0
  318. package/dist/types/perps-types.d.mts +105 -0
  319. package/dist/types/perps-types.d.mts.map +1 -0
  320. package/dist/types/perps-types.mjs +2 -0
  321. package/dist/types/perps-types.mjs.map +1 -0
  322. package/dist/types/token.cjs +3 -0
  323. package/dist/types/token.cjs.map +1 -0
  324. package/dist/types/token.d.cts +25 -0
  325. package/dist/types/token.d.cts.map +1 -0
  326. package/dist/types/token.d.mts +25 -0
  327. package/dist/types/token.d.mts.map +1 -0
  328. package/dist/types/token.mjs +2 -0
  329. package/dist/types/token.mjs.map +1 -0
  330. package/dist/types/transactionTypes.cjs +28 -0
  331. package/dist/types/transactionTypes.cjs.map +1 -0
  332. package/dist/types/transactionTypes.d.cts +64 -0
  333. package/dist/types/transactionTypes.d.cts.map +1 -0
  334. package/dist/types/transactionTypes.d.mts +64 -0
  335. package/dist/types/transactionTypes.d.mts.map +1 -0
  336. package/dist/types/transactionTypes.mjs +23 -0
  337. package/dist/types/transactionTypes.mjs.map +1 -0
  338. package/dist/utils/accountUtils.cjs +100 -0
  339. package/dist/utils/accountUtils.cjs.map +1 -0
  340. package/dist/utils/accountUtils.d.cts +30 -0
  341. package/dist/utils/accountUtils.d.cts.map +1 -0
  342. package/dist/utils/accountUtils.d.mts +30 -0
  343. package/dist/utils/accountUtils.d.mts.map +1 -0
  344. package/dist/utils/accountUtils.mjs +92 -0
  345. package/dist/utils/accountUtils.mjs.map +1 -0
  346. package/dist/utils/errorUtils.cjs +35 -0
  347. package/dist/utils/errorUtils.cjs.map +1 -0
  348. package/dist/utils/errorUtils.d.cts +15 -0
  349. package/dist/utils/errorUtils.d.cts.map +1 -0
  350. package/dist/utils/errorUtils.d.mts +15 -0
  351. package/dist/utils/errorUtils.d.mts.map +1 -0
  352. package/dist/utils/errorUtils.mjs +31 -0
  353. package/dist/utils/errorUtils.mjs.map +1 -0
  354. package/dist/utils/hyperLiquidAdapter.cjs +331 -0
  355. package/dist/utils/hyperLiquidAdapter.cjs.map +1 -0
  356. package/dist/utils/hyperLiquidAdapter.d.cts +42 -0
  357. package/dist/utils/hyperLiquidAdapter.d.cts.map +1 -0
  358. package/dist/utils/hyperLiquidAdapter.d.mts +42 -0
  359. package/dist/utils/hyperLiquidAdapter.d.mts.map +1 -0
  360. package/dist/utils/hyperLiquidAdapter.mjs +316 -0
  361. package/dist/utils/hyperLiquidAdapter.mjs.map +1 -0
  362. package/dist/utils/hyperLiquidOrderBookProcessor.cjs +83 -0
  363. package/dist/utils/hyperLiquidOrderBookProcessor.cjs.map +1 -0
  364. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts +55 -0
  365. package/dist/utils/hyperLiquidOrderBookProcessor.d.cts.map +1 -0
  366. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts +55 -0
  367. package/dist/utils/hyperLiquidOrderBookProcessor.d.mts.map +1 -0
  368. package/dist/utils/hyperLiquidOrderBookProcessor.mjs +78 -0
  369. package/dist/utils/hyperLiquidOrderBookProcessor.mjs.map +1 -0
  370. package/dist/utils/hyperLiquidValidation.cjs +426 -0
  371. package/dist/utils/hyperLiquidValidation.cjs.map +1 -0
  372. package/dist/utils/hyperLiquidValidation.d.cts +143 -0
  373. package/dist/utils/hyperLiquidValidation.d.cts.map +1 -0
  374. package/dist/utils/hyperLiquidValidation.d.mts +143 -0
  375. package/dist/utils/hyperLiquidValidation.d.mts.map +1 -0
  376. package/dist/utils/hyperLiquidValidation.mjs +413 -0
  377. package/dist/utils/hyperLiquidValidation.mjs.map +1 -0
  378. package/dist/utils/idUtils.cjs +18 -0
  379. package/dist/utils/idUtils.cjs.map +1 -0
  380. package/dist/utils/idUtils.d.cts +6 -0
  381. package/dist/utils/idUtils.d.cts.map +1 -0
  382. package/dist/utils/idUtils.d.mts +6 -0
  383. package/dist/utils/idUtils.d.mts.map +1 -0
  384. package/dist/utils/idUtils.mjs +10 -0
  385. package/dist/utils/idUtils.mjs.map +1 -0
  386. package/dist/utils/index.cjs +59 -0
  387. package/dist/utils/index.cjs.map +1 -0
  388. package/dist/utils/index.d.cts +25 -0
  389. package/dist/utils/index.d.cts.map +1 -0
  390. package/dist/utils/index.d.mts +25 -0
  391. package/dist/utils/index.d.mts.map +1 -0
  392. package/dist/utils/index.mjs +30 -0
  393. package/dist/utils/index.mjs.map +1 -0
  394. package/dist/utils/marketDataTransform.cjs +211 -0
  395. package/dist/utils/marketDataTransform.cjs.map +1 -0
  396. package/dist/utils/marketDataTransform.d.cts +40 -0
  397. package/dist/utils/marketDataTransform.d.cts.map +1 -0
  398. package/dist/utils/marketDataTransform.d.mts +40 -0
  399. package/dist/utils/marketDataTransform.d.mts.map +1 -0
  400. package/dist/utils/marketDataTransform.mjs +205 -0
  401. package/dist/utils/marketDataTransform.mjs.map +1 -0
  402. package/dist/utils/marketUtils.cjs +151 -0
  403. package/dist/utils/marketUtils.cjs.map +1 -0
  404. package/dist/utils/marketUtils.d.cts +30 -0
  405. package/dist/utils/marketUtils.d.cts.map +1 -0
  406. package/dist/utils/marketUtils.d.mts +30 -0
  407. package/dist/utils/marketUtils.d.mts.map +1 -0
  408. package/dist/utils/marketUtils.mjs +138 -0
  409. package/dist/utils/marketUtils.mjs.map +1 -0
  410. package/dist/utils/myxAdapter.cjs +224 -0
  411. package/dist/utils/myxAdapter.cjs.map +1 -0
  412. package/dist/utils/myxAdapter.d.cts +81 -0
  413. package/dist/utils/myxAdapter.d.cts.map +1 -0
  414. package/dist/utils/myxAdapter.d.mts +81 -0
  415. package/dist/utils/myxAdapter.d.mts.map +1 -0
  416. package/dist/utils/myxAdapter.mjs +213 -0
  417. package/dist/utils/myxAdapter.mjs.map +1 -0
  418. package/dist/utils/orderCalculations.cjs +283 -0
  419. package/dist/utils/orderCalculations.cjs.map +1 -0
  420. package/dist/utils/orderCalculations.d.cts +107 -0
  421. package/dist/utils/orderCalculations.d.cts.map +1 -0
  422. package/dist/utils/orderCalculations.d.mts +107 -0
  423. package/dist/utils/orderCalculations.d.mts.map +1 -0
  424. package/dist/utils/orderCalculations.mjs +274 -0
  425. package/dist/utils/orderCalculations.mjs.map +1 -0
  426. package/dist/utils/rewardsUtils.cjs +98 -0
  427. package/dist/utils/rewardsUtils.cjs.map +1 -0
  428. package/dist/utils/rewardsUtils.d.cts +33 -0
  429. package/dist/utils/rewardsUtils.d.cts.map +1 -0
  430. package/dist/utils/rewardsUtils.d.mts +33 -0
  431. package/dist/utils/rewardsUtils.d.mts.map +1 -0
  432. package/dist/utils/rewardsUtils.mjs +92 -0
  433. package/dist/utils/rewardsUtils.mjs.map +1 -0
  434. package/dist/utils/significantFigures.cjs +88 -0
  435. package/dist/utils/significantFigures.cjs.map +1 -0
  436. package/dist/utils/significantFigures.d.cts +25 -0
  437. package/dist/utils/significantFigures.d.cts.map +1 -0
  438. package/dist/utils/significantFigures.d.mts +25 -0
  439. package/dist/utils/significantFigures.d.mts.map +1 -0
  440. package/dist/utils/significantFigures.mjs +82 -0
  441. package/dist/utils/significantFigures.mjs.map +1 -0
  442. package/dist/utils/sortMarkets.cjs +93 -0
  443. package/dist/utils/sortMarkets.cjs.map +1 -0
  444. package/dist/utils/sortMarkets.d.cts +27 -0
  445. package/dist/utils/sortMarkets.d.cts.map +1 -0
  446. package/dist/utils/sortMarkets.d.mts +27 -0
  447. package/dist/utils/sortMarkets.d.mts.map +1 -0
  448. package/dist/utils/sortMarkets.mjs +88 -0
  449. package/dist/utils/sortMarkets.mjs.map +1 -0
  450. package/dist/utils/standaloneInfoClient.cjs +70 -0
  451. package/dist/utils/standaloneInfoClient.cjs.map +1 -0
  452. package/dist/utils/standaloneInfoClient.d.cts +37 -0
  453. package/dist/utils/standaloneInfoClient.d.cts.map +1 -0
  454. package/dist/utils/standaloneInfoClient.d.mts +37 -0
  455. package/dist/utils/standaloneInfoClient.d.mts.map +1 -0
  456. package/dist/utils/standaloneInfoClient.mjs +64 -0
  457. package/dist/utils/standaloneInfoClient.mjs.map +1 -0
  458. package/dist/utils/stringParseUtils.cjs +18 -0
  459. package/dist/utils/stringParseUtils.cjs.map +1 -0
  460. package/dist/utils/stringParseUtils.d.cts +3 -0
  461. package/dist/utils/stringParseUtils.d.cts.map +1 -0
  462. package/dist/utils/stringParseUtils.d.mts +3 -0
  463. package/dist/utils/stringParseUtils.d.mts.map +1 -0
  464. package/dist/utils/stringParseUtils.mjs +13 -0
  465. package/dist/utils/stringParseUtils.mjs.map +1 -0
  466. package/dist/utils/transferData.cjs +33 -0
  467. package/dist/utils/transferData.cjs.map +1 -0
  468. package/dist/utils/transferData.d.cts +9 -0
  469. package/dist/utils/transferData.d.cts.map +1 -0
  470. package/dist/utils/transferData.d.mts +9 -0
  471. package/dist/utils/transferData.d.mts.map +1 -0
  472. package/dist/utils/transferData.mjs +29 -0
  473. package/dist/utils/transferData.mjs.map +1 -0
  474. package/dist/utils/wait.cjs +6 -0
  475. package/dist/utils/wait.cjs.map +1 -0
  476. package/dist/utils/wait.d.cts +2 -0
  477. package/dist/utils/wait.d.cts.map +1 -0
  478. package/dist/utils/wait.d.mts +2 -0
  479. package/dist/utils/wait.d.mts.map +1 -0
  480. package/dist/utils/wait.mjs +2 -0
  481. package/dist/utils/wait.mjs.map +1 -0
  482. package/package.json +16 -2
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ /**
3
+ * ProviderRouter - Simple routing logic for multi-provider order routing
4
+ *
5
+ * Phase 1 implementation: Uses simple routing strategy where:
6
+ * - Explicit providerId always wins
7
+ * - Falls back to default provider otherwise
8
+ *
9
+ * Advanced routing strategies (best_price, user_preference per market, lowest_fee)
10
+ * are deferred to Phase 3.
11
+ */
12
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
13
+ if (kind === "m") throw new TypeError("Private method is not writable");
14
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
15
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
+ };
18
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
19
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
20
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
21
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
22
+ };
23
+ var _ProviderRouter_defaultProvider, _ProviderRouter_strategy, _ProviderRouter_providerMarkets;
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ProviderRouter = void 0;
26
+ /**
27
+ * ProviderRouter handles routing decisions for write operations
28
+ * in multi-provider scenarios.
29
+ *
30
+ * Phase 1 routing logic is simple:
31
+ * 1. If explicit providerId is passed, use it
32
+ * 2. Otherwise, use the default provider
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });
37
+ *
38
+ * // With explicit provider
39
+ * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'
40
+ *
41
+ * // Without explicit provider
42
+ * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)
43
+ * ```
44
+ */
45
+ class ProviderRouter {
46
+ constructor(options) {
47
+ /** Default provider to use when no explicit providerId is specified */
48
+ _ProviderRouter_defaultProvider.set(this, void 0);
49
+ /** Current routing strategy (Phase 1: only 'default_provider' supported) */
50
+ _ProviderRouter_strategy.set(this, 'default_provider');
51
+ /** Map of provider ID to the markets it supports */
52
+ _ProviderRouter_providerMarkets.set(this, new Map());
53
+ __classPrivateFieldSet(this, _ProviderRouter_defaultProvider, options.defaultProvider, "f");
54
+ if (options.strategy) {
55
+ __classPrivateFieldSet(this, _ProviderRouter_strategy, options.strategy, "f");
56
+ }
57
+ }
58
+ /**
59
+ * Select the provider to use for an operation.
60
+ *
61
+ * Phase 1 logic:
62
+ * - Explicit providerId > defaultProvider
63
+ *
64
+ * @param params - Selection parameters
65
+ * @returns The provider ID to use
66
+ */
67
+ selectProvider(params) {
68
+ // Phase 1: explicit providerId always wins
69
+ if (params.providerId) {
70
+ return params.providerId;
71
+ }
72
+ // Fall back to default provider
73
+ return __classPrivateFieldGet(this, _ProviderRouter_defaultProvider, "f");
74
+ }
75
+ /**
76
+ * Get all providers that support a specific market.
77
+ *
78
+ * @param symbol - Market symbol (e.g., 'BTC', 'ETH')
79
+ * @returns Array of provider IDs that support this market
80
+ */
81
+ getProvidersForMarket(symbol) {
82
+ const providers = [];
83
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").forEach((markets, providerId) => {
84
+ if (markets.has(symbol)) {
85
+ providers.push(providerId);
86
+ }
87
+ });
88
+ return providers;
89
+ }
90
+ /**
91
+ * Update the markets supported by a provider.
92
+ * Called during provider initialization or market refresh.
93
+ *
94
+ * @param providerId - Provider to update
95
+ * @param markets - Array of market symbols the provider supports
96
+ */
97
+ updateProviderMarkets(providerId, markets) {
98
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").set(providerId, new Set(markets));
99
+ }
100
+ /**
101
+ * Clear markets for a provider (e.g., on disconnect).
102
+ *
103
+ * @param providerId - Provider to clear
104
+ */
105
+ clearProviderMarkets(providerId) {
106
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").delete(providerId);
107
+ }
108
+ /**
109
+ * Set the default provider for routing.
110
+ *
111
+ * @param providerId - New default provider
112
+ */
113
+ setDefaultProvider(providerId) {
114
+ __classPrivateFieldSet(this, _ProviderRouter_defaultProvider, providerId, "f");
115
+ }
116
+ /**
117
+ * Get the current default provider.
118
+ *
119
+ * @returns Current default provider ID
120
+ */
121
+ getDefaultProvider() {
122
+ return __classPrivateFieldGet(this, _ProviderRouter_defaultProvider, "f");
123
+ }
124
+ /**
125
+ * Get the current routing strategy.
126
+ *
127
+ * @returns Current routing strategy
128
+ */
129
+ getStrategy() {
130
+ return __classPrivateFieldGet(this, _ProviderRouter_strategy, "f");
131
+ }
132
+ /**
133
+ * Check if a provider supports a specific market.
134
+ *
135
+ * @param providerId - Provider to check
136
+ * @param symbol - Market symbol
137
+ * @returns true if provider supports the market
138
+ */
139
+ providerSupportsMarket(providerId, symbol) {
140
+ const markets = __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").get(providerId);
141
+ return markets?.has(symbol) ?? false;
142
+ }
143
+ /**
144
+ * Get all registered provider IDs.
145
+ *
146
+ * @returns Array of all provider IDs with registered markets
147
+ */
148
+ getRegisteredProviders() {
149
+ return Array.from(__classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").keys());
150
+ }
151
+ }
152
+ exports.ProviderRouter = ProviderRouter;
153
+ _ProviderRouter_defaultProvider = new WeakMap(), _ProviderRouter_strategy = new WeakMap(), _ProviderRouter_providerMarkets = new WeakMap();
154
+ //# sourceMappingURL=ProviderRouter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderRouter.cjs","sourceRoot":"","sources":["../../src/routing/ProviderRouter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;AAcH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,cAAc;IAUzB,YAAY,OAKX;QAdD,uEAAuE;QACvE,kDAAoC;QAEpC,4EAA4E;QACnE,mCAA6B,kBAAkB,EAAC;QAEzD,oDAAoD;QAC3C,0CAAwD,IAAI,GAAG,EAAE,EAAC;QAQzE,uBAAA,IAAI,mCAAoB,OAAO,CAAC,eAAe,MAAA,CAAC;QAChD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,uBAAA,IAAI,4BAAa,OAAO,CAAC,QAAQ,MAAA,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAA0B;QACvC,2CAA2C;QAC3C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QAED,gCAAgC;QAChC,OAAO,uBAAA,IAAI,uCAAiB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,MAAc;QAClC,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,uBAAA,IAAI,uCAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;YACpD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,UAA6B,EAC7B,OAAiB;QAEjB,uBAAA,IAAI,uCAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,UAA6B;QAChD,uBAAA,IAAI,uCAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,UAA6B;QAC9C,uBAAA,IAAI,mCAAoB,UAAU,MAAA,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO,uBAAA,IAAI,uCAAiB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,uBAAA,IAAI,gCAAU,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CACpB,UAA6B,EAC7B,MAAc;QAEd,MAAM,OAAO,GAAG,uBAAA,IAAI,uCAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,uCAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAlID,wCAkIC","sourcesContent":["/**\n * ProviderRouter - Simple routing logic for multi-provider order routing\n *\n * Phase 1 implementation: Uses simple routing strategy where:\n * - Explicit providerId always wins\n * - Falls back to default provider otherwise\n *\n * Advanced routing strategies (best_price, user_preference per market, lowest_fee)\n * are deferred to Phase 3.\n */\n\nimport type { PerpsProviderType, RoutingStrategy } from '../types';\n\n/**\n * Parameters for selecting a provider for an operation\n */\nexport type RouterSelectParams = {\n /** Asset identifier (e.g., 'BTC', 'ETH', 'xyz:TSLA') */\n symbol?: string;\n /** Explicit provider override - if provided, always used */\n providerId?: PerpsProviderType;\n};\n\n/**\n * ProviderRouter handles routing decisions for write operations\n * in multi-provider scenarios.\n *\n * Phase 1 routing logic is simple:\n * 1. If explicit providerId is passed, use it\n * 2. Otherwise, use the default provider\n *\n * @example\n * ```typescript\n * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });\n *\n * // With explicit provider\n * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'\n *\n * // Without explicit provider\n * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)\n * ```\n */\nexport class ProviderRouter {\n /** Default provider to use when no explicit providerId is specified */\n #defaultProvider: PerpsProviderType;\n\n /** Current routing strategy (Phase 1: only 'default_provider' supported) */\n readonly #strategy: RoutingStrategy = 'default_provider';\n\n /** Map of provider ID to the markets it supports */\n readonly #providerMarkets: Map<PerpsProviderType, Set<string>> = new Map();\n\n constructor(options: {\n /** Default provider for operations without explicit providerId */\n defaultProvider: PerpsProviderType;\n /** Routing strategy (Phase 1: only 'default_provider' supported) */\n strategy?: RoutingStrategy;\n }) {\n this.#defaultProvider = options.defaultProvider;\n if (options.strategy) {\n this.#strategy = options.strategy;\n }\n }\n\n /**\n * Select the provider to use for an operation.\n *\n * Phase 1 logic:\n * - Explicit providerId > defaultProvider\n *\n * @param params - Selection parameters\n * @returns The provider ID to use\n */\n selectProvider(params: RouterSelectParams): PerpsProviderType {\n // Phase 1: explicit providerId always wins\n if (params.providerId) {\n return params.providerId;\n }\n\n // Fall back to default provider\n return this.#defaultProvider;\n }\n\n /**\n * Get all providers that support a specific market.\n *\n * @param symbol - Market symbol (e.g., 'BTC', 'ETH')\n * @returns Array of provider IDs that support this market\n */\n getProvidersForMarket(symbol: string): PerpsProviderType[] {\n const providers: PerpsProviderType[] = [];\n this.#providerMarkets.forEach((markets, providerId) => {\n if (markets.has(symbol)) {\n providers.push(providerId);\n }\n });\n return providers;\n }\n\n /**\n * Update the markets supported by a provider.\n * Called during provider initialization or market refresh.\n *\n * @param providerId - Provider to update\n * @param markets - Array of market symbols the provider supports\n */\n updateProviderMarkets(\n providerId: PerpsProviderType,\n markets: string[],\n ): void {\n this.#providerMarkets.set(providerId, new Set(markets));\n }\n\n /**\n * Clear markets for a provider (e.g., on disconnect).\n *\n * @param providerId - Provider to clear\n */\n clearProviderMarkets(providerId: PerpsProviderType): void {\n this.#providerMarkets.delete(providerId);\n }\n\n /**\n * Set the default provider for routing.\n *\n * @param providerId - New default provider\n */\n setDefaultProvider(providerId: PerpsProviderType): void {\n this.#defaultProvider = providerId;\n }\n\n /**\n * Get the current default provider.\n *\n * @returns Current default provider ID\n */\n getDefaultProvider(): PerpsProviderType {\n return this.#defaultProvider;\n }\n\n /**\n * Get the current routing strategy.\n *\n * @returns Current routing strategy\n */\n getStrategy(): RoutingStrategy {\n return this.#strategy;\n }\n\n /**\n * Check if a provider supports a specific market.\n *\n * @param providerId - Provider to check\n * @param symbol - Market symbol\n * @returns true if provider supports the market\n */\n providerSupportsMarket(\n providerId: PerpsProviderType,\n symbol: string,\n ): boolean {\n const markets = this.#providerMarkets.get(providerId);\n return markets?.has(symbol) ?? false;\n }\n\n /**\n * Get all registered provider IDs.\n *\n * @returns Array of all provider IDs with registered markets\n */\n getRegisteredProviders(): PerpsProviderType[] {\n return Array.from(this.#providerMarkets.keys());\n }\n}\n"]}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * ProviderRouter - Simple routing logic for multi-provider order routing
3
+ *
4
+ * Phase 1 implementation: Uses simple routing strategy where:
5
+ * - Explicit providerId always wins
6
+ * - Falls back to default provider otherwise
7
+ *
8
+ * Advanced routing strategies (best_price, user_preference per market, lowest_fee)
9
+ * are deferred to Phase 3.
10
+ */
11
+ import type { PerpsProviderType, RoutingStrategy } from "../types/index.cjs";
12
+ /**
13
+ * Parameters for selecting a provider for an operation
14
+ */
15
+ export type RouterSelectParams = {
16
+ /** Asset identifier (e.g., 'BTC', 'ETH', 'xyz:TSLA') */
17
+ symbol?: string;
18
+ /** Explicit provider override - if provided, always used */
19
+ providerId?: PerpsProviderType;
20
+ };
21
+ /**
22
+ * ProviderRouter handles routing decisions for write operations
23
+ * in multi-provider scenarios.
24
+ *
25
+ * Phase 1 routing logic is simple:
26
+ * 1. If explicit providerId is passed, use it
27
+ * 2. Otherwise, use the default provider
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });
32
+ *
33
+ * // With explicit provider
34
+ * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'
35
+ *
36
+ * // Without explicit provider
37
+ * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)
38
+ * ```
39
+ */
40
+ export declare class ProviderRouter {
41
+ #private;
42
+ constructor(options: {
43
+ /** Default provider for operations without explicit providerId */
44
+ defaultProvider: PerpsProviderType;
45
+ /** Routing strategy (Phase 1: only 'default_provider' supported) */
46
+ strategy?: RoutingStrategy;
47
+ });
48
+ /**
49
+ * Select the provider to use for an operation.
50
+ *
51
+ * Phase 1 logic:
52
+ * - Explicit providerId > defaultProvider
53
+ *
54
+ * @param params - Selection parameters
55
+ * @returns The provider ID to use
56
+ */
57
+ selectProvider(params: RouterSelectParams): PerpsProviderType;
58
+ /**
59
+ * Get all providers that support a specific market.
60
+ *
61
+ * @param symbol - Market symbol (e.g., 'BTC', 'ETH')
62
+ * @returns Array of provider IDs that support this market
63
+ */
64
+ getProvidersForMarket(symbol: string): PerpsProviderType[];
65
+ /**
66
+ * Update the markets supported by a provider.
67
+ * Called during provider initialization or market refresh.
68
+ *
69
+ * @param providerId - Provider to update
70
+ * @param markets - Array of market symbols the provider supports
71
+ */
72
+ updateProviderMarkets(providerId: PerpsProviderType, markets: string[]): void;
73
+ /**
74
+ * Clear markets for a provider (e.g., on disconnect).
75
+ *
76
+ * @param providerId - Provider to clear
77
+ */
78
+ clearProviderMarkets(providerId: PerpsProviderType): void;
79
+ /**
80
+ * Set the default provider for routing.
81
+ *
82
+ * @param providerId - New default provider
83
+ */
84
+ setDefaultProvider(providerId: PerpsProviderType): void;
85
+ /**
86
+ * Get the current default provider.
87
+ *
88
+ * @returns Current default provider ID
89
+ */
90
+ getDefaultProvider(): PerpsProviderType;
91
+ /**
92
+ * Get the current routing strategy.
93
+ *
94
+ * @returns Current routing strategy
95
+ */
96
+ getStrategy(): RoutingStrategy;
97
+ /**
98
+ * Check if a provider supports a specific market.
99
+ *
100
+ * @param providerId - Provider to check
101
+ * @param symbol - Market symbol
102
+ * @returns true if provider supports the market
103
+ */
104
+ providerSupportsMarket(providerId: PerpsProviderType, symbol: string): boolean;
105
+ /**
106
+ * Get all registered provider IDs.
107
+ *
108
+ * @returns Array of all provider IDs with registered markets
109
+ */
110
+ getRegisteredProviders(): PerpsProviderType[];
111
+ }
112
+ //# sourceMappingURL=ProviderRouter.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderRouter.d.cts","sourceRoot":"","sources":["../../src/routing/ProviderRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,2BAAiB;AAEnE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAc;;gBAUb,OAAO,EAAE;QACnB,kEAAkE;QAClE,eAAe,EAAE,iBAAiB,CAAC;QACnC,oEAAoE;QACpE,QAAQ,CAAC,EAAE,eAAe,CAAC;KAC5B;IAOD;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB;IAU7D;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAU1D;;;;;;OAMG;IACH,qBAAqB,CACnB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIzD;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;;;OAIG;IACH,kBAAkB,IAAI,iBAAiB;IAIvC;;;;OAIG;IACH,WAAW,IAAI,eAAe;IAI9B;;;;;;OAMG;IACH,sBAAsB,CACpB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO;IAKV;;;;OAIG;IACH,sBAAsB,IAAI,iBAAiB,EAAE;CAG9C"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * ProviderRouter - Simple routing logic for multi-provider order routing
3
+ *
4
+ * Phase 1 implementation: Uses simple routing strategy where:
5
+ * - Explicit providerId always wins
6
+ * - Falls back to default provider otherwise
7
+ *
8
+ * Advanced routing strategies (best_price, user_preference per market, lowest_fee)
9
+ * are deferred to Phase 3.
10
+ */
11
+ import type { PerpsProviderType, RoutingStrategy } from "../types/index.mjs";
12
+ /**
13
+ * Parameters for selecting a provider for an operation
14
+ */
15
+ export type RouterSelectParams = {
16
+ /** Asset identifier (e.g., 'BTC', 'ETH', 'xyz:TSLA') */
17
+ symbol?: string;
18
+ /** Explicit provider override - if provided, always used */
19
+ providerId?: PerpsProviderType;
20
+ };
21
+ /**
22
+ * ProviderRouter handles routing decisions for write operations
23
+ * in multi-provider scenarios.
24
+ *
25
+ * Phase 1 routing logic is simple:
26
+ * 1. If explicit providerId is passed, use it
27
+ * 2. Otherwise, use the default provider
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });
32
+ *
33
+ * // With explicit provider
34
+ * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'
35
+ *
36
+ * // Without explicit provider
37
+ * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)
38
+ * ```
39
+ */
40
+ export declare class ProviderRouter {
41
+ #private;
42
+ constructor(options: {
43
+ /** Default provider for operations without explicit providerId */
44
+ defaultProvider: PerpsProviderType;
45
+ /** Routing strategy (Phase 1: only 'default_provider' supported) */
46
+ strategy?: RoutingStrategy;
47
+ });
48
+ /**
49
+ * Select the provider to use for an operation.
50
+ *
51
+ * Phase 1 logic:
52
+ * - Explicit providerId > defaultProvider
53
+ *
54
+ * @param params - Selection parameters
55
+ * @returns The provider ID to use
56
+ */
57
+ selectProvider(params: RouterSelectParams): PerpsProviderType;
58
+ /**
59
+ * Get all providers that support a specific market.
60
+ *
61
+ * @param symbol - Market symbol (e.g., 'BTC', 'ETH')
62
+ * @returns Array of provider IDs that support this market
63
+ */
64
+ getProvidersForMarket(symbol: string): PerpsProviderType[];
65
+ /**
66
+ * Update the markets supported by a provider.
67
+ * Called during provider initialization or market refresh.
68
+ *
69
+ * @param providerId - Provider to update
70
+ * @param markets - Array of market symbols the provider supports
71
+ */
72
+ updateProviderMarkets(providerId: PerpsProviderType, markets: string[]): void;
73
+ /**
74
+ * Clear markets for a provider (e.g., on disconnect).
75
+ *
76
+ * @param providerId - Provider to clear
77
+ */
78
+ clearProviderMarkets(providerId: PerpsProviderType): void;
79
+ /**
80
+ * Set the default provider for routing.
81
+ *
82
+ * @param providerId - New default provider
83
+ */
84
+ setDefaultProvider(providerId: PerpsProviderType): void;
85
+ /**
86
+ * Get the current default provider.
87
+ *
88
+ * @returns Current default provider ID
89
+ */
90
+ getDefaultProvider(): PerpsProviderType;
91
+ /**
92
+ * Get the current routing strategy.
93
+ *
94
+ * @returns Current routing strategy
95
+ */
96
+ getStrategy(): RoutingStrategy;
97
+ /**
98
+ * Check if a provider supports a specific market.
99
+ *
100
+ * @param providerId - Provider to check
101
+ * @param symbol - Market symbol
102
+ * @returns true if provider supports the market
103
+ */
104
+ providerSupportsMarket(providerId: PerpsProviderType, symbol: string): boolean;
105
+ /**
106
+ * Get all registered provider IDs.
107
+ *
108
+ * @returns Array of all provider IDs with registered markets
109
+ */
110
+ getRegisteredProviders(): PerpsProviderType[];
111
+ }
112
+ //# sourceMappingURL=ProviderRouter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderRouter.d.mts","sourceRoot":"","sources":["../../src/routing/ProviderRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,2BAAiB;AAEnE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAc;;gBAUb,OAAO,EAAE;QACnB,kEAAkE;QAClE,eAAe,EAAE,iBAAiB,CAAC;QACnC,oEAAoE;QACpE,QAAQ,CAAC,EAAE,eAAe,CAAC;KAC5B;IAOD;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB;IAU7D;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAU1D;;;;;;OAMG;IACH,qBAAqB,CACnB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIzD;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;;;OAIG;IACH,kBAAkB,IAAI,iBAAiB;IAIvC;;;;OAIG;IACH,WAAW,IAAI,eAAe;IAI9B;;;;;;OAMG;IACH,sBAAsB,CACpB,UAAU,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GACb,OAAO;IAKV;;;;OAIG;IACH,sBAAsB,IAAI,iBAAiB,EAAE;CAG9C"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * ProviderRouter - Simple routing logic for multi-provider order routing
3
+ *
4
+ * Phase 1 implementation: Uses simple routing strategy where:
5
+ * - Explicit providerId always wins
6
+ * - Falls back to default provider otherwise
7
+ *
8
+ * Advanced routing strategies (best_price, user_preference per market, lowest_fee)
9
+ * are deferred to Phase 3.
10
+ */
11
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
12
+ if (kind === "m") throw new TypeError("Private method is not writable");
13
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
14
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
15
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
16
+ };
17
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
18
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
19
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
+ };
22
+ var _ProviderRouter_defaultProvider, _ProviderRouter_strategy, _ProviderRouter_providerMarkets;
23
+ /**
24
+ * ProviderRouter handles routing decisions for write operations
25
+ * in multi-provider scenarios.
26
+ *
27
+ * Phase 1 routing logic is simple:
28
+ * 1. If explicit providerId is passed, use it
29
+ * 2. Otherwise, use the default provider
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });
34
+ *
35
+ * // With explicit provider
36
+ * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'
37
+ *
38
+ * // Without explicit provider
39
+ * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)
40
+ * ```
41
+ */
42
+ export class ProviderRouter {
43
+ constructor(options) {
44
+ /** Default provider to use when no explicit providerId is specified */
45
+ _ProviderRouter_defaultProvider.set(this, void 0);
46
+ /** Current routing strategy (Phase 1: only 'default_provider' supported) */
47
+ _ProviderRouter_strategy.set(this, 'default_provider');
48
+ /** Map of provider ID to the markets it supports */
49
+ _ProviderRouter_providerMarkets.set(this, new Map());
50
+ __classPrivateFieldSet(this, _ProviderRouter_defaultProvider, options.defaultProvider, "f");
51
+ if (options.strategy) {
52
+ __classPrivateFieldSet(this, _ProviderRouter_strategy, options.strategy, "f");
53
+ }
54
+ }
55
+ /**
56
+ * Select the provider to use for an operation.
57
+ *
58
+ * Phase 1 logic:
59
+ * - Explicit providerId > defaultProvider
60
+ *
61
+ * @param params - Selection parameters
62
+ * @returns The provider ID to use
63
+ */
64
+ selectProvider(params) {
65
+ // Phase 1: explicit providerId always wins
66
+ if (params.providerId) {
67
+ return params.providerId;
68
+ }
69
+ // Fall back to default provider
70
+ return __classPrivateFieldGet(this, _ProviderRouter_defaultProvider, "f");
71
+ }
72
+ /**
73
+ * Get all providers that support a specific market.
74
+ *
75
+ * @param symbol - Market symbol (e.g., 'BTC', 'ETH')
76
+ * @returns Array of provider IDs that support this market
77
+ */
78
+ getProvidersForMarket(symbol) {
79
+ const providers = [];
80
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").forEach((markets, providerId) => {
81
+ if (markets.has(symbol)) {
82
+ providers.push(providerId);
83
+ }
84
+ });
85
+ return providers;
86
+ }
87
+ /**
88
+ * Update the markets supported by a provider.
89
+ * Called during provider initialization or market refresh.
90
+ *
91
+ * @param providerId - Provider to update
92
+ * @param markets - Array of market symbols the provider supports
93
+ */
94
+ updateProviderMarkets(providerId, markets) {
95
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").set(providerId, new Set(markets));
96
+ }
97
+ /**
98
+ * Clear markets for a provider (e.g., on disconnect).
99
+ *
100
+ * @param providerId - Provider to clear
101
+ */
102
+ clearProviderMarkets(providerId) {
103
+ __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").delete(providerId);
104
+ }
105
+ /**
106
+ * Set the default provider for routing.
107
+ *
108
+ * @param providerId - New default provider
109
+ */
110
+ setDefaultProvider(providerId) {
111
+ __classPrivateFieldSet(this, _ProviderRouter_defaultProvider, providerId, "f");
112
+ }
113
+ /**
114
+ * Get the current default provider.
115
+ *
116
+ * @returns Current default provider ID
117
+ */
118
+ getDefaultProvider() {
119
+ return __classPrivateFieldGet(this, _ProviderRouter_defaultProvider, "f");
120
+ }
121
+ /**
122
+ * Get the current routing strategy.
123
+ *
124
+ * @returns Current routing strategy
125
+ */
126
+ getStrategy() {
127
+ return __classPrivateFieldGet(this, _ProviderRouter_strategy, "f");
128
+ }
129
+ /**
130
+ * Check if a provider supports a specific market.
131
+ *
132
+ * @param providerId - Provider to check
133
+ * @param symbol - Market symbol
134
+ * @returns true if provider supports the market
135
+ */
136
+ providerSupportsMarket(providerId, symbol) {
137
+ const markets = __classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").get(providerId);
138
+ return markets?.has(symbol) ?? false;
139
+ }
140
+ /**
141
+ * Get all registered provider IDs.
142
+ *
143
+ * @returns Array of all provider IDs with registered markets
144
+ */
145
+ getRegisteredProviders() {
146
+ return Array.from(__classPrivateFieldGet(this, _ProviderRouter_providerMarkets, "f").keys());
147
+ }
148
+ }
149
+ _ProviderRouter_defaultProvider = new WeakMap(), _ProviderRouter_strategy = new WeakMap(), _ProviderRouter_providerMarkets = new WeakMap();
150
+ //# sourceMappingURL=ProviderRouter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderRouter.mjs","sourceRoot":"","sources":["../../src/routing/ProviderRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;;;;;;;;;;;;;AAcH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,cAAc;IAUzB,YAAY,OAKX;QAdD,uEAAuE;QACvE,kDAAoC;QAEpC,4EAA4E;QACnE,mCAA6B,kBAAkB,EAAC;QAEzD,oDAAoD;QAC3C,0CAAwD,IAAI,GAAG,EAAE,EAAC;QAQzE,uBAAA,IAAI,mCAAoB,OAAO,CAAC,eAAe,MAAA,CAAC;QAChD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,uBAAA,IAAI,4BAAa,OAAO,CAAC,QAAQ,MAAA,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAA0B;QACvC,2CAA2C;QAC3C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QAED,gCAAgC;QAChC,OAAO,uBAAA,IAAI,uCAAiB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,MAAc;QAClC,MAAM,SAAS,GAAwB,EAAE,CAAC;QAC1C,uBAAA,IAAI,uCAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;YACpD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CACnB,UAA6B,EAC7B,OAAiB;QAEjB,uBAAA,IAAI,uCAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,UAA6B;QAChD,uBAAA,IAAI,uCAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,UAA6B;QAC9C,uBAAA,IAAI,mCAAoB,UAAU,MAAA,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,kBAAkB;QAChB,OAAO,uBAAA,IAAI,uCAAiB,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,uBAAA,IAAI,gCAAU,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB,CACpB,UAA6B,EAC7B,MAAc;QAEd,MAAM,OAAO,GAAG,uBAAA,IAAI,uCAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,sBAAsB;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,uBAAA,IAAI,uCAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["/**\n * ProviderRouter - Simple routing logic for multi-provider order routing\n *\n * Phase 1 implementation: Uses simple routing strategy where:\n * - Explicit providerId always wins\n * - Falls back to default provider otherwise\n *\n * Advanced routing strategies (best_price, user_preference per market, lowest_fee)\n * are deferred to Phase 3.\n */\n\nimport type { PerpsProviderType, RoutingStrategy } from '../types';\n\n/**\n * Parameters for selecting a provider for an operation\n */\nexport type RouterSelectParams = {\n /** Asset identifier (e.g., 'BTC', 'ETH', 'xyz:TSLA') */\n symbol?: string;\n /** Explicit provider override - if provided, always used */\n providerId?: PerpsProviderType;\n};\n\n/**\n * ProviderRouter handles routing decisions for write operations\n * in multi-provider scenarios.\n *\n * Phase 1 routing logic is simple:\n * 1. If explicit providerId is passed, use it\n * 2. Otherwise, use the default provider\n *\n * @example\n * ```typescript\n * const router = new ProviderRouter({ defaultProvider: 'hyperliquid' });\n *\n * // With explicit provider\n * router.selectProvider({ providerId: 'myx' }); // Returns 'myx'\n *\n * // Without explicit provider\n * router.selectProvider({ symbol: 'BTC' }); // Returns 'hyperliquid' (default)\n * ```\n */\nexport class ProviderRouter {\n /** Default provider to use when no explicit providerId is specified */\n #defaultProvider: PerpsProviderType;\n\n /** Current routing strategy (Phase 1: only 'default_provider' supported) */\n readonly #strategy: RoutingStrategy = 'default_provider';\n\n /** Map of provider ID to the markets it supports */\n readonly #providerMarkets: Map<PerpsProviderType, Set<string>> = new Map();\n\n constructor(options: {\n /** Default provider for operations without explicit providerId */\n defaultProvider: PerpsProviderType;\n /** Routing strategy (Phase 1: only 'default_provider' supported) */\n strategy?: RoutingStrategy;\n }) {\n this.#defaultProvider = options.defaultProvider;\n if (options.strategy) {\n this.#strategy = options.strategy;\n }\n }\n\n /**\n * Select the provider to use for an operation.\n *\n * Phase 1 logic:\n * - Explicit providerId > defaultProvider\n *\n * @param params - Selection parameters\n * @returns The provider ID to use\n */\n selectProvider(params: RouterSelectParams): PerpsProviderType {\n // Phase 1: explicit providerId always wins\n if (params.providerId) {\n return params.providerId;\n }\n\n // Fall back to default provider\n return this.#defaultProvider;\n }\n\n /**\n * Get all providers that support a specific market.\n *\n * @param symbol - Market symbol (e.g., 'BTC', 'ETH')\n * @returns Array of provider IDs that support this market\n */\n getProvidersForMarket(symbol: string): PerpsProviderType[] {\n const providers: PerpsProviderType[] = [];\n this.#providerMarkets.forEach((markets, providerId) => {\n if (markets.has(symbol)) {\n providers.push(providerId);\n }\n });\n return providers;\n }\n\n /**\n * Update the markets supported by a provider.\n * Called during provider initialization or market refresh.\n *\n * @param providerId - Provider to update\n * @param markets - Array of market symbols the provider supports\n */\n updateProviderMarkets(\n providerId: PerpsProviderType,\n markets: string[],\n ): void {\n this.#providerMarkets.set(providerId, new Set(markets));\n }\n\n /**\n * Clear markets for a provider (e.g., on disconnect).\n *\n * @param providerId - Provider to clear\n */\n clearProviderMarkets(providerId: PerpsProviderType): void {\n this.#providerMarkets.delete(providerId);\n }\n\n /**\n * Set the default provider for routing.\n *\n * @param providerId - New default provider\n */\n setDefaultProvider(providerId: PerpsProviderType): void {\n this.#defaultProvider = providerId;\n }\n\n /**\n * Get the current default provider.\n *\n * @returns Current default provider ID\n */\n getDefaultProvider(): PerpsProviderType {\n return this.#defaultProvider;\n }\n\n /**\n * Get the current routing strategy.\n *\n * @returns Current routing strategy\n */\n getStrategy(): RoutingStrategy {\n return this.#strategy;\n }\n\n /**\n * Check if a provider supports a specific market.\n *\n * @param providerId - Provider to check\n * @param symbol - Market symbol\n * @returns true if provider supports the market\n */\n providerSupportsMarket(\n providerId: PerpsProviderType,\n symbol: string,\n ): boolean {\n const markets = this.#providerMarkets.get(providerId);\n return markets?.has(symbol) ?? false;\n }\n\n /**\n * Get all registered provider IDs.\n *\n * @returns Array of all provider IDs with registered markets\n */\n getRegisteredProviders(): PerpsProviderType[] {\n return Array.from(this.#providerMarkets.keys());\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderRouter = void 0;
4
+ /**
5
+ * Provider routing module exports
6
+ */
7
+ var ProviderRouter_1 = require("./ProviderRouter.cjs");
8
+ Object.defineProperty(exports, "ProviderRouter", { enumerable: true, get: function () { return ProviderRouter_1.ProviderRouter; } });
9
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,uDAAkD;AAAzC,gHAAA,cAAc,OAAA","sourcesContent":["/**\n * Provider routing module exports\n */\nexport { ProviderRouter } from './ProviderRouter';\nexport type { RouterSelectParams } from './ProviderRouter';\n"]}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Provider routing module exports
3
+ */
4
+ export { ProviderRouter } from "./ProviderRouter.cjs";
5
+ export type { RouterSelectParams } from "./ProviderRouter.cjs";
6
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAClD,YAAY,EAAE,kBAAkB,EAAE,6BAAyB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Provider routing module exports
3
+ */
4
+ export { ProviderRouter } from "./ProviderRouter.mjs";
5
+ export type { RouterSelectParams } from "./ProviderRouter.mjs";
6
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,6BAAyB;AAClD,YAAY,EAAE,kBAAkB,EAAE,6BAAyB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Provider routing module exports
3
+ */
4
+ export { ProviderRouter } from "./ProviderRouter.mjs";
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,6BAAyB","sourcesContent":["/**\n * Provider routing module exports\n */\nexport { ProviderRouter } from './ProviderRouter';\nexport type { RouterSelectParams } from './ProviderRouter';\n"]}