@hyperlane-xyz/rebalancer 0.1.0-beta.5a8bd28ab

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 (202) hide show
  1. package/README.md +178 -0
  2. package/dist/config/RebalancerConfig.d.ts +12 -0
  3. package/dist/config/RebalancerConfig.d.ts.map +1 -0
  4. package/dist/config/RebalancerConfig.js +29 -0
  5. package/dist/config/RebalancerConfig.js.map +1 -0
  6. package/dist/config/RebalancerConfig.test.d.ts +2 -0
  7. package/dist/config/RebalancerConfig.test.d.ts.map +1 -0
  8. package/dist/config/RebalancerConfig.test.js +325 -0
  9. package/dist/config/RebalancerConfig.test.js.map +1 -0
  10. package/dist/core/Rebalancer.d.ts +23 -0
  11. package/dist/core/Rebalancer.d.ts.map +1 -0
  12. package/dist/core/Rebalancer.js +290 -0
  13. package/dist/core/Rebalancer.js.map +1 -0
  14. package/dist/core/RebalancerService.d.ts +115 -0
  15. package/dist/core/RebalancerService.d.ts.map +1 -0
  16. package/dist/core/RebalancerService.js +227 -0
  17. package/dist/core/RebalancerService.js.map +1 -0
  18. package/dist/core/WithInflightGuard.d.ts +20 -0
  19. package/dist/core/WithInflightGuard.d.ts.map +1 -0
  20. package/dist/core/WithInflightGuard.js +47 -0
  21. package/dist/core/WithInflightGuard.js.map +1 -0
  22. package/dist/core/WithInflightGuard.test.d.ts +2 -0
  23. package/dist/core/WithInflightGuard.test.d.ts.map +1 -0
  24. package/dist/core/WithInflightGuard.test.js +64 -0
  25. package/dist/core/WithInflightGuard.test.js.map +1 -0
  26. package/dist/core/WithSemaphore.d.ts +22 -0
  27. package/dist/core/WithSemaphore.d.ts.map +1 -0
  28. package/dist/core/WithSemaphore.js +67 -0
  29. package/dist/core/WithSemaphore.js.map +1 -0
  30. package/dist/core/WithSemaphore.test.d.ts +2 -0
  31. package/dist/core/WithSemaphore.test.d.ts.map +1 -0
  32. package/dist/core/WithSemaphore.test.js +83 -0
  33. package/dist/core/WithSemaphore.test.js.map +1 -0
  34. package/dist/factories/RebalancerContextFactory.d.ts +41 -0
  35. package/dist/factories/RebalancerContextFactory.d.ts.map +1 -0
  36. package/dist/factories/RebalancerContextFactory.js +115 -0
  37. package/dist/factories/RebalancerContextFactory.js.map +1 -0
  38. package/dist/index.d.ts +33 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +35 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/interfaces/IMetrics.d.ts +5 -0
  43. package/dist/interfaces/IMetrics.d.ts.map +1 -0
  44. package/dist/interfaces/IMetrics.js +2 -0
  45. package/dist/interfaces/IMetrics.js.map +1 -0
  46. package/dist/interfaces/IMonitor.d.ts +51 -0
  47. package/dist/interfaces/IMonitor.d.ts.map +1 -0
  48. package/dist/interfaces/IMonitor.js +14 -0
  49. package/dist/interfaces/IMonitor.js.map +1 -0
  50. package/dist/interfaces/IRebalancer.d.ts +15 -0
  51. package/dist/interfaces/IRebalancer.d.ts.map +1 -0
  52. package/dist/interfaces/IRebalancer.js +2 -0
  53. package/dist/interfaces/IRebalancer.js.map +1 -0
  54. package/dist/interfaces/IStrategy.d.ts +11 -0
  55. package/dist/interfaces/IStrategy.d.ts.map +1 -0
  56. package/dist/interfaces/IStrategy.js +2 -0
  57. package/dist/interfaces/IStrategy.js.map +1 -0
  58. package/dist/metrics/Metrics.d.ts +31 -0
  59. package/dist/metrics/Metrics.d.ts.map +1 -0
  60. package/dist/metrics/Metrics.js +302 -0
  61. package/dist/metrics/Metrics.js.map +1 -0
  62. package/dist/metrics/PriceGetter.d.ts +10 -0
  63. package/dist/metrics/PriceGetter.d.ts.map +1 -0
  64. package/dist/metrics/PriceGetter.js +41 -0
  65. package/dist/metrics/PriceGetter.js.map +1 -0
  66. package/dist/metrics/scripts/metrics.d.ts +14 -0
  67. package/dist/metrics/scripts/metrics.d.ts.map +1 -0
  68. package/dist/metrics/scripts/metrics.js +198 -0
  69. package/dist/metrics/scripts/metrics.js.map +1 -0
  70. package/dist/metrics/types.d.ts +24 -0
  71. package/dist/metrics/types.d.ts.map +1 -0
  72. package/dist/metrics/types.js +2 -0
  73. package/dist/metrics/types.js.map +1 -0
  74. package/dist/metrics/utils/metrics.d.ts +12 -0
  75. package/dist/metrics/utils/metrics.d.ts.map +1 -0
  76. package/dist/metrics/utils/metrics.js +28 -0
  77. package/dist/metrics/utils/metrics.js.map +1 -0
  78. package/dist/monitor/Monitor.d.ts +26 -0
  79. package/dist/monitor/Monitor.d.ts.map +1 -0
  80. package/dist/monitor/Monitor.js +116 -0
  81. package/dist/monitor/Monitor.js.map +1 -0
  82. package/dist/service.d.ts +3 -0
  83. package/dist/service.d.ts.map +1 -0
  84. package/dist/service.js +125 -0
  85. package/dist/service.js.map +1 -0
  86. package/dist/strategy/BaseStrategy.d.ts +34 -0
  87. package/dist/strategy/BaseStrategy.d.ts.map +1 -0
  88. package/dist/strategy/BaseStrategy.js +127 -0
  89. package/dist/strategy/BaseStrategy.js.map +1 -0
  90. package/dist/strategy/MinAmountStrategy.d.ts +27 -0
  91. package/dist/strategy/MinAmountStrategy.d.ts.map +1 -0
  92. package/dist/strategy/MinAmountStrategy.js +103 -0
  93. package/dist/strategy/MinAmountStrategy.js.map +1 -0
  94. package/dist/strategy/MinAmountStrategy.test.d.ts +2 -0
  95. package/dist/strategy/MinAmountStrategy.test.d.ts.map +1 -0
  96. package/dist/strategy/MinAmountStrategy.test.js +472 -0
  97. package/dist/strategy/MinAmountStrategy.test.js.map +1 -0
  98. package/dist/strategy/StrategyFactory.d.ts +16 -0
  99. package/dist/strategy/StrategyFactory.d.ts.map +1 -0
  100. package/dist/strategy/StrategyFactory.js +25 -0
  101. package/dist/strategy/StrategyFactory.js.map +1 -0
  102. package/dist/strategy/StrategyFactory.test.d.ts +2 -0
  103. package/dist/strategy/StrategyFactory.test.d.ts.map +1 -0
  104. package/dist/strategy/StrategyFactory.test.js +80 -0
  105. package/dist/strategy/StrategyFactory.test.js.map +1 -0
  106. package/dist/strategy/WeightedStrategy.d.ts +23 -0
  107. package/dist/strategy/WeightedStrategy.d.ts.map +1 -0
  108. package/dist/strategy/WeightedStrategy.js +61 -0
  109. package/dist/strategy/WeightedStrategy.js.map +1 -0
  110. package/dist/strategy/WeightedStrategy.test.d.ts +2 -0
  111. package/dist/strategy/WeightedStrategy.test.d.ts.map +1 -0
  112. package/dist/strategy/WeightedStrategy.test.js +307 -0
  113. package/dist/strategy/WeightedStrategy.test.js.map +1 -0
  114. package/dist/strategy/index.d.ts +5 -0
  115. package/dist/strategy/index.d.ts.map +1 -0
  116. package/dist/strategy/index.js +5 -0
  117. package/dist/strategy/index.js.map +1 -0
  118. package/dist/test/helpers.d.ts +8 -0
  119. package/dist/test/helpers.d.ts.map +1 -0
  120. package/dist/test/helpers.js +33 -0
  121. package/dist/test/helpers.js.map +1 -0
  122. package/dist/utils/ExplorerClient.d.ts +14 -0
  123. package/dist/utils/ExplorerClient.d.ts.map +1 -0
  124. package/dist/utils/ExplorerClient.js +82 -0
  125. package/dist/utils/ExplorerClient.js.map +1 -0
  126. package/dist/utils/balanceUtils.d.ts +13 -0
  127. package/dist/utils/balanceUtils.d.ts.map +1 -0
  128. package/dist/utils/balanceUtils.js +43 -0
  129. package/dist/utils/balanceUtils.js.map +1 -0
  130. package/dist/utils/balanceUtils.test.d.ts +2 -0
  131. package/dist/utils/balanceUtils.test.d.ts.map +1 -0
  132. package/dist/utils/balanceUtils.test.js +54 -0
  133. package/dist/utils/balanceUtils.test.js.map +1 -0
  134. package/dist/utils/bridgeUtils.d.ts +19 -0
  135. package/dist/utils/bridgeUtils.d.ts.map +1 -0
  136. package/dist/utils/bridgeUtils.js +20 -0
  137. package/dist/utils/bridgeUtils.js.map +1 -0
  138. package/dist/utils/bridgeUtils.test.d.ts +2 -0
  139. package/dist/utils/bridgeUtils.test.d.ts.map +1 -0
  140. package/dist/utils/bridgeUtils.test.js +77 -0
  141. package/dist/utils/bridgeUtils.test.js.map +1 -0
  142. package/dist/utils/errors.d.ts +4 -0
  143. package/dist/utils/errors.d.ts.map +1 -0
  144. package/dist/utils/errors.js +6 -0
  145. package/dist/utils/errors.js.map +1 -0
  146. package/dist/utils/files.d.ts +35 -0
  147. package/dist/utils/files.d.ts.map +1 -0
  148. package/dist/utils/files.js +190 -0
  149. package/dist/utils/files.js.map +1 -0
  150. package/dist/utils/generalUtils.d.ts +3 -0
  151. package/dist/utils/generalUtils.d.ts.map +1 -0
  152. package/dist/utils/generalUtils.js +9 -0
  153. package/dist/utils/generalUtils.js.map +1 -0
  154. package/dist/utils/index.d.ts +5 -0
  155. package/dist/utils/index.d.ts.map +1 -0
  156. package/dist/utils/index.js +5 -0
  157. package/dist/utils/index.js.map +1 -0
  158. package/dist/utils/tokenUtils.d.ts +14 -0
  159. package/dist/utils/tokenUtils.d.ts.map +1 -0
  160. package/dist/utils/tokenUtils.js +21 -0
  161. package/dist/utils/tokenUtils.js.map +1 -0
  162. package/package.json +70 -0
  163. package/src/config/RebalancerConfig.test.ts +388 -0
  164. package/src/config/RebalancerConfig.ts +39 -0
  165. package/src/core/Rebalancer.ts +471 -0
  166. package/src/core/RebalancerService.ts +333 -0
  167. package/src/core/WithInflightGuard.test.ts +131 -0
  168. package/src/core/WithInflightGuard.ts +67 -0
  169. package/src/core/WithSemaphore.test.ts +112 -0
  170. package/src/core/WithSemaphore.ts +92 -0
  171. package/src/factories/RebalancerContextFactory.ts +210 -0
  172. package/src/index.ts +68 -0
  173. package/src/interfaces/IMetrics.ts +5 -0
  174. package/src/interfaces/IMonitor.ts +63 -0
  175. package/src/interfaces/IRebalancer.ts +20 -0
  176. package/src/interfaces/IStrategy.ts +13 -0
  177. package/src/metrics/Metrics.ts +558 -0
  178. package/src/metrics/PriceGetter.ts +74 -0
  179. package/src/metrics/scripts/metrics.ts +298 -0
  180. package/src/metrics/types.ts +27 -0
  181. package/src/metrics/utils/metrics.ts +33 -0
  182. package/src/monitor/Monitor.ts +174 -0
  183. package/src/service.ts +154 -0
  184. package/src/strategy/BaseStrategy.ts +210 -0
  185. package/src/strategy/MinAmountStrategy.test.ts +625 -0
  186. package/src/strategy/MinAmountStrategy.ts +170 -0
  187. package/src/strategy/StrategyFactory.test.ts +109 -0
  188. package/src/strategy/StrategyFactory.ts +48 -0
  189. package/src/strategy/WeightedStrategy.test.ts +408 -0
  190. package/src/strategy/WeightedStrategy.ts +93 -0
  191. package/src/strategy/index.ts +4 -0
  192. package/src/test/helpers.ts +46 -0
  193. package/src/utils/ExplorerClient.ts +99 -0
  194. package/src/utils/balanceUtils.test.ts +74 -0
  195. package/src/utils/balanceUtils.ts +69 -0
  196. package/src/utils/bridgeUtils.test.ts +92 -0
  197. package/src/utils/bridgeUtils.ts +42 -0
  198. package/src/utils/errors.ts +5 -0
  199. package/src/utils/files.ts +276 -0
  200. package/src/utils/generalUtils.ts +13 -0
  201. package/src/utils/index.ts +4 -0
  202. package/src/utils/tokenUtils.ts +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceUtils.js","sourceRoot":"","sources":["../../src/utils/balanceUtils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2CAA2C,EAAE,MAAM,iBAAiB,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAmB,EACnB,KAAmB,EACnB,MAAc;IAEd,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;QAE3C,yDAAyD;QACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACT;gBACE,OAAO,EAAE,cAAc,CAAC,IAAI;gBAC5B,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,YAAY,EAAE,KAAK,CAAC,cAAc;aACnC,EACD,+CAA+C,CAChD,CAAC;YACF,SAAS;QACX,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,2CAA2C,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CACT;gBACE,OAAO,EAAE,cAAc,CAAC,IAAI;gBAC5B,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,WAAW,EAAE,KAAK,CAAC,MAAM;gBACzB,YAAY,EAAE,KAAK,CAAC,cAAc;aACnC,EACD,kEAAkE,CACnE,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,kEAAkE,KAAK,CAAC,cAAc,EAAE,CACzF,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;IAC5C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAgB,EAAE,GAAW;IACxD,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,yBAAyB,EAAE,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=balanceUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceUtils.test.d.ts","sourceRoot":"","sources":["../../src/utils/balanceUtils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { expect } from 'chai';
2
+ import { pino } from 'pino';
3
+ import sinon from 'sinon';
4
+ import { TokenStandard } from '@hyperlane-xyz/sdk';
5
+ import { getRawBalances } from './balanceUtils.js';
6
+ const testLogger = pino({ level: 'silent' });
7
+ describe('getRawBalances', () => {
8
+ let chains;
9
+ let token;
10
+ let tokenBridgedSupply;
11
+ let event;
12
+ beforeEach(() => {
13
+ chains = ['mainnet'];
14
+ token = {
15
+ chainName: 'mainnet',
16
+ addressOrDenom: '0xAddress',
17
+ isCollateralized: sinon.stub().returns(true),
18
+ standard: TokenStandard.EvmHypCollateral,
19
+ };
20
+ tokenBridgedSupply = 100n;
21
+ event = {
22
+ tokensInfo: [
23
+ {
24
+ token,
25
+ bridgedSupply: tokenBridgedSupply,
26
+ },
27
+ ],
28
+ };
29
+ });
30
+ it('should return the bridged supply for the token (EvmHypCollateral)', () => {
31
+ expect(getRawBalances(chains, event, testLogger)).to.deep.equal({
32
+ mainnet: tokenBridgedSupply,
33
+ });
34
+ });
35
+ it('should return the bridged supply for the token (EvmHypNative)', () => {
36
+ token.standard = TokenStandard.EvmHypNative;
37
+ expect(getRawBalances(chains, event, testLogger)).to.deep.equal({
38
+ mainnet: tokenBridgedSupply,
39
+ });
40
+ });
41
+ it('should ignore non supported token standards', () => {
42
+ token.standard = TokenStandard.EvmHypOwnerCollateral;
43
+ expect(getRawBalances(chains, event, testLogger)).to.deep.equal({});
44
+ });
45
+ it('should ignore tokens that are not in the chains list', () => {
46
+ chains = [];
47
+ expect(getRawBalances(chains, event, testLogger)).to.deep.equal({});
48
+ });
49
+ it('should throw if the bridged supply is undefined', () => {
50
+ delete event.tokensInfo[0].bridgedSupply;
51
+ expect(() => getRawBalances(chains, event, testLogger)).to.throw('bridgedSupply should not be undefined for collateralized token 0xAddress');
52
+ });
53
+ });
54
+ //# sourceMappingURL=balanceUtils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balanceUtils.test.js","sourceRoot":"","sources":["../../src/utils/balanceUtils.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAoB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIrE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE7C,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,MAAmB,CAAC;IACxB,IAAI,KAAY,CAAC;IACjB,IAAI,kBAA0B,CAAC;IAC/B,IAAI,KAAmB,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;QAErB,KAAK,GAAG;YACN,SAAS,EAAE,SAAS;YACpB,cAAc,EAAE,WAAW;YAC3B,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,aAAa,CAAC,gBAAgB;SACrB,CAAC;QAEtB,kBAAkB,GAAG,IAAI,CAAC;QAE1B,KAAK,GAAG;YACN,UAAU,EAAE;gBACV;oBACE,KAAK;oBACL,aAAa,EAAE,kBAAkB;iBAClC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC;QAE5C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,qBAAqB,CAAC;QAErD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,EAAE,CAAC;QAEZ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAEzC,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC9D,0EAA0E,CAC3E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Logger } from 'pino';
2
+ import type { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
3
+ export type BridgeConfigWithOverride = BridgeConfig & {
4
+ override?: ChainMap<Partial<BridgeConfig>>;
5
+ };
6
+ export type BridgeConfig = {
7
+ bridge: string;
8
+ bridgeMinAcceptedAmount: string | number;
9
+ bridgeIsWarp: boolean;
10
+ };
11
+ /**
12
+ * Gets the bridge configuration for a specific chain pair, applying any overrides
13
+ * @param bridges The map of bridge configurations by chain
14
+ * @param fromChain The source chain
15
+ * @param toChain The destination chain
16
+ * @returns The bridge configuration with any overrides applied
17
+ */
18
+ export declare function getBridgeConfig(bridges: ChainMap<BridgeConfigWithOverride>, fromChain: ChainName, toChain: ChainName, logger: Logger): BridgeConfig;
19
+ //# sourceMappingURL=bridgeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeUtils.d.ts","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,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;IACzC,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,EAC3C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,MAAM,GACb,YAAY,CAed"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Gets the bridge configuration for a specific chain pair, applying any overrides
3
+ * @param bridges The map of bridge configurations by chain
4
+ * @param fromChain The source chain
5
+ * @param toChain The destination chain
6
+ * @returns The bridge configuration with any overrides applied
7
+ */
8
+ export function getBridgeConfig(bridges, fromChain, toChain, logger) {
9
+ const fromConfig = bridges[fromChain];
10
+ if (!fromConfig) {
11
+ logger.error({ fromChain }, 'Bridge config not found');
12
+ throw new Error(`Bridge config not found for chain ${fromChain}`);
13
+ }
14
+ const routeSpecificOverrides = fromConfig.override?.[toChain];
15
+ // Create a new object with the properties from bridgeConfig, excluding the overrides property
16
+ const { override: _, ...baseConfig } = fromConfig;
17
+ // Return a new object with the base config and any overrides
18
+ return { ...baseConfig, ...routeSpecificOverrides };
19
+ }
20
+ //# sourceMappingURL=bridgeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2C,EAC3C,SAAoB,EACpB,OAAkB,EAClB,MAAc;IAEd,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bridgeUtils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridgeUtils.test.d.ts","sourceRoot":"","sources":["../../src/utils/bridgeUtils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,77 @@
1
+ import { expect } from 'chai';
2
+ import { pino } from 'pino';
3
+ import { getBridgeConfig, } from './bridgeUtils.js';
4
+ const testLogger = pino({ level: 'silent' });
5
+ describe('bridgeConfig', () => {
6
+ it('should return the base bridge config when no overrides exist', () => {
7
+ const bridges = {
8
+ chain1: {
9
+ bridge: '0x1234567890123456789012345678901234567890',
10
+ bridgeMinAcceptedAmount: 1000,
11
+ bridgeIsWarp: true,
12
+ },
13
+ chain2: {
14
+ bridge: '0x0987654321098765432109876543210987654321',
15
+ bridgeMinAcceptedAmount: 2000,
16
+ bridgeIsWarp: true,
17
+ },
18
+ };
19
+ const result = getBridgeConfig(bridges, 'chain1', 'chain2', testLogger);
20
+ expect(result).to.deep.equal({
21
+ bridge: '0x1234567890123456789012345678901234567890',
22
+ bridgeMinAcceptedAmount: 1000,
23
+ bridgeIsWarp: true,
24
+ });
25
+ });
26
+ it('should merge base config with overrides when they exist', () => {
27
+ const bridges = {
28
+ chain1: {
29
+ bridge: '0x1234567890123456789012345678901234567890',
30
+ bridgeMinAcceptedAmount: 1000,
31
+ bridgeIsWarp: true,
32
+ override: {
33
+ chain2: {
34
+ bridgeMinAcceptedAmount: 5000,
35
+ },
36
+ },
37
+ },
38
+ chain2: {
39
+ bridge: '0x0987654321098765432109876543210987654321',
40
+ bridgeMinAcceptedAmount: 2000,
41
+ bridgeIsWarp: true,
42
+ },
43
+ };
44
+ const result = getBridgeConfig(bridges, 'chain1', 'chain2', testLogger);
45
+ expect(result).to.deep.equal({
46
+ bridge: '0x1234567890123456789012345678901234567890',
47
+ bridgeMinAcceptedAmount: 5000,
48
+ bridgeIsWarp: true,
49
+ });
50
+ });
51
+ it('should handle overrides that change the bridge address', () => {
52
+ const bridges = {
53
+ chain1: {
54
+ bridge: '0x1234567890123456789012345678901234567890',
55
+ bridgeMinAcceptedAmount: 1000,
56
+ bridgeIsWarp: true,
57
+ override: {
58
+ chain2: {
59
+ bridge: '0xABCDEF0123456789ABCDEF0123456789ABCDEF01',
60
+ },
61
+ },
62
+ },
63
+ chain2: {
64
+ bridge: '0x0987654321098765432109876543210987654321',
65
+ bridgeMinAcceptedAmount: 2000,
66
+ bridgeIsWarp: true,
67
+ },
68
+ };
69
+ const result = getBridgeConfig(bridges, 'chain1', 'chain2', testLogger);
70
+ expect(result).to.deep.equal({
71
+ bridge: '0xABCDEF0123456789ABCDEF0123456789ABCDEF01',
72
+ bridgeMinAcceptedAmount: 1000,
73
+ bridgeIsWarp: true,
74
+ });
75
+ });
76
+ });
77
+ //# sourceMappingURL=bridgeUtils.test.js.map
@@ -0,0 +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;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAEL,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAE7C,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;gBAC7B,YAAY,EAAE,IAAI;aACnB;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,YAAY,EAAE,IAAI;aACnB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;YAC7B,YAAY,EAAE,IAAI;SACnB,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,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,uBAAuB,EAAE,IAAI;qBAC9B;iBACF;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,YAAY,EAAE,IAAI;aACnB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;YAC7B,YAAY,EAAE,IAAI;SACnB,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,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE;oBACR,MAAM,EAAE;wBACN,MAAM,EAAE,4CAA4C;qBACrD;iBACF;aACF;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,4CAA4C;gBACpD,uBAAuB,EAAE,IAAI;gBAC7B,YAAY,EAAE,IAAI;aACnB;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAExE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,MAAM,EAAE,4CAA4C;YACpD,uBAAuB,EAAE,IAAI;YAC7B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare class WrappedError extends Error {
2
+ constructor(message: string, cause?: Error);
3
+ }
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAG3C"}
@@ -0,0 +1,6 @@
1
+ export class WrappedError extends Error {
2
+ constructor(message, cause) {
3
+ super(message, cause ? { cause } : undefined);
4
+ }
5
+ }
6
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ export declare const MAX_READ_LINE_OUTPUT = 250;
2
+ export type FileFormat = 'yaml' | 'json';
3
+ export type ArtifactsFile = {
4
+ filename: string;
5
+ description: string;
6
+ };
7
+ export declare function removeEndingSlash(dirPath: string): string;
8
+ export declare function resolvePath(filePath: string): string;
9
+ export declare function isFile(filepath: string): boolean;
10
+ export declare function isDirectory(dirpath: string): boolean;
11
+ export declare function readFileAtPath(filepath: string): string;
12
+ export declare function writeFileAtPath(filepath: string, value: string): void;
13
+ export declare function readJson<T>(filepath: string): T;
14
+ export declare function tryReadJson<T>(filepath: string): T | null;
15
+ export declare function writeJson(filepath: string, obj: any): void;
16
+ export declare function mergeJson<T extends Record<string, any>>(filepath: string, obj: T): void;
17
+ export declare function readYaml<T>(filepath: string): T;
18
+ export declare function tryReadYamlAtPath<T>(filepath: string): T | null;
19
+ export declare function writeYaml(filepath: string, obj: any): void;
20
+ export declare function mergeYaml<T extends Record<string, any>>(filepath: string, obj: T): void;
21
+ export declare function readYamlOrJson<T>(filepath: string, format?: FileFormat): T;
22
+ export declare function writeYamlOrJson(filepath: string, obj: Record<string, any>, format?: FileFormat): any;
23
+ export declare function mergeYamlOrJson(filepath: string, obj: Record<string, any>, format?: FileFormat): any;
24
+ export declare function resolveFileFormat(filepath?: string, format?: FileFormat): FileFormat | undefined;
25
+ export declare function runFileSelectionStep(folderPath: string, description: string, pattern?: string): Promise<string>;
26
+ export declare function indentYamlOrJson(str: string, indentLevel: number): string;
27
+ /**
28
+ * Logs the YAML representation of an object if the number of lines is less than the specified maximum.
29
+ *
30
+ * @param obj - The object to be converted to YAML.
31
+ * @param maxLines - The maximum number of lines allowed for the YAML representation.
32
+ * @param margin - The number of spaces to use for indentation (default is 2).
33
+ */
34
+ export declare function logYamlIfUnderMaxLines(obj: any, maxLines?: number, margin?: number): void;
35
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQhD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAMzD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAE/C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAM/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,QAKnD;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,CAAC,QAQP;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,CAAC,CAE1E;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,CAAC,EAAE,UAAU,OAQpB;AAED,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,MAAM,GAAE,UAAmB,OAQ5B;AAoBD,wBAAgB,iBAAiB,CAC/B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,UAAU,GAClB,UAAU,GAAG,SAAS,CAmBxB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,mBA6BjB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMzE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,GAAG,EACR,QAAQ,GAAE,MAA6B,EACvC,MAAM,GAAE,MAAU,GACjB,IAAI,CAQN"}
@@ -0,0 +1,190 @@
1
+ import { input } from '@inquirer/prompts';
2
+ import select from '@inquirer/select';
3
+ import fs from 'fs';
4
+ import os from 'os';
5
+ import path from 'path';
6
+ import { LineCounter, parse, stringify as yamlStringify, } from 'yaml';
7
+ import { objMerge, rootLogger } from '@hyperlane-xyz/utils';
8
+ const yamlParse = (content, options) =>
9
+ // See stackoverflow.com/questions/63075256/why-does-the-npm-yaml-library-have-a-max-alias-number
10
+ parse(content, { maxAliasCount: -1, ...options });
11
+ export const MAX_READ_LINE_OUTPUT = 250;
12
+ export function removeEndingSlash(dirPath) {
13
+ if (dirPath.endsWith('/')) {
14
+ return dirPath.slice(0, -1);
15
+ }
16
+ return dirPath;
17
+ }
18
+ export function resolvePath(filePath) {
19
+ if (filePath.startsWith('~')) {
20
+ const homedir = os.homedir();
21
+ return path.join(homedir, filePath.slice(1));
22
+ }
23
+ return filePath;
24
+ }
25
+ export function isFile(filepath) {
26
+ if (!filepath)
27
+ return false;
28
+ try {
29
+ return fs.existsSync(filepath) && fs.lstatSync(filepath).isFile();
30
+ }
31
+ catch {
32
+ rootLogger.warn(`Error checking for file: ${filepath}`);
33
+ return false;
34
+ }
35
+ }
36
+ export function isDirectory(dirpath) {
37
+ if (!dirpath)
38
+ return false;
39
+ try {
40
+ return fs.existsSync(dirpath) && fs.lstatSync(dirpath).isDirectory();
41
+ }
42
+ catch {
43
+ rootLogger.warn(`Error checking for directory: ${dirpath}`);
44
+ return false;
45
+ }
46
+ }
47
+ export function readFileAtPath(filepath) {
48
+ if (!isFile(filepath)) {
49
+ throw Error(`File doesn't exist at ${filepath}`);
50
+ }
51
+ return fs.readFileSync(filepath, 'utf8');
52
+ }
53
+ export function writeFileAtPath(filepath, value) {
54
+ const dirname = path.dirname(filepath);
55
+ if (!isDirectory(dirname)) {
56
+ fs.mkdirSync(dirname, { recursive: true });
57
+ }
58
+ fs.writeFileSync(filepath, value);
59
+ }
60
+ export function readJson(filepath) {
61
+ return JSON.parse(readFileAtPath(filepath));
62
+ }
63
+ export function tryReadJson(filepath) {
64
+ try {
65
+ return readJson(filepath);
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ }
71
+ export function writeJson(filepath, obj) {
72
+ writeFileAtPath(filepath, JSON.stringify(obj, null, 2) + '\n');
73
+ }
74
+ export function mergeJson(filepath, obj) {
75
+ if (isFile(filepath)) {
76
+ const previous = readJson(filepath);
77
+ writeJson(filepath, objMerge(previous, obj));
78
+ }
79
+ else {
80
+ writeJson(filepath, obj);
81
+ }
82
+ }
83
+ export function readYaml(filepath) {
84
+ return yamlParse(readFileAtPath(filepath));
85
+ }
86
+ export function tryReadYamlAtPath(filepath) {
87
+ try {
88
+ return readYaml(filepath);
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ export function writeYaml(filepath, obj) {
95
+ writeFileAtPath(filepath, yamlStringify(obj, { indent: 2, sortMapEntries: true }) + '\n');
96
+ }
97
+ export function mergeYaml(filepath, obj) {
98
+ if (isFile(filepath)) {
99
+ const previous = readYaml(filepath);
100
+ writeYaml(filepath, objMerge(previous, obj));
101
+ }
102
+ else {
103
+ writeYaml(filepath, obj);
104
+ }
105
+ }
106
+ export function readYamlOrJson(filepath, format) {
107
+ return resolveYamlOrJsonFn(filepath, readJson, readYaml, format);
108
+ }
109
+ export function writeYamlOrJson(filepath, obj, format) {
110
+ return resolveYamlOrJsonFn(filepath, (f) => writeJson(f, obj), (f) => writeYaml(f, obj), format);
111
+ }
112
+ export function mergeYamlOrJson(filepath, obj, format = 'yaml') {
113
+ return resolveYamlOrJsonFn(filepath, (f) => mergeJson(f, obj), (f) => mergeYaml(f, obj), format);
114
+ }
115
+ function resolveYamlOrJsonFn(filepath, jsonFn, yamlFn, format) {
116
+ const fileFormat = resolveFileFormat(filepath, format);
117
+ if (!fileFormat) {
118
+ throw new Error(`Invalid file format for ${filepath}`);
119
+ }
120
+ if (fileFormat === 'json') {
121
+ return jsonFn(filepath);
122
+ }
123
+ return yamlFn(filepath);
124
+ }
125
+ export function resolveFileFormat(filepath, format) {
126
+ // early out if filepath is undefined
127
+ if (!filepath) {
128
+ return format;
129
+ }
130
+ if (format === 'json' || filepath?.endsWith('.json')) {
131
+ return 'json';
132
+ }
133
+ if (format === 'yaml' ||
134
+ filepath?.endsWith('.yaml') ||
135
+ filepath?.endsWith('.yml')) {
136
+ return 'yaml';
137
+ }
138
+ return undefined;
139
+ }
140
+ export async function runFileSelectionStep(folderPath, description, pattern) {
141
+ const noFilesErrorMessage = `No "${description}" found in ${folderPath}. Please confirm the path for "${description}". By default, the CLI writes to folders relative to where its run.`;
142
+ if (!fs.existsSync(folderPath))
143
+ throw new Error(noFilesErrorMessage);
144
+ let filenames = fs.readdirSync(folderPath);
145
+ if (pattern) {
146
+ filenames = filenames.filter((f) => f.includes(pattern));
147
+ }
148
+ if (filenames.length === 0)
149
+ throw new Error(noFilesErrorMessage);
150
+ let filename = (await select({
151
+ message: `Select ${description} file`,
152
+ choices: [
153
+ ...filenames.map((f) => ({ name: f, value: f })),
154
+ { name: '(Other file)', value: null },
155
+ ],
156
+ pageSize: 20,
157
+ }));
158
+ if (filename)
159
+ return path.join(folderPath, filename);
160
+ filename = await input({
161
+ message: `Enter ${description} filepath`,
162
+ });
163
+ if (filename)
164
+ return filename;
165
+ else
166
+ throw new Error(`No filepath entered ${description}`);
167
+ }
168
+ export function indentYamlOrJson(str, indentLevel) {
169
+ const indent = ' '.repeat(indentLevel);
170
+ return str
171
+ .split('\n')
172
+ .map((line) => indent + line)
173
+ .join('\n');
174
+ }
175
+ /**
176
+ * Logs the YAML representation of an object if the number of lines is less than the specified maximum.
177
+ *
178
+ * @param obj - The object to be converted to YAML.
179
+ * @param maxLines - The maximum number of lines allowed for the YAML representation.
180
+ * @param margin - The number of spaces to use for indentation (default is 2).
181
+ */
182
+ export function logYamlIfUnderMaxLines(obj, maxLines = MAX_READ_LINE_OUTPUT, margin = 2) {
183
+ const asYamlString = yamlStringify(obj, null, margin);
184
+ const lineCounter = new LineCounter();
185
+ yamlParse(asYamlString, { lineCounter });
186
+ if (lineCounter.lineStarts.length < maxLines) {
187
+ rootLogger.info(asYamlString);
188
+ }
189
+ }
190
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/utils/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAEL,WAAW,EAIX,KAAK,EACL,SAAS,IAAI,aAAa,GAC3B,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,SAAS,GAAG,CAChB,OAAe,EACf,OAAsE,EACtE,EAAE;AACF,iGAAiG;AACjG,KAAK,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AASxC,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,IAAI,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,IAAI,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAa;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,QAAgB;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,QAAgB;IAC7C,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,QAAQ,CAAM,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,GAAQ;IAClD,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,GAAM;IAEN,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,QAAQ,CAAI,QAAQ,CAAC,CAAC;QACvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,QAAgB;IAC1C,OAAO,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAM,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAI,QAAgB;IACnD,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,GAAQ;IAClD,eAAe,CACb,QAAQ,EACR,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAC/D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,QAAgB,EAChB,GAAM;IAEN,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,QAAQ,CAAI,QAAQ,CAAC,CAAC;QACvC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,QAAgB,EAAE,MAAmB;IACrE,OAAO,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,GAAwB,EACxB,MAAmB;IAEnB,OAAO,mBAAmB,CACxB,QAAQ,EACR,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAChC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAChC,MAAM,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,GAAwB,EACxB,SAAqB,MAAM;IAE3B,OAAO,mBAAmB,CACxB,QAAQ,EACR,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAChC,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAChC,MAAM,CACP,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,MAAW,EACX,MAAW,EACX,MAAmB;IAEnB,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAiB,EACjB,MAAmB;IAEnB,qCAAqC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IACE,MAAM,KAAK,MAAM;QACjB,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,WAAmB,EACnB,OAAgB;IAEhB,MAAM,mBAAmB,GAAG,OAAO,WAAW,cAAc,UAAU,kCAAkC,WAAW,qEAAqE,CAAC;IACzL,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAErE,IAAI,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEjE,IAAI,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC;QAC3B,OAAO,EAAE,UAAU,WAAW,OAAO;QACrC,OAAO,EAAE;YACP,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;SACtC;QACD,QAAQ,EAAE,EAAE;KACb,CAAC,CAAW,CAAC;IAEd,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAErD,QAAQ,GAAG,MAAM,KAAK,CAAC;QACrB,OAAO,EAAE,SAAS,WAAW,WAAW;KACzC,CAAC,CAAC;IAEH,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;;QACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,WAAmB;IAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;SAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAQ,EACR,WAAmB,oBAAoB,EACvC,SAAiB,CAAC;IAElB,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,SAAS,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAEzC,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Logger } from 'pino';
2
+ export declare function tryFn(fn: () => Promise<void>, context: string, logger: Logger): Promise<void>;
3
+ //# sourceMappingURL=generalUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,wBAAsB,KAAK,CACzB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,iBAOf"}
@@ -0,0 +1,9 @@
1
+ export async function tryFn(fn, context, logger) {
2
+ try {
3
+ await fn();
4
+ }
5
+ catch (error) {
6
+ logger.error({ context, err: error }, `Error in ${context}`);
7
+ }
8
+ }
9
+ //# sourceMappingURL=generalUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generalUtils.js","sourceRoot":"","sources":["../../src/utils/generalUtils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAuB,EACvB,OAAe,EACf,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAc,EAAE,EAAE,YAAY,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './balanceUtils.js';
2
+ export * from './bridgeUtils.js';
3
+ export * from './generalUtils.js';
4
+ export * from './tokenUtils.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './balanceUtils.js';
2
+ export * from './bridgeUtils.js';
3
+ export * from './generalUtils.js';
4
+ export * from './tokenUtils.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Token } from '@hyperlane-xyz/sdk';
2
+ /**
3
+ * @dev This function exists because the rebalancer currently only supports a subset of collateralized token standards
4
+ * (see `REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS` vs. all possible `TOKEN_COLLATERALIZED_STANDARDS`).
5
+ *
6
+ * @deprecated This function is conditionally deprecated. It is intended for removal once the rebalancer
7
+ * achieves full support for all collateralized token standards.
8
+ * After this condition is met and this function is removed, please use `token.isCollateralized()` as the alternative.
9
+ *
10
+ * @param token - The token to be checked for rebalancing eligibility.
11
+ * @returns `true` if the token is of a collateralized standard currently supported by the rebalancer, `false` otherwise.
12
+ */
13
+ export declare function isCollateralizedTokenEligibleForRebalancing(token: Token): boolean;
14
+ //# sourceMappingURL=tokenUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,MAAM,oBAAoB,CAAC;AAO1D;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,KAAK,GACX,OAAO,CAKT"}
@@ -0,0 +1,21 @@
1
+ import { TokenStandard } from '@hyperlane-xyz/sdk';
2
+ const REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS = new Set([
3
+ TokenStandard.EvmHypCollateral,
4
+ TokenStandard.EvmHypNative,
5
+ ]);
6
+ /**
7
+ * @dev This function exists because the rebalancer currently only supports a subset of collateralized token standards
8
+ * (see `REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS` vs. all possible `TOKEN_COLLATERALIZED_STANDARDS`).
9
+ *
10
+ * @deprecated This function is conditionally deprecated. It is intended for removal once the rebalancer
11
+ * achieves full support for all collateralized token standards.
12
+ * After this condition is met and this function is removed, please use `token.isCollateralized()` as the alternative.
13
+ *
14
+ * @param token - The token to be checked for rebalancing eligibility.
15
+ * @returns `true` if the token is of a collateralized standard currently supported by the rebalancer, `false` otherwise.
16
+ */
17
+ export function isCollateralizedTokenEligibleForRebalancing(token) {
18
+ return (token.isCollateralized() &&
19
+ REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS.has(token.standard));
20
+ }
21
+ //# sourceMappingURL=tokenUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1D,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"}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@hyperlane-xyz/rebalancer",
3
+ "version": "0.1.0-beta.5a8bd28ab",
4
+ "description": "Hyperlane Warp Route Collateral Rebalancer Service",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "bin": {
9
+ "hyperlane-rebalancer": "./dist/service.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "src"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "clean": "rm -rf dist cache",
18
+ "dev": "tsc --watch",
19
+ "lint": "eslint -c ./eslint.config.mjs ./src",
20
+ "prettier": "prettier --write ./src",
21
+ "test": "mocha --config .mocharc.json './src/**/*.test.ts' --exit",
22
+ "test:ci": "yarn test",
23
+ "start": "node dist/service.js",
24
+ "start:dev": "tsx src/service.ts"
25
+ },
26
+ "dependencies": {
27
+ "@google-cloud/pino-logging-gcp-config": "^1.0.6",
28
+ "@hyperlane-xyz/core": "10.1.0-beta.5a8bd28ab",
29
+ "@hyperlane-xyz/provider-sdk": "0.4.0-beta.5a8bd28ab",
30
+ "@hyperlane-xyz/registry": "23.7.0",
31
+ "@hyperlane-xyz/sdk": "19.12.0-beta.5a8bd28ab",
32
+ "@hyperlane-xyz/utils": "19.12.0-beta.5a8bd28ab",
33
+ "@inquirer/prompts": "3.3.2",
34
+ "@inquirer/select": "^1.3.3",
35
+ "bignumber.js": "^9.1.1",
36
+ "ethers": "^5.8.0",
37
+ "express": "^5.1.0",
38
+ "pino": "^8.19.0",
39
+ "pino-pretty": "^13.0.0",
40
+ "prom-client": "^14.0.1",
41
+ "yaml": "2.4.5",
42
+ "zod": "^3.21.2",
43
+ "zod-validation-error": "^3.3.0"
44
+ },
45
+ "devDependencies": {
46
+ "@types/express": "^5.0.3",
47
+ "@types/mocha": "^10.0.1",
48
+ "@types/node": "^18.14.5",
49
+ "chai": "^4.5.0",
50
+ "eslint": "^9.31.0",
51
+ "mocha": "^11.5.0",
52
+ "prettier": "^3.5.3",
53
+ "tsx": "^4.19.1",
54
+ "typescript": "5.3.3"
55
+ },
56
+ "engines": {
57
+ "node": ">=18"
58
+ },
59
+ "repository": "https://github.com/hyperlane-xyz/hyperlane-monorepo",
60
+ "keywords": [
61
+ "hyperlane",
62
+ "rebalancer",
63
+ "warp-route",
64
+ "collateral",
65
+ "blockchain",
66
+ "interchain"
67
+ ],
68
+ "author": "Abacus Works, Inc.",
69
+ "license": "Apache-2.0"
70
+ }