@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,51 @@
1
+ import type { ServiceContext } from "./ServiceContext.cjs";
2
+ import type { PerpsPlatformDependencies } from "../types/index.cjs";
3
+ import type { PerpsControllerMessengerBase } from "../types/messenger.cjs";
4
+ /**
5
+ * DataLakeService
6
+ *
7
+ * Handles reporting order events to external Data Lake API.
8
+ * Implements exponential backoff retry logic and performance tracing.
9
+ * Stateless service that operates purely on external API calls.
10
+ *
11
+ * Instance-based service with constructor injection of platform dependencies.
12
+ */
13
+ export declare class DataLakeService {
14
+ #private;
15
+ /**
16
+ * Create a new DataLakeService instance
17
+ *
18
+ * @param deps - Platform dependencies for logging, metrics, etc.
19
+ * @param messenger - Controller messenger for cross-controller communication.
20
+ */
21
+ constructor(deps: PerpsPlatformDependencies, messenger: PerpsControllerMessengerBase);
22
+ /**
23
+ * Report order events to data lake API with retry (non-blocking)
24
+ * Implements exponential backoff retry logic (max 3 retries)
25
+ *
26
+ * @param options - Configuration object
27
+ * @param options.action - Order action ('open' or 'close')
28
+ * @param options.symbol - Market symbol
29
+ * @param options.slPrice - Optional stop loss price.
30
+ * @param options.tpPrice - Optional take profit price.
31
+ * @param options.isTestnet - Whether this is a testnet operation (skips API call)
32
+ * @param options.context - ServiceContext for dependencies (messenger, tracing)
33
+ * @param options.retryCount - Internal retry counter (managed by service)
34
+ * @param options._traceId - Internal trace ID (managed by service)
35
+ * @returns Result object with success flag and optional error message
36
+ */
37
+ reportOrder(options: {
38
+ action: 'open' | 'close';
39
+ symbol: string;
40
+ slPrice?: number;
41
+ tpPrice?: number;
42
+ isTestnet: boolean;
43
+ context: ServiceContext;
44
+ retryCount?: number;
45
+ _traceId?: string;
46
+ }): Promise<{
47
+ success: boolean;
48
+ error?: string;
49
+ }>;
50
+ }
51
+ //# sourceMappingURL=DataLakeService.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataLakeService.d.cts","sourceRoot":"","sources":["../../src/services/DataLakeService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAOvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,2BAAiB;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,+BAA2B;AAIvE;;;;;;;;GAQG;AACH,qBAAa,eAAe;;IAK1B;;;;;OAKG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,4BAA4B;IAezC;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,OAAO,EAAE;QACzB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAmNlD"}
@@ -0,0 +1,51 @@
1
+ import type { ServiceContext } from "./ServiceContext.mjs";
2
+ import type { PerpsPlatformDependencies } from "../types/index.mjs";
3
+ import type { PerpsControllerMessengerBase } from "../types/messenger.mjs";
4
+ /**
5
+ * DataLakeService
6
+ *
7
+ * Handles reporting order events to external Data Lake API.
8
+ * Implements exponential backoff retry logic and performance tracing.
9
+ * Stateless service that operates purely on external API calls.
10
+ *
11
+ * Instance-based service with constructor injection of platform dependencies.
12
+ */
13
+ export declare class DataLakeService {
14
+ #private;
15
+ /**
16
+ * Create a new DataLakeService instance
17
+ *
18
+ * @param deps - Platform dependencies for logging, metrics, etc.
19
+ * @param messenger - Controller messenger for cross-controller communication.
20
+ */
21
+ constructor(deps: PerpsPlatformDependencies, messenger: PerpsControllerMessengerBase);
22
+ /**
23
+ * Report order events to data lake API with retry (non-blocking)
24
+ * Implements exponential backoff retry logic (max 3 retries)
25
+ *
26
+ * @param options - Configuration object
27
+ * @param options.action - Order action ('open' or 'close')
28
+ * @param options.symbol - Market symbol
29
+ * @param options.slPrice - Optional stop loss price.
30
+ * @param options.tpPrice - Optional take profit price.
31
+ * @param options.isTestnet - Whether this is a testnet operation (skips API call)
32
+ * @param options.context - ServiceContext for dependencies (messenger, tracing)
33
+ * @param options.retryCount - Internal retry counter (managed by service)
34
+ * @param options._traceId - Internal trace ID (managed by service)
35
+ * @returns Result object with success flag and optional error message
36
+ */
37
+ reportOrder(options: {
38
+ action: 'open' | 'close';
39
+ symbol: string;
40
+ slPrice?: number;
41
+ tpPrice?: number;
42
+ isTestnet: boolean;
43
+ context: ServiceContext;
44
+ retryCount?: number;
45
+ _traceId?: string;
46
+ }): Promise<{
47
+ success: boolean;
48
+ error?: string;
49
+ }>;
50
+ }
51
+ //# sourceMappingURL=DataLakeService.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataLakeService.d.mts","sourceRoot":"","sources":["../../src/services/DataLakeService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,6BAAyB;AAOvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,2BAAiB;AAC1D,OAAO,KAAK,EAAE,4BAA4B,EAAE,+BAA2B;AAIvE;;;;;;;;GAQG;AACH,qBAAa,eAAe;;IAK1B;;;;;OAKG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,4BAA4B;IAezC;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,OAAO,EAAE;QACzB,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,cAAc,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAmNlD"}
@@ -0,0 +1,229 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ 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");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ 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");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _DataLakeService_instances, _DataLakeService_deps, _DataLakeService_messenger, _DataLakeService_getBearerToken;
13
+ import { v4 as uuidv4 } from "uuid";
14
+ import { PerpsMeasurementName } from "../constants/performanceMetrics.mjs";
15
+ import { DATA_LAKE_API_CONFIG, PERPS_CONSTANTS } from "../constants/perpsConfig.mjs";
16
+ import { PerpsTraceNames, PerpsTraceOperations } from "../types/index.mjs";
17
+ import { getSelectedEvmAccount } from "../utils/accountUtils.mjs";
18
+ import { ensureError } from "../utils/errorUtils.mjs";
19
+ /**
20
+ * DataLakeService
21
+ *
22
+ * Handles reporting order events to external Data Lake API.
23
+ * Implements exponential backoff retry logic and performance tracing.
24
+ * Stateless service that operates purely on external API calls.
25
+ *
26
+ * Instance-based service with constructor injection of platform dependencies.
27
+ */
28
+ export class DataLakeService {
29
+ /**
30
+ * Create a new DataLakeService instance
31
+ *
32
+ * @param deps - Platform dependencies for logging, metrics, etc.
33
+ * @param messenger - Controller messenger for cross-controller communication.
34
+ */
35
+ constructor(deps, messenger) {
36
+ _DataLakeService_instances.add(this);
37
+ _DataLakeService_deps.set(this, void 0);
38
+ _DataLakeService_messenger.set(this, void 0);
39
+ __classPrivateFieldSet(this, _DataLakeService_deps, deps, "f");
40
+ __classPrivateFieldSet(this, _DataLakeService_messenger, messenger, "f");
41
+ }
42
+ /**
43
+ * Report order events to data lake API with retry (non-blocking)
44
+ * Implements exponential backoff retry logic (max 3 retries)
45
+ *
46
+ * @param options - Configuration object
47
+ * @param options.action - Order action ('open' or 'close')
48
+ * @param options.symbol - Market symbol
49
+ * @param options.slPrice - Optional stop loss price.
50
+ * @param options.tpPrice - Optional take profit price.
51
+ * @param options.isTestnet - Whether this is a testnet operation (skips API call)
52
+ * @param options.context - ServiceContext for dependencies (messenger, tracing)
53
+ * @param options.retryCount - Internal retry counter (managed by service)
54
+ * @param options._traceId - Internal trace ID (managed by service)
55
+ * @returns Result object with success flag and optional error message
56
+ */
57
+ async reportOrder(options) {
58
+ const { action, symbol, slPrice, tpPrice, isTestnet, context, retryCount = 0, _traceId, } = options;
59
+ // Skip data lake reporting for testnet as the API doesn't handle testnet data
60
+ if (isTestnet) {
61
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").debugLogger.log('DataLake API: Skipping for testnet', {
62
+ action,
63
+ symbol,
64
+ network: 'testnet',
65
+ });
66
+ return { success: true, error: 'Skipped for testnet' };
67
+ }
68
+ const MAX_RETRIES = 3;
69
+ const RETRY_DELAY_MS = 1000;
70
+ // Generate trace ID once on first call
71
+ const traceId = _traceId ?? uuidv4();
72
+ // Start trace only on first attempt
73
+ if (retryCount === 0) {
74
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").tracer.trace({
75
+ name: PerpsTraceNames.DataLakeReport,
76
+ op: PerpsTraceOperations.Operation,
77
+ id: traceId,
78
+ tags: {
79
+ action,
80
+ symbol,
81
+ provider: context.tracingContext.provider,
82
+ isTestnet: String(context.tracingContext.isTestnet),
83
+ },
84
+ });
85
+ }
86
+ // Log the attempt
87
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").debugLogger.log('DataLake API: Starting order report', {
88
+ action,
89
+ symbol,
90
+ attempt: retryCount + 1,
91
+ maxAttempts: MAX_RETRIES + 1,
92
+ hasStopLoss: Boolean(slPrice),
93
+ hasTakeProfit: Boolean(tpPrice),
94
+ timestamp: new Date().toISOString(),
95
+ });
96
+ const apiCallStartTime = __classPrivateFieldGet(this, _DataLakeService_deps, "f").performance.now();
97
+ try {
98
+ const token = await __classPrivateFieldGet(this, _DataLakeService_instances, "m", _DataLakeService_getBearerToken).call(this);
99
+ const evmAccount = getSelectedEvmAccount(__classPrivateFieldGet(this, _DataLakeService_messenger, "f").call('AccountTreeController:getAccountsFromSelectedAccountGroup'));
100
+ if (!evmAccount || !token) {
101
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").debugLogger.log('DataLake API: Missing requirements', {
102
+ hasAccount: Boolean(evmAccount),
103
+ hasToken: Boolean(token),
104
+ action,
105
+ symbol,
106
+ });
107
+ return { success: false, error: 'No account or token available' };
108
+ }
109
+ const response = await fetch(DATA_LAKE_API_CONFIG.OrdersEndpoint, {
110
+ method: 'POST',
111
+ headers: {
112
+ 'Content-Type': 'application/json',
113
+ Authorization: `Bearer ${token}`,
114
+ },
115
+ body: JSON.stringify({
116
+ user_id: evmAccount.address,
117
+ symbol,
118
+ sl_price: slPrice,
119
+ tp_price: tpPrice,
120
+ }),
121
+ });
122
+ if (!response.ok) {
123
+ throw new Error(`DataLake API error: ${response.status}`);
124
+ }
125
+ // Consume response body (might be empty for 201, but good to check)
126
+ const responseBody = await response.text();
127
+ const apiCallDuration = __classPrivateFieldGet(this, _DataLakeService_deps, "f").performance.now() - apiCallStartTime;
128
+ // Record measurement
129
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").tracer.setMeasurement(PerpsMeasurementName.PerpsDataLakeApiCall, apiCallDuration, 'millisecond');
130
+ // Success logging
131
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").debugLogger.log('DataLake API: Order reported successfully', {
132
+ action,
133
+ symbol,
134
+ status: response.status,
135
+ attempt: retryCount + 1,
136
+ responseBody: responseBody || 'empty',
137
+ duration: `${apiCallDuration.toFixed(0)}ms`,
138
+ });
139
+ // End trace on success
140
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").tracer.endTrace({
141
+ name: PerpsTraceNames.DataLakeReport,
142
+ id: traceId,
143
+ data: {
144
+ success: true,
145
+ retries: retryCount,
146
+ },
147
+ });
148
+ return { success: true };
149
+ }
150
+ catch (error) {
151
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
152
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").logger.error(ensureError(error, 'DataLakeService.reportOrder'), {
153
+ tags: { feature: PERPS_CONSTANTS.FeatureName },
154
+ context: {
155
+ name: 'DataLakeService.reportOrder',
156
+ data: {
157
+ action,
158
+ symbol,
159
+ retryCount,
160
+ willRetry: retryCount < MAX_RETRIES,
161
+ },
162
+ },
163
+ });
164
+ // Retry logic
165
+ if (retryCount < MAX_RETRIES) {
166
+ const retryDelay = RETRY_DELAY_MS * Math.pow(2, retryCount);
167
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").debugLogger.log('DataLake API: Scheduling retry', {
168
+ retryIn: `${retryDelay}ms`,
169
+ nextAttempt: retryCount + 2,
170
+ action,
171
+ symbol,
172
+ });
173
+ setTimeout(() => {
174
+ this.reportOrder({
175
+ action,
176
+ symbol,
177
+ slPrice,
178
+ tpPrice,
179
+ isTestnet,
180
+ context,
181
+ retryCount: retryCount + 1,
182
+ _traceId: traceId,
183
+ }).catch((_retryError) => {
184
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").logger.error(ensureError(_retryError, 'DataLakeService.reportOrder'), {
185
+ tags: { feature: PERPS_CONSTANTS.FeatureName },
186
+ context: {
187
+ name: 'DataLakeService.reportOrder',
188
+ data: {
189
+ operation: 'retry',
190
+ retryCount: retryCount + 1,
191
+ action,
192
+ symbol,
193
+ },
194
+ },
195
+ });
196
+ });
197
+ }, retryDelay);
198
+ return { success: false, error: errorMessage };
199
+ }
200
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").tracer.endTrace({
201
+ name: PerpsTraceNames.DataLakeReport,
202
+ id: traceId,
203
+ data: {
204
+ success: false,
205
+ error: errorMessage,
206
+ totalRetries: retryCount,
207
+ },
208
+ });
209
+ __classPrivateFieldGet(this, _DataLakeService_deps, "f").logger.error(ensureError(error, 'DataLakeService.reportOrder'), {
210
+ tags: { feature: PERPS_CONSTANTS.FeatureName },
211
+ context: {
212
+ name: 'DataLakeService.reportOrder',
213
+ data: { operation: 'finalFailure', action, symbol, retryCount },
214
+ },
215
+ });
216
+ return { success: false, error: errorMessage };
217
+ }
218
+ }
219
+ }
220
+ _DataLakeService_deps = new WeakMap(), _DataLakeService_messenger = new WeakMap(), _DataLakeService_instances = new WeakSet(), _DataLakeService_getBearerToken =
221
+ /**
222
+ * Get bearer token via DI authentication controller
223
+ *
224
+ * @returns The bearer token string for API authentication.
225
+ */
226
+ async function _DataLakeService_getBearerToken() {
227
+ return __classPrivateFieldGet(this, _DataLakeService_messenger, "f").call('AuthenticationController:getBearerToken');
228
+ };
229
+ //# sourceMappingURL=DataLakeService.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataLakeService.mjs","sourceRoot":"","sources":["../../src/services/DataLakeService.ts"],"names":[],"mappings":"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","sourcesContent":["import { v4 as uuidv4 } from 'uuid';\n\nimport type { ServiceContext } from './ServiceContext';\nimport { PerpsMeasurementName } from '../constants/performanceMetrics';\nimport {\n DATA_LAKE_API_CONFIG,\n PERPS_CONSTANTS,\n} from '../constants/perpsConfig';\nimport { PerpsTraceNames, PerpsTraceOperations } from '../types';\nimport type { PerpsPlatformDependencies } from '../types';\nimport type { PerpsControllerMessengerBase } from '../types/messenger';\nimport { getSelectedEvmAccount } from '../utils/accountUtils';\nimport { ensureError } from '../utils/errorUtils';\n\n/**\n * DataLakeService\n *\n * Handles reporting order events to external Data Lake API.\n * Implements exponential backoff retry logic and performance tracing.\n * Stateless service that operates purely on external API calls.\n *\n * Instance-based service with constructor injection of platform dependencies.\n */\nexport class DataLakeService {\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #messenger: PerpsControllerMessengerBase;\n\n /**\n * Create a new DataLakeService instance\n *\n * @param deps - Platform dependencies for logging, metrics, etc.\n * @param messenger - Controller messenger for cross-controller communication.\n */\n constructor(\n deps: PerpsPlatformDependencies,\n messenger: PerpsControllerMessengerBase,\n ) {\n this.#deps = deps;\n this.#messenger = messenger;\n }\n\n /**\n * Get bearer token via DI authentication controller\n *\n * @returns The bearer token string for API authentication.\n */\n async #getBearerToken(): Promise<string> {\n return this.#messenger.call('AuthenticationController:getBearerToken');\n }\n\n /**\n * Report order events to data lake API with retry (non-blocking)\n * Implements exponential backoff retry logic (max 3 retries)\n *\n * @param options - Configuration object\n * @param options.action - Order action ('open' or 'close')\n * @param options.symbol - Market symbol\n * @param options.slPrice - Optional stop loss price.\n * @param options.tpPrice - Optional take profit price.\n * @param options.isTestnet - Whether this is a testnet operation (skips API call)\n * @param options.context - ServiceContext for dependencies (messenger, tracing)\n * @param options.retryCount - Internal retry counter (managed by service)\n * @param options._traceId - Internal trace ID (managed by service)\n * @returns Result object with success flag and optional error message\n */\n async reportOrder(options: {\n action: 'open' | 'close';\n symbol: string;\n slPrice?: number;\n tpPrice?: number;\n isTestnet: boolean;\n context: ServiceContext;\n retryCount?: number;\n _traceId?: string;\n }): Promise<{ success: boolean; error?: string }> {\n const {\n action,\n symbol,\n slPrice,\n tpPrice,\n isTestnet,\n context,\n retryCount = 0,\n _traceId,\n } = options;\n\n // Skip data lake reporting for testnet as the API doesn't handle testnet data\n if (isTestnet) {\n this.#deps.debugLogger.log('DataLake API: Skipping for testnet', {\n action,\n symbol,\n network: 'testnet',\n });\n return { success: true, error: 'Skipped for testnet' };\n }\n\n const MAX_RETRIES = 3;\n const RETRY_DELAY_MS = 1000;\n\n // Generate trace ID once on first call\n const traceId = _traceId ?? uuidv4();\n\n // Start trace only on first attempt\n if (retryCount === 0) {\n this.#deps.tracer.trace({\n name: PerpsTraceNames.DataLakeReport,\n op: PerpsTraceOperations.Operation,\n id: traceId,\n tags: {\n action,\n symbol,\n provider: context.tracingContext.provider,\n isTestnet: String(context.tracingContext.isTestnet),\n },\n });\n }\n\n // Log the attempt\n this.#deps.debugLogger.log('DataLake API: Starting order report', {\n action,\n symbol,\n attempt: retryCount + 1,\n maxAttempts: MAX_RETRIES + 1,\n hasStopLoss: Boolean(slPrice),\n hasTakeProfit: Boolean(tpPrice),\n timestamp: new Date().toISOString(),\n });\n\n const apiCallStartTime = this.#deps.performance.now();\n\n try {\n const token = await this.#getBearerToken();\n const evmAccount = getSelectedEvmAccount(\n this.#messenger.call(\n 'AccountTreeController:getAccountsFromSelectedAccountGroup',\n ),\n );\n\n if (!evmAccount || !token) {\n this.#deps.debugLogger.log('DataLake API: Missing requirements', {\n hasAccount: Boolean(evmAccount),\n hasToken: Boolean(token),\n action,\n symbol,\n });\n return { success: false, error: 'No account or token available' };\n }\n\n const response = await fetch(DATA_LAKE_API_CONFIG.OrdersEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n user_id: evmAccount.address,\n symbol,\n sl_price: slPrice,\n tp_price: tpPrice,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`DataLake API error: ${response.status}`);\n }\n\n // Consume response body (might be empty for 201, but good to check)\n const responseBody = await response.text();\n\n const apiCallDuration = this.#deps.performance.now() - apiCallStartTime;\n\n // Record measurement\n this.#deps.tracer.setMeasurement(\n PerpsMeasurementName.PerpsDataLakeApiCall,\n apiCallDuration,\n 'millisecond',\n );\n\n // Success logging\n this.#deps.debugLogger.log('DataLake API: Order reported successfully', {\n action,\n symbol,\n status: response.status,\n attempt: retryCount + 1,\n responseBody: responseBody || 'empty',\n duration: `${apiCallDuration.toFixed(0)}ms`,\n });\n\n // End trace on success\n this.#deps.tracer.endTrace({\n name: PerpsTraceNames.DataLakeReport,\n id: traceId,\n data: {\n success: true,\n retries: retryCount,\n },\n });\n\n return { success: true };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'Unknown error';\n\n this.#deps.logger.error(\n ensureError(error, 'DataLakeService.reportOrder'),\n {\n tags: { feature: PERPS_CONSTANTS.FeatureName },\n context: {\n name: 'DataLakeService.reportOrder',\n data: {\n action,\n symbol,\n retryCount,\n willRetry: retryCount < MAX_RETRIES,\n },\n },\n },\n );\n\n // Retry logic\n if (retryCount < MAX_RETRIES) {\n const retryDelay = RETRY_DELAY_MS * Math.pow(2, retryCount);\n this.#deps.debugLogger.log('DataLake API: Scheduling retry', {\n retryIn: `${retryDelay}ms`,\n nextAttempt: retryCount + 2,\n action,\n symbol,\n });\n\n setTimeout(() => {\n this.reportOrder({\n action,\n symbol,\n slPrice,\n tpPrice,\n isTestnet,\n context,\n retryCount: retryCount + 1,\n _traceId: traceId,\n }).catch((_retryError) => {\n this.#deps.logger.error(\n ensureError(_retryError, 'DataLakeService.reportOrder'),\n {\n tags: { feature: PERPS_CONSTANTS.FeatureName },\n context: {\n name: 'DataLakeService.reportOrder',\n data: {\n operation: 'retry',\n retryCount: retryCount + 1,\n action,\n symbol,\n },\n },\n },\n );\n });\n }, retryDelay);\n\n return { success: false, error: errorMessage };\n }\n\n this.#deps.tracer.endTrace({\n name: PerpsTraceNames.DataLakeReport,\n id: traceId,\n data: {\n success: false,\n error: errorMessage,\n totalRetries: retryCount,\n },\n });\n\n this.#deps.logger.error(\n ensureError(error, 'DataLakeService.reportOrder'),\n {\n tags: { feature: PERPS_CONSTANTS.FeatureName },\n context: {\n name: 'DataLakeService.reportOrder',\n data: { operation: 'finalFailure', action, symbol, retryCount },\n },\n },\n );\n\n return { success: false, error: errorMessage };\n }\n }\n}\n"]}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ 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");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ 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");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _DepositService_deps, _DepositService_messenger;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DepositService = void 0;
16
+ const controller_utils_1 = require("@metamask/controller-utils");
17
+ const utils_1 = require("@metamask/utils");
18
+ const accountUtils_1 = require("../utils/accountUtils.cjs");
19
+ const idUtils_1 = require("../utils/idUtils.cjs");
20
+ const transferData_1 = require("../utils/transferData.cjs");
21
+ // Temporary to avoid estimation failures due to insufficient balance
22
+ const DEPOSIT_GAS_LIMIT = (0, controller_utils_1.toHex)(100000);
23
+ /**
24
+ * DepositService
25
+ *
26
+ * Handles deposit transaction preparation and validation.
27
+ * Stateless service that prepares transaction data for TransactionController.
28
+ * Controller handles TransactionController integration and promise lifecycle.
29
+ *
30
+ * Instance-based service with constructor injection of platform dependencies
31
+ * and messenger for inter-controller communication.
32
+ */
33
+ class DepositService {
34
+ /**
35
+ * Create a new DepositService instance
36
+ *
37
+ * @param deps - Platform dependencies for logging, metrics, etc.
38
+ * @param messenger - Controller messenger for cross-controller communication.
39
+ */
40
+ constructor(deps, messenger) {
41
+ _DepositService_deps.set(this, void 0);
42
+ _DepositService_messenger.set(this, void 0);
43
+ __classPrivateFieldSet(this, _DepositService_deps, deps, "f");
44
+ __classPrivateFieldSet(this, _DepositService_messenger, messenger, "f");
45
+ }
46
+ /**
47
+ * Prepare deposit transaction for confirmation
48
+ * Extracts transaction construction logic from controller
49
+ *
50
+ * @param options - Configuration object
51
+ * @param options.provider - Active provider instance
52
+ * @returns Transaction data ready for TransactionController.addTransaction
53
+ */
54
+ async prepareTransaction(options) {
55
+ const { provider } = options;
56
+ __classPrivateFieldGet(this, _DepositService_deps, "f").debugLogger.log('DepositService: Preparing deposit transaction');
57
+ // Generate deposit request ID for tracking
58
+ const currentDepositId = (0, idUtils_1.generateDepositId)();
59
+ // Get deposit routes from provider
60
+ const depositRoutes = provider.getDepositRoutes({ isTestnet: false });
61
+ const route = depositRoutes[0];
62
+ const bridgeContractAddress = route.contractAddress;
63
+ // Generate transfer data for ERC-20 token transfer (portable, no mobile imports)
64
+ const transferData = (0, transferData_1.generateERC20TransferData)(bridgeContractAddress, '0x0');
65
+ // Get EVM account from selected account group via messenger
66
+ const evmAccount = (0, accountUtils_1.getSelectedEvmAccount)(__classPrivateFieldGet(this, _DepositService_messenger, "f").call('AccountTreeController:getAccountsFromSelectedAccountGroup'));
67
+ if (!evmAccount) {
68
+ throw new Error('No EVM-compatible account found in selected account group');
69
+ }
70
+ const accountAddress = evmAccount.address;
71
+ // Parse CAIP asset ID to extract chain ID and token address
72
+ const parsedAsset = (0, utils_1.parseCaipAssetId)(route.assetId);
73
+ const assetChainId = (0, controller_utils_1.toHex)(parsedAsset.chainId.split(':')[1]);
74
+ const tokenAddress = parsedAsset.assetReference;
75
+ // Build transaction parameters for TransactionController
76
+ const transaction = {
77
+ from: accountAddress,
78
+ to: tokenAddress,
79
+ value: '0x0',
80
+ data: transferData,
81
+ gas: DEPOSIT_GAS_LIMIT,
82
+ };
83
+ __classPrivateFieldGet(this, _DepositService_deps, "f").debugLogger.log('DepositService: Deposit transaction prepared', {
84
+ depositId: currentDepositId,
85
+ assetChainId,
86
+ from: accountAddress,
87
+ to: tokenAddress,
88
+ });
89
+ return {
90
+ transaction,
91
+ assetChainId,
92
+ currentDepositId,
93
+ };
94
+ }
95
+ }
96
+ exports.DepositService = DepositService;
97
+ _DepositService_deps = new WeakMap(), _DepositService_messenger = new WeakMap();
98
+ //# sourceMappingURL=DepositService.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepositService.cjs","sourceRoot":"","sources":["../../src/services/DepositService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iEAAmD;AACnD,2CAAmD;AASnD,4DAA8D;AAC9D,kDAAqD;AACrD,4DAAkE;AAElE,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,IAAA,wBAAK,EAAC,MAAM,CAAC,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAa,cAAc;IAKzB;;;;;OAKG;IACH,YACE,IAA+B,EAC/B,SAAuC;QAZhC,uCAAiC;QAEjC,4CAAyC;QAYhD,uBAAA,IAAI,wBAAS,IAAI,MAAA,CAAC;QAClB,uBAAA,IAAI,6BAAc,SAAS,MAAA,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CAAC,OAAoC;QAK3D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAE7B,uBAAA,IAAI,4BAAM,CAAC,WAAW,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAE5E,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,IAAA,2BAAiB,GAAE,CAAC;QAE7C,mCAAmC;QACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,qBAAqB,GAAG,KAAK,CAAC,eAAe,CAAC;QAEpD,iFAAiF;QACjF,MAAM,YAAY,GAAG,IAAA,wCAAyB,EAC5C,qBAAqB,EACrB,KAAK,CACN,CAAC;QAEF,4DAA4D;QAC5D,MAAM,UAAU,GAAG,IAAA,oCAAqB,EACtC,uBAAA,IAAI,iCAAW,CAAC,IAAI,CAClB,2DAA2D,CAC5D,CACF,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,cAAc,GAAG,UAAU,CAAC,OAAc,CAAC;QAEjD,4DAA4D;QAC5D,MAAM,WAAW,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAA,wBAAK,EAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,WAAW,CAAC,cAAqB,CAAC;QAEvD,yDAAyD;QACzD,MAAM,WAAW,GAA2B;YAC1C,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,iBAAiB;SACvB,CAAC;QAEF,uBAAA,IAAI,4BAAM,CAAC,WAAW,CAAC,GAAG,CAAC,8CAA8C,EAAE;YACzE,SAAS,EAAE,gBAAgB;YAC3B,YAAY;YACZ,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,YAAY;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,WAAW;YACX,YAAY;YACZ,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF;AA1FD,wCA0FC","sourcesContent":["import { toHex } from '@metamask/controller-utils';\nimport { parseCaipAssetId } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport type {\n PerpsProvider,\n PerpsPlatformDependencies,\n PerpsTransactionParams,\n} from '../types';\nimport type { PerpsControllerMessengerBase } from '../types/messenger';\nimport { getSelectedEvmAccount } from '../utils/accountUtils';\nimport { generateDepositId } from '../utils/idUtils';\nimport { generateERC20TransferData } from '../utils/transferData';\n\n// Temporary to avoid estimation failures due to insufficient balance\nconst DEPOSIT_GAS_LIMIT = toHex(100000);\n\n/**\n * DepositService\n *\n * Handles deposit transaction preparation and validation.\n * Stateless service that prepares transaction data for TransactionController.\n * Controller handles TransactionController integration and promise lifecycle.\n *\n * Instance-based service with constructor injection of platform dependencies\n * and messenger for inter-controller communication.\n */\nexport class DepositService {\n readonly #deps: PerpsPlatformDependencies;\n\n readonly #messenger: PerpsControllerMessengerBase;\n\n /**\n * Create a new DepositService instance\n *\n * @param deps - Platform dependencies for logging, metrics, etc.\n * @param messenger - Controller messenger for cross-controller communication.\n */\n constructor(\n deps: PerpsPlatformDependencies,\n messenger: PerpsControllerMessengerBase,\n ) {\n this.#deps = deps;\n this.#messenger = messenger;\n }\n\n /**\n * Prepare deposit transaction for confirmation\n * Extracts transaction construction logic from controller\n *\n * @param options - Configuration object\n * @param options.provider - Active provider instance\n * @returns Transaction data ready for TransactionController.addTransaction\n */\n async prepareTransaction(options: { provider: PerpsProvider }): Promise<{\n transaction: PerpsTransactionParams;\n assetChainId: Hex;\n currentDepositId: string;\n }> {\n const { provider } = options;\n\n this.#deps.debugLogger.log('DepositService: Preparing deposit transaction');\n\n // Generate deposit request ID for tracking\n const currentDepositId = generateDepositId();\n\n // Get deposit routes from provider\n const depositRoutes = provider.getDepositRoutes({ isTestnet: false });\n const route = depositRoutes[0];\n const bridgeContractAddress = route.contractAddress;\n\n // Generate transfer data for ERC-20 token transfer (portable, no mobile imports)\n const transferData = generateERC20TransferData(\n bridgeContractAddress,\n '0x0',\n );\n\n // Get EVM account from selected account group via messenger\n const evmAccount = getSelectedEvmAccount(\n this.#messenger.call(\n 'AccountTreeController:getAccountsFromSelectedAccountGroup',\n ),\n );\n if (!evmAccount) {\n throw new Error(\n 'No EVM-compatible account found in selected account group',\n );\n }\n const accountAddress = evmAccount.address as Hex;\n\n // Parse CAIP asset ID to extract chain ID and token address\n const parsedAsset = parseCaipAssetId(route.assetId);\n const assetChainId = toHex(parsedAsset.chainId.split(':')[1]);\n const tokenAddress = parsedAsset.assetReference as Hex;\n\n // Build transaction parameters for TransactionController\n const transaction: PerpsTransactionParams = {\n from: accountAddress,\n to: tokenAddress,\n value: '0x0',\n data: transferData,\n gas: DEPOSIT_GAS_LIMIT,\n };\n\n this.#deps.debugLogger.log('DepositService: Deposit transaction prepared', {\n depositId: currentDepositId,\n assetChainId,\n from: accountAddress,\n to: tokenAddress,\n });\n\n return {\n transaction,\n assetChainId,\n currentDepositId,\n };\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { PerpsProvider, PerpsPlatformDependencies, PerpsTransactionParams } from "../types/index.cjs";
3
+ import type { PerpsControllerMessengerBase } from "../types/messenger.cjs";
4
+ /**
5
+ * DepositService
6
+ *
7
+ * Handles deposit transaction preparation and validation.
8
+ * Stateless service that prepares transaction data for TransactionController.
9
+ * Controller handles TransactionController integration and promise lifecycle.
10
+ *
11
+ * Instance-based service with constructor injection of platform dependencies
12
+ * and messenger for inter-controller communication.
13
+ */
14
+ export declare class DepositService {
15
+ #private;
16
+ /**
17
+ * Create a new DepositService instance
18
+ *
19
+ * @param deps - Platform dependencies for logging, metrics, etc.
20
+ * @param messenger - Controller messenger for cross-controller communication.
21
+ */
22
+ constructor(deps: PerpsPlatformDependencies, messenger: PerpsControllerMessengerBase);
23
+ /**
24
+ * Prepare deposit transaction for confirmation
25
+ * Extracts transaction construction logic from controller
26
+ *
27
+ * @param options - Configuration object
28
+ * @param options.provider - Active provider instance
29
+ * @returns Transaction data ready for TransactionController.addTransaction
30
+ */
31
+ prepareTransaction(options: {
32
+ provider: PerpsProvider;
33
+ }): Promise<{
34
+ transaction: PerpsTransactionParams;
35
+ assetChainId: Hex;
36
+ currentDepositId: string;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=DepositService.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepositService.d.cts","sourceRoot":"","sources":["../../src/services/DepositService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACvB,2BAAiB;AAClB,OAAO,KAAK,EAAE,4BAA4B,EAAE,+BAA2B;AAQvE;;;;;;;;;GASG;AACH,qBAAa,cAAc;;IAKzB;;;;;OAKG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,4BAA4B;IAMzC;;;;;;;OAOG;IACG,kBAAkB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC;QACtE,WAAW,EAAE,sBAAsB,CAAC;QACpC,YAAY,EAAE,GAAG,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CA2DH"}
@@ -0,0 +1,39 @@
1
+ import type { Hex } from "@metamask/utils";
2
+ import type { PerpsProvider, PerpsPlatformDependencies, PerpsTransactionParams } from "../types/index.mjs";
3
+ import type { PerpsControllerMessengerBase } from "../types/messenger.mjs";
4
+ /**
5
+ * DepositService
6
+ *
7
+ * Handles deposit transaction preparation and validation.
8
+ * Stateless service that prepares transaction data for TransactionController.
9
+ * Controller handles TransactionController integration and promise lifecycle.
10
+ *
11
+ * Instance-based service with constructor injection of platform dependencies
12
+ * and messenger for inter-controller communication.
13
+ */
14
+ export declare class DepositService {
15
+ #private;
16
+ /**
17
+ * Create a new DepositService instance
18
+ *
19
+ * @param deps - Platform dependencies for logging, metrics, etc.
20
+ * @param messenger - Controller messenger for cross-controller communication.
21
+ */
22
+ constructor(deps: PerpsPlatformDependencies, messenger: PerpsControllerMessengerBase);
23
+ /**
24
+ * Prepare deposit transaction for confirmation
25
+ * Extracts transaction construction logic from controller
26
+ *
27
+ * @param options - Configuration object
28
+ * @param options.provider - Active provider instance
29
+ * @returns Transaction data ready for TransactionController.addTransaction
30
+ */
31
+ prepareTransaction(options: {
32
+ provider: PerpsProvider;
33
+ }): Promise<{
34
+ transaction: PerpsTransactionParams;
35
+ assetChainId: Hex;
36
+ currentDepositId: string;
37
+ }>;
38
+ }
39
+ //# sourceMappingURL=DepositService.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DepositService.d.mts","sourceRoot":"","sources":["../../src/services/DepositService.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C,OAAO,KAAK,EACV,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACvB,2BAAiB;AAClB,OAAO,KAAK,EAAE,4BAA4B,EAAE,+BAA2B;AAQvE;;;;;;;;;GASG;AACH,qBAAa,cAAc;;IAKzB;;;;;OAKG;gBAED,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,4BAA4B;IAMzC;;;;;;;OAOG;IACG,kBAAkB,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC;QACtE,WAAW,EAAE,sBAAsB,CAAC;QACpC,YAAY,EAAE,GAAG,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CA2DH"}