@hyperlane-xyz/rebalancer 2.0.0 → 3.1.0

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 (213) hide show
  1. package/dist/bridges/LiFiBridge.d.ts +67 -0
  2. package/dist/bridges/LiFiBridge.d.ts.map +1 -0
  3. package/dist/bridges/LiFiBridge.js +386 -0
  4. package/dist/bridges/LiFiBridge.js.map +1 -0
  5. package/dist/config/RebalancerConfig.d.ts +8 -2
  6. package/dist/config/RebalancerConfig.d.ts.map +1 -1
  7. package/dist/config/RebalancerConfig.js +9 -4
  8. package/dist/config/RebalancerConfig.js.map +1 -1
  9. package/dist/config/RebalancerConfig.test.js +135 -1
  10. package/dist/config/RebalancerConfig.test.js.map +1 -1
  11. package/dist/config/types.d.ts +1023 -304
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +113 -10
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/core/InventoryRebalancer.d.ts +190 -0
  16. package/dist/core/InventoryRebalancer.d.ts.map +1 -0
  17. package/dist/core/InventoryRebalancer.js +892 -0
  18. package/dist/core/InventoryRebalancer.js.map +1 -0
  19. package/dist/core/InventoryRebalancer.test.d.ts +2 -0
  20. package/dist/core/InventoryRebalancer.test.d.ts.map +1 -0
  21. package/dist/core/InventoryRebalancer.test.js +1382 -0
  22. package/dist/core/InventoryRebalancer.test.js.map +1 -0
  23. package/dist/core/Rebalancer.d.ts +11 -4
  24. package/dist/core/Rebalancer.d.ts.map +1 -1
  25. package/dist/core/Rebalancer.js +92 -9
  26. package/dist/core/Rebalancer.js.map +1 -1
  27. package/dist/core/Rebalancer.test.js +82 -49
  28. package/dist/core/Rebalancer.test.js.map +1 -1
  29. package/dist/core/RebalancerOrchestrator.d.ts +30 -9
  30. package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
  31. package/dist/core/RebalancerOrchestrator.js +79 -71
  32. package/dist/core/RebalancerOrchestrator.js.map +1 -1
  33. package/dist/core/RebalancerOrchestrator.test.d.ts +2 -0
  34. package/dist/core/RebalancerOrchestrator.test.d.ts.map +1 -0
  35. package/dist/core/RebalancerOrchestrator.test.js +719 -0
  36. package/dist/core/RebalancerOrchestrator.test.js.map +1 -0
  37. package/dist/core/RebalancerService.d.ts +7 -3
  38. package/dist/core/RebalancerService.d.ts.map +1 -1
  39. package/dist/core/RebalancerService.js +44 -24
  40. package/dist/core/RebalancerService.js.map +1 -1
  41. package/dist/core/RebalancerService.test.js +74 -110
  42. package/dist/core/RebalancerService.test.js.map +1 -1
  43. package/dist/e2e/collateral-deficit.e2e-test.js +1 -3
  44. package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -1
  45. package/dist/e2e/composite.e2e-test.js.map +1 -1
  46. package/dist/e2e/harness/BridgeSetup.d.ts +6 -0
  47. package/dist/e2e/harness/BridgeSetup.d.ts.map +1 -1
  48. package/dist/e2e/harness/BridgeSetup.js +10 -1
  49. package/dist/e2e/harness/BridgeSetup.js.map +1 -1
  50. package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -1
  51. package/dist/e2e/harness/ForkIndexer.js +1 -0
  52. package/dist/e2e/harness/ForkIndexer.js.map +1 -1
  53. package/dist/e2e/harness/TestHelpers.d.ts.map +1 -1
  54. package/dist/e2e/harness/TestHelpers.js +1 -4
  55. package/dist/e2e/harness/TestHelpers.js.map +1 -1
  56. package/dist/e2e/harness/TestRebalancer.d.ts +1 -1
  57. package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
  58. package/dist/e2e/harness/TestRebalancer.js +9 -9
  59. package/dist/e2e/harness/TestRebalancer.js.map +1 -1
  60. package/dist/e2e/minAmount.e2e-test.js +0 -1
  61. package/dist/e2e/minAmount.e2e-test.js.map +1 -1
  62. package/dist/e2e/weighted.e2e-test.js +0 -1
  63. package/dist/e2e/weighted.e2e-test.js.map +1 -1
  64. package/dist/factories/RebalancerContextFactory.d.ts +48 -6
  65. package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
  66. package/dist/factories/RebalancerContextFactory.js +171 -17
  67. package/dist/factories/RebalancerContextFactory.js.map +1 -1
  68. package/dist/index.d.ts +6 -6
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/index.js.map +1 -1
  72. package/dist/interfaces/IExternalBridge.d.ts +101 -0
  73. package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
  74. package/dist/interfaces/IExternalBridge.js +2 -0
  75. package/dist/interfaces/IExternalBridge.js.map +1 -0
  76. package/dist/interfaces/IMonitor.d.ts +1 -0
  77. package/dist/interfaces/IMonitor.d.ts.map +1 -1
  78. package/dist/interfaces/IRebalancer.d.ts +25 -25
  79. package/dist/interfaces/IRebalancer.d.ts.map +1 -1
  80. package/dist/interfaces/IStrategy.d.ts +36 -3
  81. package/dist/interfaces/IStrategy.d.ts.map +1 -1
  82. package/dist/interfaces/IStrategy.js +12 -1
  83. package/dist/interfaces/IStrategy.js.map +1 -1
  84. package/dist/metrics/PriceGetter.js +1 -1
  85. package/dist/metrics/PriceGetter.js.map +1 -1
  86. package/dist/metrics/scripts/metrics.d.ts +3 -3
  87. package/dist/monitor/Monitor.d.ts +12 -2
  88. package/dist/monitor/Monitor.d.ts.map +1 -1
  89. package/dist/monitor/Monitor.js +46 -1
  90. package/dist/monitor/Monitor.js.map +1 -1
  91. package/dist/service.js +40 -17
  92. package/dist/service.js.map +1 -1
  93. package/dist/strategy/BaseStrategy.d.ts +12 -6
  94. package/dist/strategy/BaseStrategy.d.ts.map +1 -1
  95. package/dist/strategy/BaseStrategy.js +56 -21
  96. package/dist/strategy/BaseStrategy.js.map +1 -1
  97. package/dist/strategy/CollateralDeficitStrategy.d.ts +1 -1
  98. package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
  99. package/dist/strategy/CollateralDeficitStrategy.js +19 -11
  100. package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
  101. package/dist/strategy/CollateralDeficitStrategy.test.js +135 -2
  102. package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -1
  103. package/dist/strategy/CompositeStrategy.test.js +13 -0
  104. package/dist/strategy/CompositeStrategy.test.js.map +1 -1
  105. package/dist/strategy/MinAmountStrategy.test.js +4 -0
  106. package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
  107. package/dist/strategy/StrategyFactory.d.ts +2 -1
  108. package/dist/strategy/StrategyFactory.d.ts.map +1 -1
  109. package/dist/strategy/StrategyFactory.js +24 -8
  110. package/dist/strategy/StrategyFactory.js.map +1 -1
  111. package/dist/strategy/WeightedStrategy.test.js +6 -0
  112. package/dist/strategy/WeightedStrategy.test.js.map +1 -1
  113. package/dist/test/helpers.d.ts +8 -7
  114. package/dist/test/helpers.d.ts.map +1 -1
  115. package/dist/test/helpers.js +23 -5
  116. package/dist/test/helpers.js.map +1 -1
  117. package/dist/test/lifiMocks.d.ts +51 -0
  118. package/dist/test/lifiMocks.d.ts.map +1 -0
  119. package/dist/test/lifiMocks.js +130 -0
  120. package/dist/test/lifiMocks.js.map +1 -0
  121. package/dist/tracking/ActionTracker.d.ts +34 -1
  122. package/dist/tracking/ActionTracker.d.ts.map +1 -1
  123. package/dist/tracking/ActionTracker.js +233 -26
  124. package/dist/tracking/ActionTracker.js.map +1 -1
  125. package/dist/tracking/ActionTracker.test.js +380 -19
  126. package/dist/tracking/ActionTracker.test.js.map +1 -1
  127. package/dist/tracking/IActionTracker.d.ts +48 -3
  128. package/dist/tracking/IActionTracker.d.ts.map +1 -1
  129. package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
  130. package/dist/tracking/InflightContextAdapter.js +24 -7
  131. package/dist/tracking/InflightContextAdapter.js.map +1 -1
  132. package/dist/tracking/InflightContextAdapter.test.js +7 -4
  133. package/dist/tracking/InflightContextAdapter.test.js.map +1 -1
  134. package/dist/tracking/types.d.ts +33 -2
  135. package/dist/tracking/types.d.ts.map +1 -1
  136. package/dist/utils/ExplorerClient.d.ts +3 -1
  137. package/dist/utils/ExplorerClient.d.ts.map +1 -1
  138. package/dist/utils/ExplorerClient.js +16 -8
  139. package/dist/utils/ExplorerClient.js.map +1 -1
  140. package/dist/utils/bridgeUtils.d.ts +27 -4
  141. package/dist/utils/bridgeUtils.d.ts.map +1 -1
  142. package/dist/utils/bridgeUtils.js +38 -0
  143. package/dist/utils/bridgeUtils.js.map +1 -1
  144. package/dist/utils/bridgeUtils.test.js +9 -0
  145. package/dist/utils/bridgeUtils.test.js.map +1 -1
  146. package/dist/utils/gasEstimation.d.ts +65 -0
  147. package/dist/utils/gasEstimation.d.ts.map +1 -0
  148. package/dist/utils/gasEstimation.js +176 -0
  149. package/dist/utils/gasEstimation.js.map +1 -0
  150. package/dist/utils/tokenUtils.d.ts +9 -1
  151. package/dist/utils/tokenUtils.d.ts.map +1 -1
  152. package/dist/utils/tokenUtils.js +11 -0
  153. package/dist/utils/tokenUtils.js.map +1 -1
  154. package/package.json +9 -7
  155. package/src/bridges/LiFiBridge.ts +538 -0
  156. package/src/config/RebalancerConfig.test.ts +162 -0
  157. package/src/config/RebalancerConfig.ts +21 -3
  158. package/src/config/types.ts +147 -10
  159. package/src/core/InventoryRebalancer.test.ts +1721 -0
  160. package/src/core/InventoryRebalancer.ts +1265 -0
  161. package/src/core/Rebalancer.test.ts +84 -30
  162. package/src/core/Rebalancer.ts +144 -23
  163. package/src/core/RebalancerOrchestrator.test.ts +869 -0
  164. package/src/core/RebalancerOrchestrator.ts +146 -95
  165. package/src/core/RebalancerService.test.ts +86 -124
  166. package/src/core/RebalancerService.ts +67 -33
  167. package/src/e2e/collateral-deficit.e2e-test.ts +2 -4
  168. package/src/e2e/composite.e2e-test.ts +5 -5
  169. package/src/e2e/harness/BridgeSetup.ts +28 -1
  170. package/src/e2e/harness/ForkIndexer.ts +1 -0
  171. package/src/e2e/harness/TestHelpers.ts +1 -4
  172. package/src/e2e/harness/TestRebalancer.ts +10 -7
  173. package/src/e2e/minAmount.e2e-test.ts +1 -2
  174. package/src/e2e/weighted.e2e-test.ts +1 -2
  175. package/src/factories/RebalancerContextFactory.ts +294 -24
  176. package/src/index.ts +22 -5
  177. package/src/interfaces/IExternalBridge.ts +115 -0
  178. package/src/interfaces/IMonitor.ts +1 -0
  179. package/src/interfaces/IRebalancer.ts +45 -29
  180. package/src/interfaces/IStrategy.ts +50 -3
  181. package/src/metrics/PriceGetter.ts +1 -1
  182. package/src/monitor/Monitor.ts +81 -2
  183. package/src/service.ts +59 -18
  184. package/src/strategy/BaseStrategy.ts +77 -24
  185. package/src/strategy/CollateralDeficitStrategy.test.ts +181 -4
  186. package/src/strategy/CollateralDeficitStrategy.ts +42 -15
  187. package/src/strategy/CompositeStrategy.test.ts +13 -0
  188. package/src/strategy/MinAmountStrategy.test.ts +4 -0
  189. package/src/strategy/StrategyFactory.ts +33 -6
  190. package/src/strategy/WeightedStrategy.test.ts +6 -0
  191. package/src/test/helpers.ts +39 -14
  192. package/src/test/lifiMocks.ts +174 -0
  193. package/src/tracking/ActionTracker.test.ts +443 -19
  194. package/src/tracking/ActionTracker.ts +339 -28
  195. package/src/tracking/IActionTracker.ts +59 -3
  196. package/src/tracking/InflightContextAdapter.test.ts +7 -4
  197. package/src/tracking/InflightContextAdapter.ts +42 -9
  198. package/src/tracking/types.ts +45 -2
  199. package/src/utils/ExplorerClient.ts +27 -10
  200. package/src/utils/bridgeUtils.test.ts +9 -0
  201. package/src/utils/bridgeUtils.ts +75 -6
  202. package/src/utils/gasEstimation.ts +272 -0
  203. package/src/utils/tokenUtils.ts +12 -0
  204. package/dist/tracking/index.d.ts +0 -7
  205. package/dist/tracking/index.d.ts.map +0 -1
  206. package/dist/tracking/index.js +0 -6
  207. package/dist/tracking/index.js.map +0 -1
  208. package/dist/utils/index.d.ts +0 -5
  209. package/dist/utils/index.d.ts.map +0 -1
  210. package/dist/utils/index.js +0 -5
  211. package/dist/utils/index.js.map +0 -1
  212. package/src/tracking/index.ts +0 -36
  213. package/src/utils/index.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"ExplorerClient.js","sourceRoot":"","sources":["../../src/utils/ExplorerClient.ts"],"names":[],"mappings":"AA8CA,MAAM,OAAO,cAAc;IACI;IAA7B,YAA6B,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAExC,OAAO,CAAC,IAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IAED;;OAEG;IACK,wBAAwB,CAAC,GAAQ;QACvC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;YAC3C,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC;YACrB,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3D,CAAC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;YACtC,qBAAqB,EAAE,GAAG,CAAC,qBAAqB;YAChD,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YACtC,cAAc,EAAE,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;YAChD,gBAAgB,EAAE,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACpD,mBAAmB,EAAE,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC1D,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAC3B,MAAoC,EACpC,MAAc;QAEd,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;QAEjE,kDAAkD;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,OAAO;YACpB,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,KAAK;SACN,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,0BAA0B,CAAC,CAAC;QAExD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCV,CAAC;QAEL,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAEhE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,yCAAyC;oBACzC,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,YAAY,GAAG,8BAA8B,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;QAE5C,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAE9C,yFAAyF;QACzF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE;YAC7C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,CAAC,cAAc;gBAAE,OAAO,KAAK,CAAC;YAClC,MAAM,mBAAmB,GAAG,GAAG,CAAC,mBAAmB,EAAE,UAAU,CAAC,KAAK,CAAC;gBACpE,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC5B,OAAO,CACL,mBAAmB,EAAE,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CACpE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CACV,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,EAC/D,+BAA+B,CAChC,CAAC;QAEF,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,wBAAwB,CAC5B,MAA+B,EAC/B,MAAc;QAEd,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;QAEjE,kDAAkD;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,OAAO;YACpB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAC9C,KAAK;SACN,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,yCAAyC,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkCV,CAAC;QAEL,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACtB,4CAA4C,CAC7C,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,YAAY,GAAG,8BAA8B,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,2BAA2B,CAC/B,MAAkC,EAClC,MAAc;QAEd,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;QAE5E,kDAAkD;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC5C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvD,aAAa,EAAE,OAAO;YACtB,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACzC,KAAK;SACN,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,4CAA4C,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCV,CAAC;QAEL,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;YACpC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EACtB,+CAA+C,CAChD,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,YAAY,GAAG,8BAA8B,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;CACF"}
1
+ {"version":3,"file":"ExplorerClient.js","sourceRoot":"","sources":["../../src/utils/ExplorerClient.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,24 @@
1
1
  import type { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
2
+ import type { Address } from '@hyperlane-xyz/utils';
3
+ import type { ExternalBridgeType } from '../config/types.js';
4
+ import type { StrategyRoute } from '../interfaces/IStrategy.js';
5
+ type BaseBridgeConfig = {
6
+ bridgeMinAcceptedAmount?: string | number;
7
+ };
8
+ export type MovableCollateralBridgeConfig = BaseBridgeConfig & {
9
+ executionType: 'movableCollateral';
10
+ bridge: Address;
11
+ };
12
+ export type InventoryBridgeConfig = BaseBridgeConfig & {
13
+ executionType: 'inventory';
14
+ externalBridge: ExternalBridgeType;
15
+ };
16
+ export type BridgeConfig = MovableCollateralBridgeConfig | InventoryBridgeConfig;
17
+ export declare function isMovableCollateralConfig(config: BridgeConfig): config is MovableCollateralBridgeConfig;
18
+ export declare function isInventoryConfig(config: BridgeConfig): config is InventoryBridgeConfig;
2
19
  export type BridgeConfigWithOverride = BridgeConfig & {
3
20
  override?: ChainMap<Partial<BridgeConfig>>;
4
21
  };
5
- export type BridgeConfig = {
6
- bridge: string;
7
- bridgeMinAcceptedAmount: string | number;
8
- };
9
22
  /**
10
23
  * Gets the bridge configuration for a specific chain pair, applying any overrides
11
24
  * @param bridges The map of bridge configurations by chain
@@ -14,4 +27,14 @@ export type BridgeConfig = {
14
27
  * @returns The bridge configuration with any overrides applied
15
28
  */
16
29
  export declare function getBridgeConfig(bridges: ChainMap<BridgeConfigWithOverride>, fromChain: ChainName, toChain: ChainName): BridgeConfig;
30
+ /**
31
+ * Creates a StrategyRoute from a BridgeConfig with exhaustive type checking
32
+ * @param bridgeConfig The bridge configuration
33
+ * @param origin The origin chain
34
+ * @param destination The destination chain
35
+ * @param amount The amount to transfer
36
+ * @returns A StrategyRoute with the appropriate execution type
37
+ */
38
+ export declare function createStrategyRoute(bridgeConfig: BridgeConfig, origin: ChainName, destination: ChainName, amount: bigint): StrategyRoute;
39
+ export {};
17
40
  //# sourceMappingURL=bridgeUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAC3C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,GACjB,YAAY,CASd"}
1
+ {"version":3,"file":"bridgeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,KAAK,gBAAgB,GAAG;IACtB,uBAAuB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,gBAAgB,GAAG;IAC7D,aAAa,EAAE,mBAAmB,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,aAAa,EAAE,WAAW,CAAC;IAC3B,cAAc,EAAE,kBAAkB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GACpB,6BAA6B,GAC7B,qBAAqB,CAAC;AAE1B,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,YAAY,GACnB,MAAM,IAAI,6BAA6B,CAEzC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,GACnB,MAAM,IAAI,qBAAqB,CAEjC;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CAC5C,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAC3C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,GACjB,YAAY,CASd;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,MAAM,GACb,aAAa,CAyBf"}
@@ -1,3 +1,9 @@
1
+ export function isMovableCollateralConfig(config) {
2
+ return config.executionType === 'movableCollateral';
3
+ }
4
+ export function isInventoryConfig(config) {
5
+ return config.executionType === 'inventory';
6
+ }
1
7
  /**
2
8
  * Gets the bridge configuration for a specific chain pair, applying any overrides
3
9
  * @param bridges The map of bridge configurations by chain
@@ -13,4 +19,36 @@ export function getBridgeConfig(bridges, fromChain, toChain) {
13
19
  // Return a new object with the base config and any overrides
14
20
  return { ...baseConfig, ...routeSpecificOverrides };
15
21
  }
22
+ /**
23
+ * Creates a StrategyRoute from a BridgeConfig with exhaustive type checking
24
+ * @param bridgeConfig The bridge configuration
25
+ * @param origin The origin chain
26
+ * @param destination The destination chain
27
+ * @param amount The amount to transfer
28
+ * @returns A StrategyRoute with the appropriate execution type
29
+ */
30
+ export function createStrategyRoute(bridgeConfig, origin, destination, amount) {
31
+ switch (bridgeConfig.executionType) {
32
+ case 'inventory':
33
+ return {
34
+ origin,
35
+ destination,
36
+ amount,
37
+ executionType: 'inventory',
38
+ externalBridge: bridgeConfig.externalBridge,
39
+ };
40
+ case 'movableCollateral':
41
+ return {
42
+ origin,
43
+ destination,
44
+ amount,
45
+ executionType: 'movableCollateral',
46
+ bridge: bridgeConfig.bridge,
47
+ };
48
+ default: {
49
+ const _exhaustive = bridgeConfig;
50
+ throw new Error(`Unknown execution type: ${_exhaustive.executionType}`);
51
+ }
52
+ }
53
+ }
16
54
  //# sourceMappingURL=bridgeUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAWA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2C,EAC3C,SAAoB,EACpB,OAAkB;IAElB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,sBAAsB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IAE9D,8FAA8F;IAC9F,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;IAElD,6DAA6D;IAC7D,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAE,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,yBAAyB,CACvC,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,mBAAmB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW,CAAC;AAC9C,CAAC;AAMD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2C,EAC3C,SAAoB,EACpB,OAAkB;IAElB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,sBAAsB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IAE9D,8FAA8F;IAC9F,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;IAElD,6DAA6D;IAC7D,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAkB,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAA0B,EAC1B,MAAiB,EACjB,WAAsB,EACtB,MAAc;IAEd,QAAQ,YAAY,CAAC,aAAa,EAAE,CAAC;QACnC,KAAK,WAAW;YACd,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,WAAW;gBAC1B,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC;QACJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,YAAY,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,2BAA4B,WAA4B,CAAC,aAAa,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -4,16 +4,19 @@ describe('bridgeConfig', () => {
4
4
  it('should return the base bridge config when no overrides exist', () => {
5
5
  const bridges = {
6
6
  chain1: {
7
+ executionType: 'movableCollateral',
7
8
  bridge: '0x1234567890123456789012345678901234567890',
8
9
  bridgeMinAcceptedAmount: 1000,
9
10
  },
10
11
  chain2: {
12
+ executionType: 'movableCollateral',
11
13
  bridge: '0x0987654321098765432109876543210987654321',
12
14
  bridgeMinAcceptedAmount: 2000,
13
15
  },
14
16
  };
15
17
  const result = getBridgeConfig(bridges, 'chain1', 'chain2');
16
18
  expect(result).to.deep.equal({
19
+ executionType: 'movableCollateral',
17
20
  bridge: '0x1234567890123456789012345678901234567890',
18
21
  bridgeMinAcceptedAmount: 1000,
19
22
  });
@@ -21,6 +24,7 @@ describe('bridgeConfig', () => {
21
24
  it('should merge base config with overrides when they exist', () => {
22
25
  const bridges = {
23
26
  chain1: {
27
+ executionType: 'movableCollateral',
24
28
  bridge: '0x1234567890123456789012345678901234567890',
25
29
  bridgeMinAcceptedAmount: 1000,
26
30
  override: {
@@ -30,12 +34,14 @@ describe('bridgeConfig', () => {
30
34
  },
31
35
  },
32
36
  chain2: {
37
+ executionType: 'movableCollateral',
33
38
  bridge: '0x0987654321098765432109876543210987654321',
34
39
  bridgeMinAcceptedAmount: 2000,
35
40
  },
36
41
  };
37
42
  const result = getBridgeConfig(bridges, 'chain1', 'chain2');
38
43
  expect(result).to.deep.equal({
44
+ executionType: 'movableCollateral',
39
45
  bridge: '0x1234567890123456789012345678901234567890',
40
46
  bridgeMinAcceptedAmount: 5000,
41
47
  });
@@ -43,6 +49,7 @@ describe('bridgeConfig', () => {
43
49
  it('should handle overrides that change the bridge address', () => {
44
50
  const bridges = {
45
51
  chain1: {
52
+ executionType: 'movableCollateral',
46
53
  bridge: '0x1234567890123456789012345678901234567890',
47
54
  bridgeMinAcceptedAmount: 1000,
48
55
  override: {
@@ -52,12 +59,14 @@ describe('bridgeConfig', () => {
52
59
  },
53
60
  },
54
61
  chain2: {
62
+ executionType: 'movableCollateral',
55
63
  bridge: '0x0987654321098765432109876543210987654321',
56
64
  bridgeMinAcceptedAmount: 2000,
57
65
  },
58
66
  };
59
67
  const result = getBridgeConfig(bridges, 'chain1', 'chain2');
60
68
  expect(result).to.deep.equal({
69
+ executionType: 'movableCollateral',
61
70
  bridge: '0xABCDEF0123456789ABCDEF0123456789ABCDEF01',
62
71
  bridgeMinAcceptedAmount: 1000,
63
72
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bridgeUtils.test.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAEL,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,uBAAuB,EAAE,IAAI;qBAC9B;iBACF;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,MAAM,EAAE,4CAA4C;qBACrD;iBACF;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bridgeUtils.test.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAEL,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;YACD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,aAAa,EAAE,mBAAmB;YAClC,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,uBAAuB,EAAE,IAAI;qBAC9B;iBACF;aACF;YACD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,aAAa,EAAE,mBAAmB;YAClC,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAuC;YAClD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,MAAM,EAAE,4CAA4C;qBACrD;iBACF;aACF;YACD,MAAM,EAAE;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;aAC9B;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,aAAa,EAAE,mBAAmB;YAClC,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { Logger } from 'pino';
2
+ import { type ChainName, type InterchainGasQuote, type MultiProvider, type Token, TokenStandard } from '@hyperlane-xyz/sdk';
3
+ /**
4
+ * Fallback gas limit for transferRemote when eth_estimateGas fails.
5
+ * Conservative estimate for cross-chain token transfers.
6
+ */
7
+ export declare const FALLBACK_TRANSFER_REMOTE_GAS_LIMIT = 300000n;
8
+ /**
9
+ * Cost multiplier for minimum viable transfer.
10
+ * A transfer must be worth at least this multiple of its cost to be worthwhile.
11
+ */
12
+ export declare const MIN_VIABLE_COST_MULTIPLIER = 2n;
13
+ /**
14
+ * Transfer cost estimate for native token transfers.
15
+ * Contains all cost components needed for transfer decisions.
16
+ */
17
+ export interface TransferCostEstimate {
18
+ /** IGP cost for the Hyperlane message */
19
+ igpCost: bigint;
20
+ /** Estimated gas cost for the transferRemote transaction (with buffer) */
21
+ gasCost: bigint;
22
+ /** Token fee cost (native denom only) */
23
+ tokenFeeCost: bigint;
24
+ /** Total cost = igpCost + gasCost + tokenFeeCost */
25
+ totalCost: bigint;
26
+ /** Maximum transferable amount after reserving costs (availableInventory - totalCost) */
27
+ maxTransferable: bigint;
28
+ /** Minimum viable transfer (totalCost * MIN_VIABLE_COST_MULTIPLIER) */
29
+ minViableTransfer: bigint;
30
+ /** Gas quote from adapter (for passing to executeTransferRemote) */
31
+ gasQuote?: InterchainGasQuote;
32
+ }
33
+ /**
34
+ * Estimate gas for a transferRemote transaction using eth_estimateGas.
35
+ * Falls back to conservative estimate if estimation fails.
36
+ *
37
+ * @param originChain - Chain where transferRemote will be called
38
+ * @param destinationChain - Chain where the Hyperlane message goes
39
+ * @param amount - Amount to transfer
40
+ * @param multiProvider - MultiProvider for chain access
41
+ * @param warpCoreMultiProvider - MultiProvider from WarpCore for adapter access
42
+ * @param getTokenForChain - Function to get token for a chain
43
+ * @param inventorySigner - Address of the inventory signer
44
+ * @param logger - Logger instance
45
+ * @returns Estimated gas limit for the transaction
46
+ */
47
+ export declare function estimateTransferRemoteGas(originChain: ChainName, destinationChain: ChainName, amount: bigint, multiProvider: MultiProvider, warpCoreMultiProvider: any, getTokenForChain: (chain: ChainName) => Token | undefined, inventorySigner: string, logger: Logger): Promise<bigint>;
48
+ /**
49
+ * Calculate all transfer costs for a transferRemote operation.
50
+ * Consolidates IGP costs, gas costs, and derived values (max transferable, min viable).
51
+ *
52
+ * @param originChain - Chain to transfer from (where transferRemote is called)
53
+ * @param destinationChain - Chain to transfer to (Hyperlane message destination)
54
+ * @param availableInventory - Available token balance on origin chain
55
+ * @param requestedAmount - Requested transfer amount
56
+ * @param multiProvider - MultiProvider for chain access
57
+ * @param warpCoreMultiProvider - MultiProvider from WarpCore for adapter access
58
+ * @param getTokenForChain - Function to get token for a chain
59
+ * @param inventorySigner - Address of the inventory signer
60
+ * @param isNativeTokenStandard - Function to check if token standard is native
61
+ * @param logger - Logger instance
62
+ * @returns Cost estimate with all components and derived values
63
+ */
64
+ export declare function calculateTransferCosts(originChain: ChainName, destinationChain: ChainName, availableInventory: bigint, requestedAmount: bigint, multiProvider: MultiProvider, warpCoreMultiProvider: any, getTokenForChain: (chain: ChainName) => Token | undefined, inventorySigner: string, isNativeTokenStandard: (standard: TokenStandard) => boolean, logger: Logger): Promise<TransferCostEstimate>;
65
+ //# sourceMappingURL=gasEstimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasEstimation.d.ts","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B;;;GAGG;AACH,eAAO,MAAM,kCAAkC,UAAW,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,SAAS,EACtB,gBAAgB,EAAE,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,GAAG,EAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,GAAG,SAAS,EACzD,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAoEjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,SAAS,EACtB,gBAAgB,EAAE,SAAS,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,GAAG,EAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,GAAG,SAAS,EACzD,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,EAC3D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CAyG/B"}
@@ -0,0 +1,176 @@
1
+ import { BigNumber } from 'ethers';
2
+ import { addBufferToGasLimit, isZeroishAddress } from '@hyperlane-xyz/utils';
3
+ /**
4
+ * Fallback gas limit for transferRemote when eth_estimateGas fails.
5
+ * Conservative estimate for cross-chain token transfers.
6
+ */
7
+ export const FALLBACK_TRANSFER_REMOTE_GAS_LIMIT = 300000n;
8
+ /**
9
+ * Cost multiplier for minimum viable transfer.
10
+ * A transfer must be worth at least this multiple of its cost to be worthwhile.
11
+ */
12
+ export const MIN_VIABLE_COST_MULTIPLIER = 2n;
13
+ /**
14
+ * Estimate gas for a transferRemote transaction using eth_estimateGas.
15
+ * Falls back to conservative estimate if estimation fails.
16
+ *
17
+ * @param originChain - Chain where transferRemote will be called
18
+ * @param destinationChain - Chain where the Hyperlane message goes
19
+ * @param amount - Amount to transfer
20
+ * @param multiProvider - MultiProvider for chain access
21
+ * @param warpCoreMultiProvider - MultiProvider from WarpCore for adapter access
22
+ * @param getTokenForChain - Function to get token for a chain
23
+ * @param inventorySigner - Address of the inventory signer
24
+ * @param logger - Logger instance
25
+ * @returns Estimated gas limit for the transaction
26
+ */
27
+ export async function estimateTransferRemoteGas(originChain, destinationChain, amount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger) {
28
+ const originToken = getTokenForChain(originChain);
29
+ if (!originToken) {
30
+ logger.warn({ originChain }, 'No token found for origin chain, using fallback gas limit');
31
+ return FALLBACK_TRANSFER_REMOTE_GAS_LIMIT;
32
+ }
33
+ try {
34
+ const destinationDomain = multiProvider.getDomainId(destinationChain);
35
+ const adapter = originToken.getHypAdapter(warpCoreMultiProvider);
36
+ // Quote the IGP gas first (needed for the full transaction)
37
+ const gasQuote = await adapter.quoteTransferRemoteGas({
38
+ destination: destinationDomain,
39
+ sender: inventorySigner,
40
+ recipient: inventorySigner,
41
+ amount,
42
+ });
43
+ // Populate with minimal amount for gas estimation
44
+ // Gas cost is independent of transfer size (just a require check in _transferFromSender),
45
+ // and using minimal amount prevents eth_estimateGas from failing when account balance < requested amount
46
+ // Note: getHypAdapter returns IHypTokenAdapter<unknown> for protocol-agnostic support.
47
+ // For EVM chains (which inventory rebalancing uses), the actual type is AnnotatedEV5Transaction.
48
+ const populatedTx = (await adapter.populateTransferRemoteTx({
49
+ destination: destinationDomain,
50
+ recipient: inventorySigner,
51
+ weiAmountOrId: 1n,
52
+ interchainGas: gasQuote,
53
+ }));
54
+ // Estimate gas using the provider
55
+ const provider = multiProvider.getProvider(originChain);
56
+ const gasEstimate = await provider.estimateGas({
57
+ to: populatedTx.to,
58
+ data: populatedTx.data,
59
+ value: populatedTx.value,
60
+ from: inventorySigner,
61
+ });
62
+ const estimatedGas = BigInt(gasEstimate.toString());
63
+ logger.debug({
64
+ originChain,
65
+ destinationChain,
66
+ amount: amount.toString(),
67
+ estimatedGas: estimatedGas.toString(),
68
+ }, 'Estimated transferRemote gas via eth_estimateGas');
69
+ return estimatedGas;
70
+ }
71
+ catch (error) {
72
+ logger.warn({
73
+ originChain,
74
+ destinationChain,
75
+ error: error.message,
76
+ fallbackGas: FALLBACK_TRANSFER_REMOTE_GAS_LIMIT.toString(),
77
+ }, 'Gas estimation failed, using fallback gas limit');
78
+ return FALLBACK_TRANSFER_REMOTE_GAS_LIMIT;
79
+ }
80
+ }
81
+ /**
82
+ * Calculate all transfer costs for a transferRemote operation.
83
+ * Consolidates IGP costs, gas costs, and derived values (max transferable, min viable).
84
+ *
85
+ * @param originChain - Chain to transfer from (where transferRemote is called)
86
+ * @param destinationChain - Chain to transfer to (Hyperlane message destination)
87
+ * @param availableInventory - Available token balance on origin chain
88
+ * @param requestedAmount - Requested transfer amount
89
+ * @param multiProvider - MultiProvider for chain access
90
+ * @param warpCoreMultiProvider - MultiProvider from WarpCore for adapter access
91
+ * @param getTokenForChain - Function to get token for a chain
92
+ * @param inventorySigner - Address of the inventory signer
93
+ * @param isNativeTokenStandard - Function to check if token standard is native
94
+ * @param logger - Logger instance
95
+ * @returns Cost estimate with all components and derived values
96
+ */
97
+ export async function calculateTransferCosts(originChain, destinationChain, availableInventory, requestedAmount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, isNativeTokenStandard, logger) {
98
+ const originToken = getTokenForChain(originChain);
99
+ if (!originToken) {
100
+ throw new Error(`No token found for origin chain: ${originChain}`);
101
+ }
102
+ const destinationDomain = multiProvider.getDomainId(destinationChain);
103
+ const adapter = originToken.getHypAdapter(warpCoreMultiProvider);
104
+ // Always quote IGP for the gas quote (needed for populateTransferRemoteTx)
105
+ const gasQuote = await adapter.quoteTransferRemoteGas({
106
+ destination: destinationDomain,
107
+ sender: inventorySigner,
108
+ recipient: inventorySigner,
109
+ amount: requestedAmount,
110
+ });
111
+ // For non-native tokens, no cost reservation needed from token balance
112
+ if (!isNativeTokenStandard(originToken.standard)) {
113
+ return {
114
+ igpCost: 0n,
115
+ gasCost: 0n,
116
+ tokenFeeCost: 0n,
117
+ totalCost: 0n,
118
+ maxTransferable: availableInventory < requestedAmount
119
+ ? availableInventory
120
+ : requestedAmount,
121
+ minViableTransfer: 0n,
122
+ gasQuote,
123
+ };
124
+ }
125
+ // For native tokens, calculate costs
126
+ const igpCost = gasQuote.igpQuote.amount;
127
+ // Extract token fee cost (native denom only)
128
+ const tokenFeeCost = !gasQuote.tokenFeeQuote?.addressOrDenom ||
129
+ isZeroishAddress(gasQuote.tokenFeeQuote.addressOrDenom)
130
+ ? (gasQuote.tokenFeeQuote?.amount ?? 0n)
131
+ : 0n;
132
+ // Estimate gas with buffer
133
+ const estimatedGasLimit = await estimateTransferRemoteGas(originChain, destinationChain, requestedAmount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger);
134
+ const bufferedGasLimit = addBufferToGasLimit(BigNumber.from(estimatedGasLimit.toString()));
135
+ // Get gas price and calculate cost
136
+ const provider = multiProvider.getProvider(originChain);
137
+ const feeData = await provider.getFeeData();
138
+ const gasPrice = feeData.maxFeePerGas ?? feeData.gasPrice ?? 0n;
139
+ const gasCost = bufferedGasLimit.toBigInt() * BigInt(gasPrice.toString());
140
+ const totalCost = igpCost + gasCost + tokenFeeCost;
141
+ // Calculate derived values
142
+ let maxTransferable;
143
+ if (availableInventory <= totalCost) {
144
+ maxTransferable = 0n;
145
+ }
146
+ else {
147
+ const maxAfterReservation = availableInventory - totalCost;
148
+ maxTransferable =
149
+ maxAfterReservation < requestedAmount
150
+ ? maxAfterReservation
151
+ : requestedAmount;
152
+ }
153
+ const minViableTransfer = totalCost * MIN_VIABLE_COST_MULTIPLIER;
154
+ logger.debug({
155
+ originChain,
156
+ destinationChain,
157
+ availableInventory: availableInventory.toString(),
158
+ requestedAmount: requestedAmount.toString(),
159
+ igpCost: igpCost.toString(),
160
+ gasCost: gasCost.toString(),
161
+ tokenFeeCost: tokenFeeCost.toString(),
162
+ totalCost: totalCost.toString(),
163
+ maxTransferable: maxTransferable.toString(),
164
+ minViableTransfer: minViableTransfer.toString(),
165
+ }, 'Calculated transfer costs for native token');
166
+ return {
167
+ igpCost,
168
+ gasCost,
169
+ tokenFeeCost,
170
+ totalCost,
171
+ maxTransferable,
172
+ minViableTransfer,
173
+ gasQuote,
174
+ };
175
+ }
176
+ //# sourceMappingURL=gasEstimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gasEstimation.js","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,12 @@
1
- import { type Token } from '@hyperlane-xyz/sdk';
1
+ import { type Token, TokenStandard } from '@hyperlane-xyz/sdk';
2
+ /**
3
+ * Check if a token's balance is the same as native gas balance.
4
+ * For these tokens, we must reserve funds for IGP when calculating max transferable.
5
+ *
6
+ * @param standard - The token standard to check.
7
+ * @returns `true` if the token is a native token standard, `false` otherwise.
8
+ */
9
+ export declare function isNativeTokenStandard(standard: TokenStandard): boolean;
2
10
  /**
3
11
  * @dev This function exists because the rebalancer currently only supports a subset of collateralized token standards
4
12
  * (see `REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS` vs. all possible `TOKEN_COLLATERALIZED_STANDARDS`).
@@ -1 +1 @@
1
- {"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAiB,MAAM,oBAAoB,CAAC;AAO/D;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,KAAK,GACX,OAAO,CAKT"}
1
+ {"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO/D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAGtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,KAAK,GACX,OAAO,CAKT"}
@@ -3,6 +3,17 @@ const REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS = new Set([
3
3
  TokenStandard.EvmHypCollateral,
4
4
  TokenStandard.EvmHypNative,
5
5
  ]);
6
+ /**
7
+ * Check if a token's balance is the same as native gas balance.
8
+ * For these tokens, we must reserve funds for IGP when calculating max transferable.
9
+ *
10
+ * @param standard - The token standard to check.
11
+ * @returns `true` if the token is a native token standard, `false` otherwise.
12
+ */
13
+ export function isNativeTokenStandard(standard) {
14
+ // EvmHypNative covers all native token types including scaled variants
15
+ return standard === TokenStandard.EvmHypNative;
16
+ }
6
17
  /**
7
18
  * @dev This function exists because the rebalancer currently only supports a subset of collateralized token standards
8
19
  * (see `REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS` vs. all possible `TOKEN_COLLATERALIZED_STANDARDS`).
@@ -1 +1 @@
1
- {"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,4CAA4C,GAAG,IAAI,GAAG,CAAgB;IAC1E,aAAa,CAAC,gBAAgB;IAC9B,aAAa,CAAC,YAAY;CAC3B,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2CAA2C,CACzD,KAAY;IAEZ,OAAO,CACL,KAAK,CAAC,gBAAgB,EAAE;QACxB,4CAA4C,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,4CAA4C,GAAG,IAAI,GAAG,CAAgB;IAC1E,aAAa,CAAC,gBAAgB;IAC9B,aAAa,CAAC,YAAY;CAC3B,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,uEAAuE;IACvE,OAAO,QAAQ,KAAK,aAAa,CAAC,YAAY,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2CAA2C,CACzD,KAAY;IAEZ,OAAO,CACL,KAAK,CAAC,gBAAgB,EAAE;QACxB,4CAA4C,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperlane-xyz/rebalancer",
3
- "version": "2.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Hyperlane Warp Route Collateral Rebalancer Service",
5
5
  "keywords": [
6
6
  "blockchain",
@@ -28,6 +28,7 @@
28
28
  "@hyperlane-xyz/registry": "23.12.0",
29
29
  "@inquirer/prompts": "3.3.2",
30
30
  "@inquirer/select": "^1.0.0",
31
+ "@lifi/sdk": "^3.15.4",
31
32
  "bignumber.js": "^9.1.1",
32
33
  "ethers": "^5.8.0",
33
34
  "express": "^5.1.0",
@@ -35,14 +36,15 @@
35
36
  "pino-pretty": "^13.0.0",
36
37
  "prom-client": "^14.0.1",
37
38
  "uuid": "^10.0.0",
39
+ "viem": "^2.21.45",
38
40
  "yaml": "2.4.5",
39
41
  "zod": "^3.21.2",
40
42
  "zod-validation-error": "^3.3.0",
41
43
  "@hyperlane-xyz/core": "10.1.5",
42
- "@hyperlane-xyz/metrics": "0.1.5",
43
- "@hyperlane-xyz/provider-sdk": "1.3.3",
44
- "@hyperlane-xyz/sdk": "25.2.0",
45
- "@hyperlane-xyz/utils": "25.2.0"
44
+ "@hyperlane-xyz/metrics": "0.1.7",
45
+ "@hyperlane-xyz/provider-sdk": "1.3.5",
46
+ "@hyperlane-xyz/sdk": "25.3.1",
47
+ "@hyperlane-xyz/utils": "25.3.1"
46
48
  },
47
49
  "devDependencies": {
48
50
  "@ethersproject/constants": "*",
@@ -62,8 +64,8 @@
62
64
  "testcontainers": "11.7.0",
63
65
  "tsx": "^4.19.1",
64
66
  "typescript": "5.8.3",
65
- "@hyperlane-xyz/relayer": "1.1.0",
66
- "@hyperlane-xyz/tsconfig": "^25.2.0"
67
+ "@hyperlane-xyz/relayer": "1.1.2",
68
+ "@hyperlane-xyz/tsconfig": "^25.3.1"
67
69
  },
68
70
  "engines": {
69
71
  "node": ">=18"