@humanode-hyperlane/rebalancer 0.0.0-stage → 27.2.2-humanode.1

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 (439) hide show
  1. package/LICENSE.md +193 -0
  2. package/README.md +297 -2
  3. package/dist/bridges/LiFiBridge.d.ts +93 -0
  4. package/dist/bridges/LiFiBridge.d.ts.map +1 -0
  5. package/dist/bridges/LiFiBridge.js +527 -0
  6. package/dist/bridges/LiFiBridge.js.map +1 -0
  7. package/dist/bridges/LiFiBridge.test.d.ts +2 -0
  8. package/dist/bridges/LiFiBridge.test.d.ts.map +1 -0
  9. package/dist/bridges/LiFiBridge.test.js +504 -0
  10. package/dist/bridges/LiFiBridge.test.js.map +1 -0
  11. package/dist/config/RebalancerConfig.d.ts +20 -0
  12. package/dist/config/RebalancerConfig.d.ts.map +1 -0
  13. package/dist/config/RebalancerConfig.js +35 -0
  14. package/dist/config/RebalancerConfig.js.map +1 -0
  15. package/dist/config/RebalancerConfig.test.d.ts +2 -0
  16. package/dist/config/RebalancerConfig.test.d.ts.map +1 -0
  17. package/dist/config/RebalancerConfig.test.js +798 -0
  18. package/dist/config/RebalancerConfig.test.js.map +1 -0
  19. package/dist/config/types.d.ts +3008 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/config/types.js +451 -0
  22. package/dist/config/types.js.map +1 -0
  23. package/dist/core/InventoryRebalancer.d.ts +201 -0
  24. package/dist/core/InventoryRebalancer.d.ts.map +1 -0
  25. package/dist/core/InventoryRebalancer.js +994 -0
  26. package/dist/core/InventoryRebalancer.js.map +1 -0
  27. package/dist/core/InventoryRebalancer.test.d.ts +2 -0
  28. package/dist/core/InventoryRebalancer.test.d.ts.map +1 -0
  29. package/dist/core/InventoryRebalancer.test.js +1511 -0
  30. package/dist/core/InventoryRebalancer.test.js.map +1 -0
  31. package/dist/core/Rebalancer.d.ts +37 -0
  32. package/dist/core/Rebalancer.d.ts.map +1 -0
  33. package/dist/core/Rebalancer.js +433 -0
  34. package/dist/core/Rebalancer.js.map +1 -0
  35. package/dist/core/Rebalancer.test.d.ts +2 -0
  36. package/dist/core/Rebalancer.test.d.ts.map +1 -0
  37. package/dist/core/Rebalancer.test.js +424 -0
  38. package/dist/core/Rebalancer.test.js.map +1 -0
  39. package/dist/core/RebalancerOrchestrator.d.ts +56 -0
  40. package/dist/core/RebalancerOrchestrator.d.ts.map +1 -0
  41. package/dist/core/RebalancerOrchestrator.js +154 -0
  42. package/dist/core/RebalancerOrchestrator.js.map +1 -0
  43. package/dist/core/RebalancerOrchestrator.test.d.ts +2 -0
  44. package/dist/core/RebalancerOrchestrator.test.d.ts.map +1 -0
  45. package/dist/core/RebalancerOrchestrator.test.js +721 -0
  46. package/dist/core/RebalancerOrchestrator.test.js.map +1 -0
  47. package/dist/core/RebalancerService.d.ts +127 -0
  48. package/dist/core/RebalancerService.d.ts.map +1 -0
  49. package/dist/core/RebalancerService.js +270 -0
  50. package/dist/core/RebalancerService.js.map +1 -0
  51. package/dist/core/RebalancerService.test.d.ts +2 -0
  52. package/dist/core/RebalancerService.test.d.ts.map +1 -0
  53. package/dist/core/RebalancerService.test.js +777 -0
  54. package/dist/core/RebalancerService.test.js.map +1 -0
  55. package/dist/e2e/collateral-deficit.e2e-test.d.ts +2 -0
  56. package/dist/e2e/collateral-deficit.e2e-test.d.ts.map +1 -0
  57. package/dist/e2e/collateral-deficit.e2e-test.js +227 -0
  58. package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -0
  59. package/dist/e2e/composite.e2e-test.d.ts +2 -0
  60. package/dist/e2e/composite.e2e-test.d.ts.map +1 -0
  61. package/dist/e2e/composite.e2e-test.js +666 -0
  62. package/dist/e2e/composite.e2e-test.js.map +1 -0
  63. package/dist/e2e/fixtures/routes.d.ts +89 -0
  64. package/dist/e2e/fixtures/routes.d.ts.map +1 -0
  65. package/dist/e2e/fixtures/routes.js +420 -0
  66. package/dist/e2e/fixtures/routes.js.map +1 -0
  67. package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts +38 -0
  68. package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts.map +1 -0
  69. package/dist/e2e/harness/BaseLocalDeploymentManager.js +144 -0
  70. package/dist/e2e/harness/BaseLocalDeploymentManager.js.map +1 -0
  71. package/dist/e2e/harness/BridgeSetup.d.ts +11 -0
  72. package/dist/e2e/harness/BridgeSetup.d.ts.map +1 -0
  73. package/dist/e2e/harness/BridgeSetup.js +50 -0
  74. package/dist/e2e/harness/BridgeSetup.js.map +1 -0
  75. package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts +13 -0
  76. package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts.map +1 -0
  77. package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js +105 -0
  78. package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js.map +1 -0
  79. package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts +11 -0
  80. package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts.map +1 -0
  81. package/dist/e2e/harness/Erc20LocalDeploymentManager.js +105 -0
  82. package/dist/e2e/harness/Erc20LocalDeploymentManager.js.map +1 -0
  83. package/dist/e2e/harness/ForkIndexer.d.ts +23 -0
  84. package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -0
  85. package/dist/e2e/harness/ForkIndexer.js +127 -0
  86. package/dist/e2e/harness/ForkIndexer.js.map +1 -0
  87. package/dist/e2e/harness/ForkIndexer.test.d.ts +2 -0
  88. package/dist/e2e/harness/ForkIndexer.test.d.ts.map +1 -0
  89. package/dist/e2e/harness/ForkIndexer.test.js +257 -0
  90. package/dist/e2e/harness/ForkIndexer.test.js.map +1 -0
  91. package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts +21 -0
  92. package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -0
  93. package/dist/e2e/harness/MixedLocalDeploymentManager.js +115 -0
  94. package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -0
  95. package/dist/e2e/harness/MockExplorerClient.d.ts +23 -0
  96. package/dist/e2e/harness/MockExplorerClient.d.ts.map +1 -0
  97. package/dist/e2e/harness/MockExplorerClient.js +57 -0
  98. package/dist/e2e/harness/MockExplorerClient.js.map +1 -0
  99. package/dist/e2e/harness/MockExternalBridge.d.ts +32 -0
  100. package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -0
  101. package/dist/e2e/harness/MockExternalBridge.js +247 -0
  102. package/dist/e2e/harness/MockExternalBridge.js.map +1 -0
  103. package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts +13 -0
  104. package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts.map +1 -0
  105. package/dist/e2e/harness/NativeLocalDeploymentManager.js +91 -0
  106. package/dist/e2e/harness/NativeLocalDeploymentManager.js.map +1 -0
  107. package/dist/e2e/harness/SnapshotHelper.d.ts +13 -0
  108. package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -0
  109. package/dist/e2e/harness/SnapshotHelper.js +36 -0
  110. package/dist/e2e/harness/SnapshotHelper.js.map +1 -0
  111. package/dist/e2e/harness/TestHelpers.d.ts +25 -0
  112. package/dist/e2e/harness/TestHelpers.d.ts.map +1 -0
  113. package/dist/e2e/harness/TestHelpers.js +103 -0
  114. package/dist/e2e/harness/TestHelpers.js.map +1 -0
  115. package/dist/e2e/harness/TestRebalancer.d.ts +85 -0
  116. package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -0
  117. package/dist/e2e/harness/TestRebalancer.js +427 -0
  118. package/dist/e2e/harness/TestRebalancer.js.map +1 -0
  119. package/dist/e2e/harness/TransferHelper.d.ts +34 -0
  120. package/dist/e2e/harness/TransferHelper.d.ts.map +1 -0
  121. package/dist/e2e/harness/TransferHelper.js +93 -0
  122. package/dist/e2e/harness/TransferHelper.js.map +1 -0
  123. package/dist/e2e/inventory-erc20-minAmount.e2e-test.d.ts +2 -0
  124. package/dist/e2e/inventory-erc20-minAmount.e2e-test.d.ts.map +1 -0
  125. package/dist/e2e/inventory-erc20-minAmount.e2e-test.js +411 -0
  126. package/dist/e2e/inventory-erc20-minAmount.e2e-test.js.map +1 -0
  127. package/dist/e2e/inventory-erc20-weighted.e2e-test.d.ts +2 -0
  128. package/dist/e2e/inventory-erc20-weighted.e2e-test.d.ts.map +1 -0
  129. package/dist/e2e/inventory-erc20-weighted.e2e-test.js +408 -0
  130. package/dist/e2e/inventory-erc20-weighted.e2e-test.js.map +1 -0
  131. package/dist/e2e/inventory-minAmount.e2e-test.d.ts +2 -0
  132. package/dist/e2e/inventory-minAmount.e2e-test.d.ts.map +1 -0
  133. package/dist/e2e/inventory-minAmount.e2e-test.js +411 -0
  134. package/dist/e2e/inventory-minAmount.e2e-test.js.map +1 -0
  135. package/dist/e2e/inventory-weighted.e2e-test.d.ts +2 -0
  136. package/dist/e2e/inventory-weighted.e2e-test.d.ts.map +1 -0
  137. package/dist/e2e/inventory-weighted.e2e-test.js +409 -0
  138. package/dist/e2e/inventory-weighted.e2e-test.js.map +1 -0
  139. package/dist/e2e/minAmount.e2e-test.d.ts +2 -0
  140. package/dist/e2e/minAmount.e2e-test.d.ts.map +1 -0
  141. package/dist/e2e/minAmount.e2e-test.js +203 -0
  142. package/dist/e2e/minAmount.e2e-test.js.map +1 -0
  143. package/dist/e2e/mixed-weighted.e2e-test.d.ts +2 -0
  144. package/dist/e2e/mixed-weighted.e2e-test.d.ts.map +1 -0
  145. package/dist/e2e/mixed-weighted.e2e-test.js +189 -0
  146. package/dist/e2e/mixed-weighted.e2e-test.js.map +1 -0
  147. package/dist/e2e/weighted.e2e-test.d.ts +2 -0
  148. package/dist/e2e/weighted.e2e-test.d.ts.map +1 -0
  149. package/dist/e2e/weighted.e2e-test.js +198 -0
  150. package/dist/e2e/weighted.e2e-test.js.map +1 -0
  151. package/dist/factories/RebalancerContextFactory.d.ts +89 -0
  152. package/dist/factories/RebalancerContextFactory.d.ts.map +1 -0
  153. package/dist/factories/RebalancerContextFactory.js +420 -0
  154. package/dist/factories/RebalancerContextFactory.js.map +1 -0
  155. package/dist/factories/RebalancerContextFactory.test.d.ts +2 -0
  156. package/dist/factories/RebalancerContextFactory.test.d.ts.map +1 -0
  157. package/dist/factories/RebalancerContextFactory.test.js +270 -0
  158. package/dist/factories/RebalancerContextFactory.test.js.map +1 -0
  159. package/dist/index.d.ts +37 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +37 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/interfaces/IExternalBridge.d.ts +103 -0
  164. package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
  165. package/dist/interfaces/IExternalBridge.js +2 -0
  166. package/dist/interfaces/IExternalBridge.js.map +1 -0
  167. package/dist/interfaces/IMetrics.d.ts +5 -0
  168. package/dist/interfaces/IMetrics.d.ts.map +1 -0
  169. package/dist/interfaces/IMetrics.js +2 -0
  170. package/dist/interfaces/IMetrics.js.map +1 -0
  171. package/dist/interfaces/IMonitor.d.ts +50 -0
  172. package/dist/interfaces/IMonitor.d.ts.map +1 -0
  173. package/dist/interfaces/IMonitor.js +14 -0
  174. package/dist/interfaces/IMonitor.js.map +1 -0
  175. package/dist/interfaces/IRebalancer.d.ts +31 -0
  176. package/dist/interfaces/IRebalancer.d.ts.map +1 -0
  177. package/dist/interfaces/IRebalancer.js +2 -0
  178. package/dist/interfaces/IRebalancer.js.map +1 -0
  179. package/dist/interfaces/IStrategy.d.ts +60 -0
  180. package/dist/interfaces/IStrategy.d.ts.map +1 -0
  181. package/dist/interfaces/IStrategy.js +13 -0
  182. package/dist/interfaces/IStrategy.js.map +1 -0
  183. package/dist/metrics/Metrics.d.ts +25 -0
  184. package/dist/metrics/Metrics.d.ts.map +1 -0
  185. package/dist/metrics/Metrics.js +164 -0
  186. package/dist/metrics/Metrics.js.map +1 -0
  187. package/dist/metrics/PriceGetter.d.ts +10 -0
  188. package/dist/metrics/PriceGetter.d.ts.map +1 -0
  189. package/dist/metrics/PriceGetter.js +41 -0
  190. package/dist/metrics/PriceGetter.js.map +1 -0
  191. package/dist/metrics/scripts/metrics.d.ts +28 -0
  192. package/dist/metrics/scripts/metrics.d.ts.map +1 -0
  193. package/dist/metrics/scripts/metrics.js +61 -0
  194. package/dist/metrics/scripts/metrics.js.map +1 -0
  195. package/dist/monitor/Monitor.d.ts +40 -0
  196. package/dist/monitor/Monitor.d.ts.map +1 -0
  197. package/dist/monitor/Monitor.js +211 -0
  198. package/dist/monitor/Monitor.js.map +1 -0
  199. package/dist/service.d.ts +3 -0
  200. package/dist/service.d.ts.map +1 -0
  201. package/dist/service.js +205 -0
  202. package/dist/service.js.map +1 -0
  203. package/dist/strategy/BaseStrategy.d.ts +86 -0
  204. package/dist/strategy/BaseStrategy.d.ts.map +1 -0
  205. package/dist/strategy/BaseStrategy.js +342 -0
  206. package/dist/strategy/BaseStrategy.js.map +1 -0
  207. package/dist/strategy/CollateralDeficitStrategy.d.ts +65 -0
  208. package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -0
  209. package/dist/strategy/CollateralDeficitStrategy.js +253 -0
  210. package/dist/strategy/CollateralDeficitStrategy.js.map +1 -0
  211. package/dist/strategy/CollateralDeficitStrategy.test.d.ts +2 -0
  212. package/dist/strategy/CollateralDeficitStrategy.test.d.ts.map +1 -0
  213. package/dist/strategy/CollateralDeficitStrategy.test.js +497 -0
  214. package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -0
  215. package/dist/strategy/CompositeStrategy.d.ts +18 -0
  216. package/dist/strategy/CompositeStrategy.d.ts.map +1 -0
  217. package/dist/strategy/CompositeStrategy.js +63 -0
  218. package/dist/strategy/CompositeStrategy.js.map +1 -0
  219. package/dist/strategy/CompositeStrategy.test.d.ts +2 -0
  220. package/dist/strategy/CompositeStrategy.test.d.ts.map +1 -0
  221. package/dist/strategy/CompositeStrategy.test.js +278 -0
  222. package/dist/strategy/CompositeStrategy.test.js.map +1 -0
  223. package/dist/strategy/MinAmountStrategy.d.ts +35 -0
  224. package/dist/strategy/MinAmountStrategy.d.ts.map +1 -0
  225. package/dist/strategy/MinAmountStrategy.js +112 -0
  226. package/dist/strategy/MinAmountStrategy.js.map +1 -0
  227. package/dist/strategy/MinAmountStrategy.test.d.ts +2 -0
  228. package/dist/strategy/MinAmountStrategy.test.d.ts.map +1 -0
  229. package/dist/strategy/MinAmountStrategy.test.js +547 -0
  230. package/dist/strategy/MinAmountStrategy.test.js.map +1 -0
  231. package/dist/strategy/StrategyFactory.d.ts +27 -0
  232. package/dist/strategy/StrategyFactory.d.ts.map +1 -0
  233. package/dist/strategy/StrategyFactory.js +79 -0
  234. package/dist/strategy/StrategyFactory.js.map +1 -0
  235. package/dist/strategy/StrategyFactory.test.d.ts +2 -0
  236. package/dist/strategy/StrategyFactory.test.d.ts.map +1 -0
  237. package/dist/strategy/StrategyFactory.test.js +81 -0
  238. package/dist/strategy/StrategyFactory.test.js.map +1 -0
  239. package/dist/strategy/WeightedStrategy.d.ts +32 -0
  240. package/dist/strategy/WeightedStrategy.d.ts.map +1 -0
  241. package/dist/strategy/WeightedStrategy.js +73 -0
  242. package/dist/strategy/WeightedStrategy.js.map +1 -0
  243. package/dist/strategy/WeightedStrategy.test.d.ts +2 -0
  244. package/dist/strategy/WeightedStrategy.test.d.ts.map +1 -0
  245. package/dist/strategy/WeightedStrategy.test.js +403 -0
  246. package/dist/strategy/WeightedStrategy.test.js.map +1 -0
  247. package/dist/strategy/index.d.ts +7 -0
  248. package/dist/strategy/index.d.ts.map +1 -0
  249. package/dist/strategy/index.js +7 -0
  250. package/dist/strategy/index.js.map +1 -0
  251. package/dist/test/helpers.d.ts +99 -0
  252. package/dist/test/helpers.d.ts.map +1 -0
  253. package/dist/test/helpers.js +311 -0
  254. package/dist/test/helpers.js.map +1 -0
  255. package/dist/test/lifiMocks.d.ts +52 -0
  256. package/dist/test/lifiMocks.d.ts.map +1 -0
  257. package/dist/test/lifiMocks.js +160 -0
  258. package/dist/test/lifiMocks.js.map +1 -0
  259. package/dist/tracking/ActionTracker.d.ts +90 -0
  260. package/dist/tracking/ActionTracker.d.ts.map +1 -0
  261. package/dist/tracking/ActionTracker.js +678 -0
  262. package/dist/tracking/ActionTracker.js.map +1 -0
  263. package/dist/tracking/ActionTracker.test.d.ts +2 -0
  264. package/dist/tracking/ActionTracker.test.d.ts.map +1 -0
  265. package/dist/tracking/ActionTracker.test.js +1351 -0
  266. package/dist/tracking/ActionTracker.test.js.map +1 -0
  267. package/dist/tracking/IActionTracker.d.ts +157 -0
  268. package/dist/tracking/IActionTracker.d.ts.map +1 -0
  269. package/dist/tracking/IActionTracker.js +2 -0
  270. package/dist/tracking/IActionTracker.js.map +1 -0
  271. package/dist/tracking/InflightContextAdapter.d.ts +18 -0
  272. package/dist/tracking/InflightContextAdapter.d.ts.map +1 -0
  273. package/dist/tracking/InflightContextAdapter.js +52 -0
  274. package/dist/tracking/InflightContextAdapter.js.map +1 -0
  275. package/dist/tracking/InflightContextAdapter.test.d.ts +2 -0
  276. package/dist/tracking/InflightContextAdapter.test.d.ts.map +1 -0
  277. package/dist/tracking/InflightContextAdapter.test.js +175 -0
  278. package/dist/tracking/InflightContextAdapter.test.js.map +1 -0
  279. package/dist/tracking/store/IStore.d.ts +41 -0
  280. package/dist/tracking/store/IStore.d.ts.map +1 -0
  281. package/dist/tracking/store/IStore.js +2 -0
  282. package/dist/tracking/store/IStore.js.map +1 -0
  283. package/dist/tracking/store/InMemoryStore.d.ts +21 -0
  284. package/dist/tracking/store/InMemoryStore.d.ts.map +1 -0
  285. package/dist/tracking/store/InMemoryStore.js +40 -0
  286. package/dist/tracking/store/InMemoryStore.js.map +1 -0
  287. package/dist/tracking/store/InMemoryStore.test.d.ts +2 -0
  288. package/dist/tracking/store/InMemoryStore.test.d.ts.map +1 -0
  289. package/dist/tracking/store/InMemoryStore.test.js +290 -0
  290. package/dist/tracking/store/InMemoryStore.test.js.map +1 -0
  291. package/dist/tracking/store/index.d.ts +3 -0
  292. package/dist/tracking/store/index.d.ts.map +1 -0
  293. package/dist/tracking/store/index.js +2 -0
  294. package/dist/tracking/store/index.js.map +1 -0
  295. package/dist/tracking/types.d.ts +77 -0
  296. package/dist/tracking/types.d.ts.map +1 -0
  297. package/dist/tracking/types.js +2 -0
  298. package/dist/tracking/types.js.map +1 -0
  299. package/dist/utils/ExplorerClient.d.ts +68 -0
  300. package/dist/utils/ExplorerClient.d.ts.map +1 -0
  301. package/dist/utils/ExplorerClient.js +324 -0
  302. package/dist/utils/ExplorerClient.js.map +1 -0
  303. package/dist/utils/ExplorerClient.test.d.ts +2 -0
  304. package/dist/utils/ExplorerClient.test.d.ts.map +1 -0
  305. package/dist/utils/ExplorerClient.test.js +261 -0
  306. package/dist/utils/ExplorerClient.test.js.map +1 -0
  307. package/dist/utils/balanceUtils.d.ts +12 -0
  308. package/dist/utils/balanceUtils.d.ts.map +1 -0
  309. package/dist/utils/balanceUtils.js +40 -0
  310. package/dist/utils/balanceUtils.js.map +1 -0
  311. package/dist/utils/balanceUtils.test.d.ts +2 -0
  312. package/dist/utils/balanceUtils.test.d.ts.map +1 -0
  313. package/dist/utils/balanceUtils.test.js +55 -0
  314. package/dist/utils/balanceUtils.test.js.map +1 -0
  315. package/dist/utils/blockTag.d.ts +14 -0
  316. package/dist/utils/blockTag.d.ts.map +1 -0
  317. package/dist/utils/blockTag.js +46 -0
  318. package/dist/utils/blockTag.js.map +1 -0
  319. package/dist/utils/bridgeUtils.d.ts +40 -0
  320. package/dist/utils/bridgeUtils.d.ts.map +1 -0
  321. package/dist/utils/bridgeUtils.js +54 -0
  322. package/dist/utils/bridgeUtils.js.map +1 -0
  323. package/dist/utils/bridgeUtils.test.d.ts +2 -0
  324. package/dist/utils/bridgeUtils.test.d.ts.map +1 -0
  325. package/dist/utils/bridgeUtils.test.js +163 -0
  326. package/dist/utils/bridgeUtils.test.js.map +1 -0
  327. package/dist/utils/errors.d.ts +4 -0
  328. package/dist/utils/errors.d.ts.map +1 -0
  329. package/dist/utils/errors.js +6 -0
  330. package/dist/utils/errors.js.map +1 -0
  331. package/dist/utils/gasEstimation.d.ts +65 -0
  332. package/dist/utils/gasEstimation.d.ts.map +1 -0
  333. package/dist/utils/gasEstimation.js +206 -0
  334. package/dist/utils/gasEstimation.js.map +1 -0
  335. package/dist/utils/solanaKeyParser.d.ts +10 -0
  336. package/dist/utils/solanaKeyParser.d.ts.map +1 -0
  337. package/dist/utils/solanaKeyParser.js +87 -0
  338. package/dist/utils/solanaKeyParser.js.map +1 -0
  339. package/dist/utils/solanaKeyParser.test.d.ts +2 -0
  340. package/dist/utils/solanaKeyParser.test.d.ts.map +1 -0
  341. package/dist/utils/solanaKeyParser.test.js +71 -0
  342. package/dist/utils/solanaKeyParser.test.js.map +1 -0
  343. package/dist/utils/tokenUtils.d.ts +38 -0
  344. package/dist/utils/tokenUtils.d.ts.map +1 -0
  345. package/dist/utils/tokenUtils.js +65 -0
  346. package/dist/utils/tokenUtils.js.map +1 -0
  347. package/dist/utils/transactionUtils.d.ts +22 -0
  348. package/dist/utils/transactionUtils.d.ts.map +1 -0
  349. package/dist/utils/transactionUtils.js +26 -0
  350. package/dist/utils/transactionUtils.js.map +1 -0
  351. package/package.json +87 -3
  352. package/src/bridges/LiFiBridge.test.ts +615 -0
  353. package/src/bridges/LiFiBridge.ts +731 -0
  354. package/src/config/RebalancerConfig.test.ts +921 -0
  355. package/src/config/RebalancerConfig.ts +63 -0
  356. package/src/config/types.ts +613 -0
  357. package/src/core/InventoryRebalancer.test.ts +1858 -0
  358. package/src/core/InventoryRebalancer.ts +1455 -0
  359. package/src/core/Rebalancer.test.ts +686 -0
  360. package/src/core/Rebalancer.ts +686 -0
  361. package/src/core/RebalancerOrchestrator.test.ts +871 -0
  362. package/src/core/RebalancerOrchestrator.ts +273 -0
  363. package/src/core/RebalancerService.test.ts +1094 -0
  364. package/src/core/RebalancerService.ts +412 -0
  365. package/src/e2e/E2E_TEST_CONVENTIONS.md +222 -0
  366. package/src/e2e/collateral-deficit.e2e-test.ts +403 -0
  367. package/src/e2e/composite.e2e-test.ts +1008 -0
  368. package/src/e2e/fixtures/routes.ts +532 -0
  369. package/src/e2e/harness/BaseLocalDeploymentManager.ts +246 -0
  370. package/src/e2e/harness/BridgeSetup.ts +95 -0
  371. package/src/e2e/harness/Erc20InventoryLocalDeploymentManager.ts +183 -0
  372. package/src/e2e/harness/Erc20LocalDeploymentManager.ts +190 -0
  373. package/src/e2e/harness/ForkIndexer.test.ts +448 -0
  374. package/src/e2e/harness/ForkIndexer.ts +183 -0
  375. package/src/e2e/harness/MixedLocalDeploymentManager.ts +196 -0
  376. package/src/e2e/harness/MockExplorerClient.ts +94 -0
  377. package/src/e2e/harness/MockExternalBridge.ts +411 -0
  378. package/src/e2e/harness/NativeLocalDeploymentManager.ts +138 -0
  379. package/src/e2e/harness/SnapshotHelper.ts +56 -0
  380. package/src/e2e/harness/TestHelpers.ts +169 -0
  381. package/src/e2e/harness/TestRebalancer.ts +758 -0
  382. package/src/e2e/harness/TransferHelper.ts +188 -0
  383. package/src/e2e/inventory-erc20-minAmount.e2e-test.ts +735 -0
  384. package/src/e2e/inventory-erc20-weighted.e2e-test.ts +733 -0
  385. package/src/e2e/inventory-minAmount.e2e-test.ts +734 -0
  386. package/src/e2e/inventory-weighted.e2e-test.ts +734 -0
  387. package/src/e2e/minAmount.e2e-test.ts +313 -0
  388. package/src/e2e/mixed-weighted.e2e-test.ts +267 -0
  389. package/src/e2e/weighted.e2e-test.ts +304 -0
  390. package/src/factories/RebalancerContextFactory.test.ts +394 -0
  391. package/src/factories/RebalancerContextFactory.ts +771 -0
  392. package/src/index.ts +125 -0
  393. package/src/interfaces/IExternalBridge.ts +117 -0
  394. package/src/interfaces/IMetrics.ts +5 -0
  395. package/src/interfaces/IMonitor.ts +71 -0
  396. package/src/interfaces/IRebalancer.ts +57 -0
  397. package/src/interfaces/IStrategy.ts +81 -0
  398. package/src/metrics/Metrics.ts +335 -0
  399. package/src/metrics/PriceGetter.ts +74 -0
  400. package/src/metrics/scripts/metrics.ts +139 -0
  401. package/src/monitor/Monitor.ts +324 -0
  402. package/src/service.ts +285 -0
  403. package/src/strategy/BaseStrategy.ts +553 -0
  404. package/src/strategy/CollateralDeficitStrategy.test.ts +728 -0
  405. package/src/strategy/CollateralDeficitStrategy.ts +421 -0
  406. package/src/strategy/CompositeStrategy.test.ts +418 -0
  407. package/src/strategy/CompositeStrategy.ts +102 -0
  408. package/src/strategy/MinAmountStrategy.test.ts +732 -0
  409. package/src/strategy/MinAmountStrategy.ts +200 -0
  410. package/src/strategy/StrategyFactory.test.ts +108 -0
  411. package/src/strategy/StrategyFactory.ts +157 -0
  412. package/src/strategy/WeightedStrategy.test.ts +529 -0
  413. package/src/strategy/WeightedStrategy.ts +126 -0
  414. package/src/strategy/index.ts +6 -0
  415. package/src/test/helpers.ts +477 -0
  416. package/src/test/lifiMocks.ts +211 -0
  417. package/src/tracking/ActionTracker.test.ts +1625 -0
  418. package/src/tracking/ActionTracker.ts +1019 -0
  419. package/src/tracking/IActionTracker.ts +213 -0
  420. package/src/tracking/InflightContextAdapter.test.ts +206 -0
  421. package/src/tracking/InflightContextAdapter.ts +75 -0
  422. package/src/tracking/store/IStore.ts +48 -0
  423. package/src/tracking/store/InMemoryStore.test.ts +338 -0
  424. package/src/tracking/store/InMemoryStore.ts +59 -0
  425. package/src/tracking/store/index.ts +2 -0
  426. package/src/tracking/types.ts +118 -0
  427. package/src/utils/ExplorerClient.test.ts +386 -0
  428. package/src/utils/ExplorerClient.ts +439 -0
  429. package/src/utils/balanceUtils.test.ts +79 -0
  430. package/src/utils/balanceUtils.ts +65 -0
  431. package/src/utils/blockTag.ts +68 -0
  432. package/src/utils/bridgeUtils.test.ts +193 -0
  433. package/src/utils/bridgeUtils.ts +101 -0
  434. package/src/utils/errors.ts +5 -0
  435. package/src/utils/gasEstimation.ts +306 -0
  436. package/src/utils/solanaKeyParser.test.ts +103 -0
  437. package/src/utils/solanaKeyParser.ts +117 -0
  438. package/src/utils/tokenUtils.ts +89 -0
  439. package/src/utils/transactionUtils.ts +41 -0
@@ -0,0 +1,335 @@
1
+ import { type Logger } from 'pino';
2
+
3
+ import {
4
+ type TokenPriceGetter,
5
+ getExtraLockboxBalance,
6
+ getExtraLockboxInfo,
7
+ getManagedLockBoxCollateralInfo,
8
+ getSealevelAtaPayerBalance,
9
+ getTokenBridgedBalance,
10
+ getXERC20Info,
11
+ startMetricsServer,
12
+ } from '@humanode-hyperlane/metrics';
13
+ import {
14
+ Token,
15
+ type TokenAmount,
16
+ TokenStandard,
17
+ TokenType,
18
+ type WarpCore,
19
+ type WarpRouteDeployConfig,
20
+ } from '@humanode-hyperlane/sdk';
21
+ import { ProtocolType, tryFn } from '@humanode-hyperlane/utils';
22
+
23
+ import { type IMetrics } from '../interfaces/IMetrics.js';
24
+ import { type MonitorEvent } from '../interfaces/IMonitor.js';
25
+ import { type StrategyRoute } from '../interfaces/IStrategy.js';
26
+
27
+ import { type PriceGetter } from './PriceGetter.js';
28
+ import {
29
+ metricsRegister,
30
+ rebalancerActionsCreatedTotal,
31
+ rebalancerExecutionAmount,
32
+ rebalancerExecutionTotal,
33
+ rebalancerIntentsCreatedTotal,
34
+ rebalancerPollingErrorsTotal,
35
+ updateManagedLockboxBalanceMetrics,
36
+ updateNativeWalletBalanceMetrics,
37
+ updateTokenBalanceMetrics,
38
+ updateXERC20LimitsMetrics,
39
+ } from './scripts/metrics.js';
40
+
41
+ export class Metrics implements IMetrics {
42
+ private readonly logger: Logger;
43
+ private readonly priceGetter: TokenPriceGetter;
44
+
45
+ constructor(
46
+ private readonly tokenPriceGetter: PriceGetter,
47
+ private readonly warpDeployConfig: WarpRouteDeployConfig | null,
48
+ private readonly warpCore: WarpCore,
49
+ private readonly warpRouteId: string,
50
+ logger: Logger,
51
+ ) {
52
+ this.logger = logger.child({ class: Metrics.name });
53
+ startMetricsServer(metricsRegister);
54
+
55
+ // Wrap PriceGetter to match TokenPriceGetter interface
56
+ this.priceGetter = {
57
+ tryGetTokenPrice: async (token: Token) => {
58
+ return this.tokenPriceGetter.tryGetTokenPrice(token);
59
+ },
60
+ };
61
+ }
62
+
63
+ recordRebalancerSuccess() {
64
+ rebalancerExecutionTotal
65
+ .labels({ warp_route_id: this.warpRouteId, succeeded: 'true' })
66
+ .inc();
67
+ }
68
+
69
+ recordRebalanceAmount(route: StrategyRoute, originTokenAmount: TokenAmount) {
70
+ rebalancerExecutionAmount
71
+ .labels({
72
+ warp_route_id: this.warpRouteId,
73
+ origin: route.origin,
74
+ destination: route.destination,
75
+ token: originTokenAmount.token.symbol,
76
+ })
77
+ .inc(originTokenAmount.getDecimalFormattedAmount());
78
+ }
79
+
80
+ recordRebalancerFailure() {
81
+ rebalancerExecutionTotal
82
+ .labels({ warp_route_id: this.warpRouteId, succeeded: 'false' })
83
+ .inc();
84
+ }
85
+
86
+ recordPollingError() {
87
+ rebalancerPollingErrorsTotal
88
+ .labels({ warp_route_id: this.warpRouteId })
89
+ .inc();
90
+ }
91
+
92
+ recordIntentCreated(route: StrategyRoute, strategy: string) {
93
+ rebalancerIntentsCreatedTotal
94
+ .labels({
95
+ warp_route_id: this.warpRouteId,
96
+ strategy,
97
+ origin: route.origin,
98
+ destination: route.destination,
99
+ })
100
+ .inc();
101
+ }
102
+
103
+ recordActionAttempt(route: StrategyRoute, succeeded: boolean) {
104
+ rebalancerActionsCreatedTotal
105
+ .labels({
106
+ warp_route_id: this.warpRouteId,
107
+ origin: route.origin,
108
+ destination: route.destination,
109
+ succeeded: String(succeeded),
110
+ })
111
+ .inc();
112
+ }
113
+
114
+ async processToken({
115
+ token,
116
+ bridgedSupply,
117
+ }: MonitorEvent['tokensInfo'][number]) {
118
+ await tryFn(
119
+ async () => {
120
+ await this.updateTokenMetrics(token, bridgedSupply);
121
+ },
122
+ 'Updating warp route metrics',
123
+ this.logger,
124
+ );
125
+ }
126
+
127
+ // Updates the metrics for a single token in a warp route.
128
+ private async updateTokenMetrics(
129
+ token: Token,
130
+ bridgedSupply?: bigint,
131
+ ): Promise<void> {
132
+ const promises = [
133
+ tryFn(
134
+ async () => {
135
+ const balanceInfo = await getTokenBridgedBalance(
136
+ this.warpCore,
137
+ token,
138
+ this.priceGetter,
139
+ this.logger,
140
+ bridgedSupply,
141
+ );
142
+
143
+ if (!balanceInfo) {
144
+ return;
145
+ }
146
+
147
+ updateTokenBalanceMetrics(
148
+ this.warpCore,
149
+ token,
150
+ balanceInfo,
151
+ this.warpRouteId,
152
+ this.logger,
153
+ );
154
+ },
155
+ 'Getting bridged balance and value',
156
+ this.logger,
157
+ ),
158
+ ];
159
+
160
+ // For Sealevel collateral and synthetic tokens, there is an
161
+ // "Associated Token Account" (ATA) rent payer that has a balance
162
+ // that's used to pay for rent for the accounts that store user balances.
163
+ // This is necessary if the recipient has never received any tokens before.
164
+ if (token.protocol === ProtocolType.Sealevel && !token.isNative()) {
165
+ promises.push(
166
+ tryFn(
167
+ async () => {
168
+ const balance = await getSealevelAtaPayerBalance(
169
+ this.warpCore,
170
+ token,
171
+ this.warpRouteId,
172
+ );
173
+
174
+ updateNativeWalletBalanceMetrics(balance, this.logger);
175
+ },
176
+ 'Getting ATA payer balance',
177
+ this.logger,
178
+ ),
179
+ );
180
+ }
181
+
182
+ if (token.isXerc20()) {
183
+ promises.push(
184
+ tryFn(
185
+ async () => {
186
+ const { limits, xERC20Address } = await getXERC20Info(
187
+ this.warpCore,
188
+ token,
189
+ );
190
+ const routerAddress = token.addressOrDenom;
191
+
192
+ updateXERC20LimitsMetrics(
193
+ token,
194
+ limits,
195
+ routerAddress,
196
+ token.standard,
197
+ xERC20Address,
198
+ this.logger,
199
+ );
200
+ },
201
+ 'Getting xERC20 limits',
202
+ this.logger,
203
+ ),
204
+ );
205
+
206
+ if (!this.warpDeployConfig) {
207
+ this.logger.warn(
208
+ {
209
+ tokenSymbol: token.symbol,
210
+ chain: token.chainName,
211
+ },
212
+ "Can't read warp deploy config, skipping extra lockboxes",
213
+ );
214
+ return;
215
+ }
216
+
217
+ // If the current token is an xERC20, we need to check if there are any extra lockboxes
218
+ const currentTokenDeployConfig = this.warpDeployConfig[token.chainName];
219
+
220
+ if (
221
+ currentTokenDeployConfig.type !== TokenType.XERC20 &&
222
+ currentTokenDeployConfig.type !== TokenType.XERC20Lockbox
223
+ ) {
224
+ this.logger.error(
225
+ {
226
+ tokenSymbol: token.symbol,
227
+ chain: token.chainName,
228
+ expectedType: [TokenType.XERC20, TokenType.XERC20Lockbox],
229
+ actualType: currentTokenDeployConfig.type,
230
+ },
231
+ 'Token type mismatch in deploy config for xERC20 token',
232
+ );
233
+ return;
234
+ }
235
+
236
+ const extraLockboxes =
237
+ currentTokenDeployConfig.xERC20?.extraBridges ?? [];
238
+
239
+ for (const lockbox of extraLockboxes) {
240
+ promises.push(
241
+ tryFn(
242
+ async () => {
243
+ const { limits, xERC20Address } = await getExtraLockboxInfo(
244
+ this.warpCore.multiProvider,
245
+ token,
246
+ lockbox.lockbox,
247
+ );
248
+
249
+ updateXERC20LimitsMetrics(
250
+ token,
251
+ limits,
252
+ lockbox.lockbox,
253
+ 'EvmManagedLockbox',
254
+ xERC20Address,
255
+ this.logger,
256
+ );
257
+ },
258
+ 'Getting extra lockbox limits',
259
+ this.logger,
260
+ ),
261
+ tryFn(
262
+ async () => {
263
+ const balance = await getExtraLockboxBalance(
264
+ this.warpCore.multiProvider,
265
+ token,
266
+ this.priceGetter,
267
+ lockbox.lockbox,
268
+ this.logger,
269
+ );
270
+
271
+ if (balance) {
272
+ const { tokenName, tokenAddress } =
273
+ await getManagedLockBoxCollateralInfo(
274
+ this.warpCore.multiProvider,
275
+ token,
276
+ lockbox.lockbox,
277
+ );
278
+
279
+ updateManagedLockboxBalanceMetrics(
280
+ this.warpCore,
281
+ token.chainName,
282
+ tokenName,
283
+ tokenAddress,
284
+ lockbox.lockbox,
285
+ balance,
286
+ this.warpRouteId,
287
+ this.logger,
288
+ );
289
+ }
290
+ },
291
+ `Updating extra lockbox balance for contract at "${lockbox.lockbox}" on chain ${token.chainName}`,
292
+ this.logger,
293
+ ),
294
+ );
295
+ }
296
+ }
297
+
298
+ await Promise.all(promises);
299
+ }
300
+
301
+ static getWarpRouteCollateralTokenSymbol(tokens: Token[]): string {
302
+ // We need to have a deterministic way to determine the symbol of the warp route
303
+ // as its used to identify the warp route in metrics. This method should support routes where:
304
+ // - All tokens have the same symbol, token standards can be all collateral, all synthetic or a mix
305
+ // - All tokens have different symbol, but there is a collateral token to break the tie, where there are multiple collateral tokens, alphabetically first is chosen
306
+ // - All tokens have different symbol, but there is no collateral token to break the tie, pick the alphabetically first symbol
307
+
308
+ // Get all unique symbols from the tokens array
309
+ const uniqueSymbols = new Set(tokens.map((token) => token.symbol));
310
+
311
+ // If all tokens have the same symbol, return that symbol
312
+ if (uniqueSymbols.size === 1) {
313
+ return tokens[0].symbol;
314
+ }
315
+
316
+ // Find all collateralized tokens
317
+ const collateralTokens = tokens.filter(
318
+ (token) =>
319
+ token.isCollateralized() ||
320
+ token.standard === TokenStandard.EvmHypXERC20Lockbox,
321
+ );
322
+
323
+ if (collateralTokens.length === 0) {
324
+ // If there are no collateralized tokens, return the alphabetically first symbol
325
+ return [...uniqueSymbols].sort()[0];
326
+ }
327
+
328
+ // if there is a single unique collateral symbol return it or
329
+ // if there are multiple, return the alphabetically first symbol
330
+ const collateralSymbols = collateralTokens.map((token) => token.symbol);
331
+ const uniqueCollateralSymbols = [...new Set(collateralSymbols)];
332
+
333
+ return uniqueCollateralSymbols.sort()[0];
334
+ }
335
+ }
@@ -0,0 +1,74 @@
1
+ import { type Logger } from 'pino';
2
+
3
+ import {
4
+ type ChainMap,
5
+ type ChainMetadata,
6
+ CoinGeckoTokenPriceGetter,
7
+ type Token,
8
+ } from '@humanode-hyperlane/sdk';
9
+
10
+ export class PriceGetter extends CoinGeckoTokenPriceGetter {
11
+ private readonly logger: Logger;
12
+
13
+ private constructor({
14
+ chainMetadata,
15
+ logger,
16
+ apiKey,
17
+ expirySeconds,
18
+ sleepMsBetweenRequests,
19
+ }: {
20
+ chainMetadata: ChainMap<ChainMetadata>;
21
+ logger: Logger;
22
+ apiKey?: string;
23
+ expirySeconds?: number;
24
+ sleepMsBetweenRequests?: number;
25
+ }) {
26
+ super({ chainMetadata, apiKey, expirySeconds, sleepMsBetweenRequests });
27
+ this.logger = logger;
28
+ }
29
+
30
+ public static create(
31
+ chainMetadata: ChainMap<ChainMetadata>,
32
+ logger: Logger,
33
+ coingeckoApiKey?: string,
34
+ expirySeconds?: number,
35
+ sleepMsBetweenRequests?: number,
36
+ ) {
37
+ return new PriceGetter({
38
+ chainMetadata,
39
+ logger,
40
+ apiKey: coingeckoApiKey,
41
+ expirySeconds,
42
+ sleepMsBetweenRequests,
43
+ });
44
+ }
45
+
46
+ // Tries to get the price of a token from CoinGecko. Returns undefined if there's no
47
+ // CoinGecko ID for the token.
48
+ async tryGetTokenPrice(token: Token): Promise<number | undefined> {
49
+ // We only get a price if the token defines a CoinGecko ID.
50
+ // This way we can ignore values of certain types of collateralized warp routes,
51
+ // e.g. Native warp routes on rollups that have been pre-funded.
52
+ const coinGeckoId = token.coinGeckoId;
53
+
54
+ if (!coinGeckoId) {
55
+ this.logger.debug(
56
+ {
57
+ tokenSymbol: token.symbol,
58
+ chain: token.chainName,
59
+ tokenAddress: token.addressOrDenom,
60
+ },
61
+ 'CoinGecko ID missing for token',
62
+ );
63
+ return undefined;
64
+ }
65
+
66
+ return this.getCoingeckoPrice(coinGeckoId);
67
+ }
68
+
69
+ async getCoingeckoPrice(coingeckoId: string): Promise<number | undefined> {
70
+ const prices = await this.getTokenPriceByIds([coingeckoId]);
71
+ if (!prices) return undefined;
72
+ return prices[0];
73
+ }
74
+ }
@@ -0,0 +1,139 @@
1
+ import { type Logger } from 'pino';
2
+ import { Counter, Registry } from 'prom-client';
3
+
4
+ import {
5
+ type NativeWalletBalance,
6
+ type WarpMetricsGauges,
7
+ type WarpRouteBalance,
8
+ type XERC20Limit,
9
+ createWarpMetricsGauges,
10
+ updateManagedLockboxBalanceMetrics as sharedUpdateManagedLockboxBalanceMetrics,
11
+ updateNativeWalletBalanceMetrics as sharedUpdateNativeWalletBalanceMetrics,
12
+ updateTokenBalanceMetrics as sharedUpdateTokenBalanceMetrics,
13
+ updateXERC20LimitsMetrics as sharedUpdateXERC20LimitsMetrics,
14
+ } from '@humanode-hyperlane/metrics';
15
+ import {
16
+ type ChainName,
17
+ type Token,
18
+ type WarpCore,
19
+ } from '@humanode-hyperlane/sdk';
20
+ import { type Address } from '@humanode-hyperlane/utils';
21
+
22
+ export const metricsRegister = new Registry();
23
+
24
+ // Create shared warp metrics gauges
25
+ const gauges: WarpMetricsGauges = createWarpMetricsGauges(metricsRegister);
26
+
27
+ // Rebalancer-specific metrics
28
+ export const rebalancerExecutionTotal = new Counter({
29
+ name: 'hyperlane_rebalancer_executions_total',
30
+ help: 'Total number of rebalance execution attempts.',
31
+ registers: [metricsRegister],
32
+ labelNames: ['warp_route_id', 'succeeded'],
33
+ });
34
+
35
+ export const rebalancerExecutionAmount = new Counter({
36
+ name: 'hyperlane_rebalancer_execution_amount',
37
+ help: 'Total amount of tokens rebalanced.',
38
+ registers: [metricsRegister],
39
+ labelNames: ['warp_route_id', 'origin', 'destination', 'token'],
40
+ });
41
+
42
+ export const rebalancerPollingErrorsTotal = new Counter({
43
+ name: 'hyperlane_rebalancer_polling_errors_total',
44
+ help: 'Total number of errors during the monitor polling phase.',
45
+ registers: [metricsRegister],
46
+ labelNames: ['warp_route_id'],
47
+ });
48
+
49
+ export const rebalancerIntentsCreatedTotal = new Counter({
50
+ name: 'hyperlane_rebalancer_intents_created_total',
51
+ help: 'Total number of rebalancing intents (routes) created.',
52
+ registers: [metricsRegister],
53
+ labelNames: ['warp_route_id', 'strategy', 'origin', 'destination'],
54
+ });
55
+
56
+ export const rebalancerActionsCreatedTotal = new Counter({
57
+ name: 'hyperlane_rebalancer_actions_created_total',
58
+ help: 'Total number of rebalancing actions (transactions) attempted.',
59
+ registers: [metricsRegister],
60
+ labelNames: ['warp_route_id', 'origin', 'destination', 'succeeded'],
61
+ });
62
+
63
+ /**
64
+ * Updates token balance metrics for a warp route token.
65
+ */
66
+ export function updateTokenBalanceMetrics(
67
+ warpCore: WarpCore,
68
+ token: Token,
69
+ balanceInfo: WarpRouteBalance,
70
+ warpRouteId: string,
71
+ logger: Logger,
72
+ ): void {
73
+ sharedUpdateTokenBalanceMetrics(
74
+ gauges,
75
+ warpCore,
76
+ token,
77
+ balanceInfo,
78
+ warpRouteId,
79
+ logger,
80
+ );
81
+ }
82
+
83
+ /**
84
+ * Updates managed lockbox balance metrics.
85
+ */
86
+ export function updateManagedLockboxBalanceMetrics(
87
+ warpCore: WarpCore,
88
+ chainName: ChainName,
89
+ tokenName: string,
90
+ tokenAddress: string,
91
+ lockBoxAddress: string,
92
+ balanceInfo: WarpRouteBalance,
93
+ warpRouteId: string,
94
+ logger: Logger,
95
+ ): void {
96
+ sharedUpdateManagedLockboxBalanceMetrics(
97
+ gauges,
98
+ warpCore,
99
+ chainName,
100
+ tokenName,
101
+ tokenAddress,
102
+ lockBoxAddress,
103
+ balanceInfo,
104
+ warpRouteId,
105
+ logger,
106
+ );
107
+ }
108
+
109
+ /**
110
+ * Updates native wallet balance metrics.
111
+ */
112
+ export function updateNativeWalletBalanceMetrics(
113
+ balance: NativeWalletBalance,
114
+ logger: Logger,
115
+ ): void {
116
+ sharedUpdateNativeWalletBalanceMetrics(gauges, balance, logger);
117
+ }
118
+
119
+ /**
120
+ * Updates xERC20 limits metrics.
121
+ */
122
+ export function updateXERC20LimitsMetrics(
123
+ token: Token,
124
+ limits: XERC20Limit,
125
+ bridgeAddress: Address,
126
+ bridgeLabel: string,
127
+ xERC20Address: Address,
128
+ logger: Logger,
129
+ ): void {
130
+ sharedUpdateXERC20LimitsMetrics(
131
+ gauges,
132
+ token,
133
+ limits,
134
+ bridgeAddress,
135
+ bridgeLabel,
136
+ xERC20Address,
137
+ logger,
138
+ );
139
+ }