@hyperlane-xyz/core 3.11.0 → 3.12.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 (407) hide show
  1. package/README.md +18 -2
  2. package/contracts/avs/ECDSAServiceManagerBase.sol +273 -0
  3. package/contracts/avs/ECDSAStakeRegistry.sol +536 -0
  4. package/contracts/avs/ECDSAStakeRegistryStorage.sol +55 -0
  5. package/contracts/avs/HyperlaneServiceManager.sol +297 -0
  6. package/contracts/hooks/PolygonPosHook.sol +83 -0
  7. package/contracts/interfaces/avs/IRemoteChallenger.sol +24 -0
  8. package/contracts/interfaces/avs/vendored/IAVSDirectory.sol +24 -0
  9. package/contracts/interfaces/avs/vendored/IDelegationManager.sol +32 -0
  10. package/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.sol +99 -0
  11. package/contracts/interfaces/avs/vendored/IPaymentCoordinator.sol +46 -0
  12. package/contracts/interfaces/avs/vendored/IServiceManager.sol +28 -0
  13. package/contracts/interfaces/avs/vendored/IServiceManagerUI.sol +67 -0
  14. package/contracts/interfaces/avs/vendored/ISignatureUtils.sol +27 -0
  15. package/contracts/interfaces/avs/vendored/ISlasher.sol +11 -0
  16. package/contracts/interfaces/avs/vendored/IStrategy.sol +107 -0
  17. package/contracts/isms/hook/PolygonPosIsm.sol +58 -0
  18. package/contracts/libs/EnumerableMapEnrollment.sol +115 -0
  19. package/contracts/test/TestRemoteChallenger.sol +21 -0
  20. package/contracts/test/avs/TestAVSDirectory.sol +87 -0
  21. package/contracts/test/avs/TestDelegationManager.sol +33 -0
  22. package/contracts/test/avs/TestHyperlaneServiceManager.sol +30 -0
  23. package/contracts/test/avs/TestPaymentCoordinator.sol +20 -0
  24. package/contracts/test/avs/TestSlasher.sol +8 -0
  25. package/contracts/token/extensions/HypFiatTokenCollateral.sol +1 -0
  26. package/contracts/token/extensions/HypXERC20Collateral.sol +1 -0
  27. package/dist/@openzeppelin/contracts/crosschain/index.d.ts +3 -0
  28. package/dist/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
  29. package/dist/@openzeppelin/contracts/crosschain/index.js +2 -0
  30. package/dist/@openzeppelin/contracts/crosschain/index.js.map +1 -0
  31. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts +66 -0
  32. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts.map +1 -0
  33. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js +2 -0
  34. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js.map +1 -0
  35. package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
  36. package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
  37. package/dist/@openzeppelin/contracts/crosschain/polygon/index.js +2 -0
  38. package/dist/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
  39. package/dist/@openzeppelin/contracts/index.d.ts +2 -0
  40. package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
  41. package/dist/@openzeppelin/contracts/vendor/index.d.ts +2 -0
  42. package/dist/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  43. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts +66 -0
  44. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts.map +1 -0
  45. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js +2 -0
  46. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js.map +1 -0
  47. package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
  48. package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
  49. package/dist/@openzeppelin/contracts/vendor/polygon/index.js +2 -0
  50. package/dist/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
  51. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts +54 -0
  52. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts.map +1 -0
  53. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js +2 -0
  54. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js.map +1 -0
  55. package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
  56. package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
  57. package/dist/buildArtifact.js +1 -1
  58. package/dist/buildArtifact.json +1 -1
  59. package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts +423 -0
  60. package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts.map +1 -0
  61. package/dist/contracts/avs/ECDSAServiceManagerBase.js +2 -0
  62. package/dist/contracts/avs/ECDSAServiceManagerBase.js.map +1 -0
  63. package/dist/contracts/avs/ECDSAStakeRegistry.d.ts +693 -0
  64. package/dist/contracts/avs/ECDSAStakeRegistry.d.ts.map +1 -0
  65. package/dist/contracts/avs/ECDSAStakeRegistry.js +2 -0
  66. package/dist/contracts/avs/ECDSAStakeRegistry.js.map +1 -0
  67. package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts +157 -0
  68. package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts.map +1 -0
  69. package/dist/contracts/avs/ECDSAStakeRegistryStorage.js +2 -0
  70. package/dist/contracts/avs/ECDSAStakeRegistryStorage.js.map +1 -0
  71. package/dist/contracts/avs/HyperlaneServiceManager.d.ts +736 -0
  72. package/dist/contracts/avs/HyperlaneServiceManager.d.ts.map +1 -0
  73. package/dist/contracts/avs/HyperlaneServiceManager.js +2 -0
  74. package/dist/contracts/avs/HyperlaneServiceManager.js.map +1 -0
  75. package/dist/contracts/avs/index.d.ts +5 -0
  76. package/dist/contracts/avs/index.d.ts.map +1 -0
  77. package/dist/contracts/avs/index.js +2 -0
  78. package/dist/contracts/avs/index.js.map +1 -0
  79. package/dist/contracts/hooks/PolygonPosHook.d.ts +518 -0
  80. package/dist/contracts/hooks/PolygonPosHook.d.ts.map +1 -0
  81. package/dist/contracts/hooks/PolygonPosHook.js +2 -0
  82. package/dist/contracts/hooks/PolygonPosHook.js.map +1 -0
  83. package/dist/contracts/hooks/index.d.ts +1 -0
  84. package/dist/contracts/hooks/index.d.ts.map +1 -1
  85. package/dist/contracts/index.d.ts +2 -0
  86. package/dist/contracts/index.d.ts.map +1 -1
  87. package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts +81 -0
  88. package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts.map +1 -0
  89. package/dist/contracts/interfaces/avs/IRemoteChallenger.js +2 -0
  90. package/dist/contracts/interfaces/avs/IRemoteChallenger.js.map +1 -0
  91. package/dist/contracts/interfaces/avs/index.d.ts +4 -0
  92. package/dist/contracts/interfaces/avs/index.d.ts.map +1 -0
  93. package/dist/contracts/interfaces/avs/index.js +2 -0
  94. package/dist/contracts/interfaces/avs/index.js.map +1 -0
  95. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts +160 -0
  96. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts.map +1 -0
  97. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js +2 -0
  98. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js.map +1 -0
  99. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts +93 -0
  100. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts.map +1 -0
  101. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js +2 -0
  102. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js.map +1 -0
  103. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts +157 -0
  104. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts.map +1 -0
  105. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js +2 -0
  106. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js.map +1 -0
  107. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts +96 -0
  108. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts.map +1 -0
  109. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js +2 -0
  110. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js.map +1 -0
  111. package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts +250 -0
  112. package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts.map +1 -0
  113. package/dist/contracts/interfaces/avs/vendored/IServiceManager.js +2 -0
  114. package/dist/contracts/interfaces/avs/vendored/IServiceManager.js.map +1 -0
  115. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts +189 -0
  116. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts.map +1 -0
  117. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js +2 -0
  118. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js.map +1 -0
  119. package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts +66 -0
  120. package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts.map +1 -0
  121. package/dist/contracts/interfaces/avs/vendored/ISlasher.js +2 -0
  122. package/dist/contracts/interfaces/avs/vendored/ISlasher.js.map +1 -0
  123. package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts +295 -0
  124. package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts.map +1 -0
  125. package/dist/contracts/interfaces/avs/vendored/IStrategy.js +2 -0
  126. package/dist/contracts/interfaces/avs/vendored/IStrategy.js.map +1 -0
  127. package/dist/contracts/interfaces/avs/vendored/index.d.ts +9 -0
  128. package/dist/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
  129. package/dist/contracts/interfaces/avs/vendored/index.js +2 -0
  130. package/dist/contracts/interfaces/avs/vendored/index.js.map +1 -0
  131. package/dist/contracts/interfaces/index.d.ts +2 -0
  132. package/dist/contracts/interfaces/index.d.ts.map +1 -1
  133. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +243 -0
  134. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -0
  135. package/dist/contracts/isms/hook/PolygonPosIsm.js +2 -0
  136. package/dist/contracts/isms/hook/PolygonPosIsm.js.map +1 -0
  137. package/dist/contracts/isms/hook/index.d.ts +1 -0
  138. package/dist/contracts/isms/hook/index.d.ts.map +1 -1
  139. package/dist/contracts/libs/EnumerableMapEnrollment.d.ts +73 -0
  140. package/dist/contracts/libs/EnumerableMapEnrollment.d.ts.map +1 -0
  141. package/dist/contracts/libs/EnumerableMapEnrollment.js +2 -0
  142. package/dist/contracts/libs/EnumerableMapEnrollment.js.map +1 -0
  143. package/dist/contracts/libs/index.d.ts +1 -0
  144. package/dist/contracts/libs/index.d.ts.map +1 -1
  145. package/dist/contracts/test/TestRemoteChallenger.d.ts +81 -0
  146. package/dist/contracts/test/TestRemoteChallenger.d.ts.map +1 -0
  147. package/dist/contracts/test/TestRemoteChallenger.js +2 -0
  148. package/dist/contracts/test/TestRemoteChallenger.js.map +1 -0
  149. package/dist/contracts/test/avs/TestAVSDirectory.d.ts +235 -0
  150. package/dist/contracts/test/avs/TestAVSDirectory.d.ts.map +1 -0
  151. package/dist/contracts/test/avs/TestAVSDirectory.js +2 -0
  152. package/dist/contracts/test/avs/TestAVSDirectory.js.map +1 -0
  153. package/dist/contracts/test/avs/TestDelegationManager.d.ts +154 -0
  154. package/dist/contracts/test/avs/TestDelegationManager.d.ts.map +1 -0
  155. package/dist/contracts/test/avs/TestDelegationManager.js +2 -0
  156. package/dist/contracts/test/avs/TestDelegationManager.js.map +1 -0
  157. package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts +767 -0
  158. package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts.map +1 -0
  159. package/dist/contracts/test/avs/TestHyperlaneServiceManager.js +2 -0
  160. package/dist/contracts/test/avs/TestHyperlaneServiceManager.js.map +1 -0
  161. package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts +96 -0
  162. package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts.map +1 -0
  163. package/dist/contracts/test/avs/TestPaymentCoordinator.js +2 -0
  164. package/dist/contracts/test/avs/TestPaymentCoordinator.js.map +1 -0
  165. package/dist/contracts/test/avs/TestSlasher.d.ts +66 -0
  166. package/dist/contracts/test/avs/TestSlasher.d.ts.map +1 -0
  167. package/dist/contracts/test/avs/TestSlasher.js +2 -0
  168. package/dist/contracts/test/avs/TestSlasher.js.map +1 -0
  169. package/dist/contracts/test/avs/index.d.ts +6 -0
  170. package/dist/contracts/test/avs/index.d.ts.map +1 -0
  171. package/dist/contracts/test/avs/index.js +2 -0
  172. package/dist/contracts/test/avs/index.js.map +1 -0
  173. package/dist/contracts/test/index.d.ts +3 -0
  174. package/dist/contracts/test/index.d.ts.map +1 -1
  175. package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts +2 -0
  176. package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
  177. package/dist/factories/@openzeppelin/contracts/crosschain/index.js +5 -0
  178. package/dist/factories/@openzeppelin/contracts/crosschain/index.js.map +1 -0
  179. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts +31 -0
  180. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts.map +1 -0
  181. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js +44 -0
  182. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js.map +1 -0
  183. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
  184. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
  185. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js +5 -0
  186. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
  187. package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
  188. package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
  189. package/dist/factories/@openzeppelin/contracts/index.js +1 -0
  190. package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
  191. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts +1 -0
  192. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  193. package/dist/factories/@openzeppelin/contracts/vendor/index.js +1 -0
  194. package/dist/factories/@openzeppelin/contracts/vendor/index.js.map +1 -1
  195. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts +27 -0
  196. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts.map +1 -0
  197. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js +39 -0
  198. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js.map +1 -0
  199. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
  200. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
  201. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js +5 -0
  202. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
  203. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts +27 -0
  204. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts.map +1 -0
  205. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js +40 -0
  206. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js.map +1 -0
  207. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
  208. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
  209. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js +1 -0
  210. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js.map +1 -1
  211. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts +221 -0
  212. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts.map +1 -0
  213. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js +291 -0
  214. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js.map +1 -0
  215. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts +205 -0
  216. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts.map +1 -0
  217. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js +266 -0
  218. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js.map +1 -0
  219. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +577 -0
  220. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts.map +1 -0
  221. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +762 -0
  222. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js.map +1 -0
  223. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +444 -0
  224. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts.map +1 -0
  225. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +587 -0
  226. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js.map +1 -0
  227. package/dist/factories/contracts/avs/index.d.ts +5 -0
  228. package/dist/factories/contracts/avs/index.d.ts.map +1 -0
  229. package/dist/factories/contracts/avs/index.js +8 -0
  230. package/dist/factories/contracts/avs/index.js.map +1 -0
  231. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +316 -0
  232. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts.map +1 -0
  233. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +423 -0
  234. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js.map +1 -0
  235. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  236. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  237. package/dist/factories/contracts/hooks/index.js +1 -0
  238. package/dist/factories/contracts/hooks/index.js.map +1 -1
  239. package/dist/factories/contracts/index.d.ts +1 -0
  240. package/dist/factories/contracts/index.d.ts.map +1 -1
  241. package/dist/factories/contracts/index.js +1 -0
  242. package/dist/factories/contracts/index.js.map +1 -1
  243. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts +29 -0
  244. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts.map +1 -0
  245. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js +42 -0
  246. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js.map +1 -0
  247. package/dist/factories/contracts/interfaces/avs/index.d.ts +3 -0
  248. package/dist/factories/contracts/interfaces/avs/index.d.ts.map +1 -0
  249. package/dist/factories/contracts/interfaces/avs/index.js +6 -0
  250. package/dist/factories/contracts/interfaces/avs/index.js.map +1 -0
  251. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts +71 -0
  252. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts.map +1 -0
  253. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js +96 -0
  254. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js.map +1 -0
  255. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts +54 -0
  256. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts.map +1 -0
  257. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js +75 -0
  258. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js.map +1 -0
  259. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts +205 -0
  260. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts.map +1 -0
  261. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js +266 -0
  262. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js.map +1 -0
  263. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts +49 -0
  264. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts.map +1 -0
  265. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js +68 -0
  266. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js.map +1 -0
  267. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts +90 -0
  268. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts.map +1 -0
  269. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js +122 -0
  270. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js.map +1 -0
  271. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts +130 -0
  272. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts.map +1 -0
  273. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js +174 -0
  274. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js.map +1 -0
  275. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts +19 -0
  276. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts.map +1 -0
  277. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js +29 -0
  278. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js.map +1 -0
  279. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts +173 -0
  280. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts.map +1 -0
  281. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js +235 -0
  282. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js.map +1 -0
  283. package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts +9 -0
  284. package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
  285. package/dist/factories/contracts/interfaces/avs/vendored/index.js +12 -0
  286. package/dist/factories/contracts/interfaces/avs/vendored/index.js.map +1 -0
  287. package/dist/factories/contracts/interfaces/index.d.ts +1 -0
  288. package/dist/factories/contracts/interfaces/index.d.ts.map +1 -1
  289. package/dist/factories/contracts/interfaces/index.js +1 -0
  290. package/dist/factories/contracts/interfaces/index.js.map +1 -1
  291. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +153 -0
  292. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -0
  293. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +212 -0
  294. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -0
  295. package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
  296. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
  297. package/dist/factories/contracts/isms/hook/index.js +1 -0
  298. package/dist/factories/contracts/isms/hook/index.js.map +1 -1
  299. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts +67 -0
  300. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts.map +1 -0
  301. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js +101 -0
  302. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js.map +1 -0
  303. package/dist/factories/contracts/libs/index.d.ts +1 -0
  304. package/dist/factories/contracts/libs/index.d.ts.map +1 -1
  305. package/dist/factories/contracts/libs/index.js +1 -0
  306. package/dist/factories/contracts/libs/index.js.map +1 -1
  307. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +49 -0
  308. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts.map +1 -0
  309. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +76 -0
  310. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js.map +1 -0
  311. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts +157 -0
  312. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts.map +1 -0
  313. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js +216 -0
  314. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js.map +1 -0
  315. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts +112 -0
  316. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts.map +1 -0
  317. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js +159 -0
  318. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js.map +1 -0
  319. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +458 -0
  320. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts.map +1 -0
  321. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +605 -0
  322. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js.map +1 -0
  323. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts +61 -0
  324. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts.map +1 -0
  325. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js +91 -0
  326. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js.map +1 -0
  327. package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts +31 -0
  328. package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts.map +1 -0
  329. package/dist/factories/contracts/test/avs/TestSlasher__factory.js +52 -0
  330. package/dist/factories/contracts/test/avs/TestSlasher__factory.js.map +1 -0
  331. package/dist/factories/contracts/test/avs/index.d.ts +6 -0
  332. package/dist/factories/contracts/test/avs/index.d.ts.map +1 -0
  333. package/dist/factories/contracts/test/avs/index.js +9 -0
  334. package/dist/factories/contracts/test/avs/index.js.map +1 -0
  335. package/dist/factories/contracts/test/index.d.ts +2 -0
  336. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  337. package/dist/factories/contracts/test/index.js +2 -0
  338. package/dist/factories/contracts/test/index.js.map +1 -1
  339. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts +1 -1
  340. package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js +1 -1
  341. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts +1 -1
  342. package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.js +1 -1
  343. package/dist/factories/fx-portal/contracts/index.d.ts +2 -0
  344. package/dist/factories/fx-portal/contracts/index.d.ts.map +1 -0
  345. package/dist/factories/fx-portal/contracts/index.js +5 -0
  346. package/dist/factories/fx-portal/contracts/index.js.map +1 -0
  347. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts +83 -0
  348. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts.map +1 -0
  349. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js +113 -0
  350. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js.map +1 -0
  351. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts +51 -0
  352. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts.map +1 -0
  353. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js +78 -0
  354. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js.map +1 -0
  355. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts +23 -0
  356. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts.map +1 -0
  357. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js +34 -0
  358. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js.map +1 -0
  359. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
  360. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
  361. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +7 -0
  362. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
  363. package/dist/factories/fx-portal/contracts/tunnel/index.d.ts +2 -0
  364. package/dist/factories/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
  365. package/dist/factories/fx-portal/contracts/tunnel/index.js +5 -0
  366. package/dist/factories/fx-portal/contracts/tunnel/index.js.map +1 -0
  367. package/dist/factories/fx-portal/index.d.ts +2 -0
  368. package/dist/factories/fx-portal/index.d.ts.map +1 -0
  369. package/dist/factories/fx-portal/index.js +5 -0
  370. package/dist/factories/fx-portal/index.js.map +1 -0
  371. package/dist/factories/index.d.ts +1 -0
  372. package/dist/factories/index.d.ts.map +1 -1
  373. package/dist/factories/index.js +1 -0
  374. package/dist/factories/index.js.map +1 -1
  375. package/dist/fx-portal/contracts/index.d.ts +3 -0
  376. package/dist/fx-portal/contracts/index.d.ts.map +1 -0
  377. package/dist/fx-portal/contracts/index.js +2 -0
  378. package/dist/fx-portal/contracts/index.js.map +1 -0
  379. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts +172 -0
  380. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts.map +1 -0
  381. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js +2 -0
  382. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js.map +1 -0
  383. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts +122 -0
  384. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts.map +1 -0
  385. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js +2 -0
  386. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js.map +1 -0
  387. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts +66 -0
  388. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts.map +1 -0
  389. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js +2 -0
  390. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js.map +1 -0
  391. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
  392. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
  393. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +2 -0
  394. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
  395. package/dist/fx-portal/contracts/tunnel/index.d.ts +3 -0
  396. package/dist/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
  397. package/dist/fx-portal/contracts/tunnel/index.js +2 -0
  398. package/dist/fx-portal/contracts/tunnel/index.js.map +1 -0
  399. package/dist/fx-portal/index.d.ts +3 -0
  400. package/dist/fx-portal/index.d.ts.map +1 -0
  401. package/dist/fx-portal/index.js +2 -0
  402. package/dist/fx-portal/index.js.map +1 -0
  403. package/dist/index.d.ts +58 -0
  404. package/dist/index.d.ts.map +1 -1
  405. package/dist/index.js +28 -0
  406. package/dist/index.js.map +1 -1
  407. package/package.json +7 -5
@@ -0,0 +1,297 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+ import {Enrollment, EnrollmentStatus, EnumerableMapEnrollment} from "../libs/EnumerableMapEnrollment.sol";
18
+ import {IAVSDirectory} from "../interfaces/avs/vendored/IAVSDirectory.sol";
19
+ import {IRemoteChallenger} from "../interfaces/avs/IRemoteChallenger.sol";
20
+ import {ISlasher} from "../interfaces/avs/vendored/ISlasher.sol";
21
+ import {ECDSAServiceManagerBase} from "./ECDSAServiceManagerBase.sol";
22
+
23
+ contract HyperlaneServiceManager is ECDSAServiceManagerBase {
24
+ // ============ Libraries ============
25
+
26
+ using EnumerableMapEnrollment for EnumerableMapEnrollment.AddressToEnrollmentMap;
27
+
28
+ // ============ Public Storage ============
29
+
30
+ // Slasher contract responsible for slashing operators
31
+ // @dev slasher needs to be updated once slashing is implemented
32
+ ISlasher internal slasher;
33
+
34
+ // ============ Events ============
35
+
36
+ /**
37
+ * @notice Emitted when an operator is enrolled in a challenger
38
+ * @param operator The address of the operator
39
+ * @param challenger The address of the challenger
40
+ */
41
+ event OperatorEnrolledToChallenger(
42
+ address operator,
43
+ IRemoteChallenger challenger
44
+ );
45
+
46
+ /**
47
+ * @notice Emitted when an operator is queued for unenrollment from a challenger
48
+ * @param operator The address of the operator
49
+ * @param challenger The address of the challenger
50
+ * @param unenrollmentStartBlock The block number at which the unenrollment was queued
51
+ * @param challengeDelayBlocks The number of blocks to wait before unenrollment is complete
52
+ */
53
+ event OperatorQueuedUnenrollmentFromChallenger(
54
+ address operator,
55
+ IRemoteChallenger challenger,
56
+ uint256 unenrollmentStartBlock,
57
+ uint256 challengeDelayBlocks
58
+ );
59
+
60
+ /**
61
+ * @notice Emitted when an operator is unenrolled from a challenger
62
+ * @param operator The address of the operator
63
+ * @param challenger The address of the challenger
64
+ * @param unenrollmentEndBlock The block number at which the unenrollment was completed
65
+ */
66
+ event OperatorUnenrolledFromChallenger(
67
+ address operator,
68
+ IRemoteChallenger challenger,
69
+ uint256 unenrollmentEndBlock
70
+ );
71
+
72
+ // ============ Internal Storage ============
73
+
74
+ // Mapping of operators to challengers they are enrolled in (enumerable required for remove-all)
75
+ mapping(address => EnumerableMapEnrollment.AddressToEnrollmentMap)
76
+ internal enrolledChallengers;
77
+
78
+ // ============ Modifiers ============
79
+
80
+ // Only allows the challenger the operator is enrolled in to call the function
81
+ modifier onlyEnrolledChallenger(address operator) {
82
+ (bool exists, ) = enrolledChallengers[operator].tryGet(msg.sender);
83
+ require(
84
+ exists,
85
+ "HyperlaneServiceManager: Operator not enrolled in challenger"
86
+ );
87
+ _;
88
+ }
89
+
90
+ // ============ Constructor ============
91
+
92
+ constructor(
93
+ address _avsDirectory,
94
+ address _stakeRegistry,
95
+ address _paymentCoordinator,
96
+ address _delegationManager
97
+ )
98
+ ECDSAServiceManagerBase(
99
+ _avsDirectory,
100
+ _stakeRegistry,
101
+ _paymentCoordinator,
102
+ _delegationManager
103
+ )
104
+ {}
105
+
106
+ /**
107
+ * @notice Initializes the HyperlaneServiceManager contract with the owner address
108
+ */
109
+ function initialize(address _owner) public initializer {
110
+ __ServiceManagerBase_init(_owner);
111
+ }
112
+
113
+ // ============ External Functions ============
114
+
115
+ /**
116
+ * @notice Enrolls as an operator into a list of challengers
117
+ * @param _challengers The list of challengers to enroll into
118
+ */
119
+ function enrollIntoChallengers(
120
+ IRemoteChallenger[] memory _challengers
121
+ ) external {
122
+ for (uint256 i = 0; i < _challengers.length; i++) {
123
+ enrollIntoChallenger(_challengers[i]);
124
+ }
125
+ }
126
+
127
+ /**
128
+ * @notice starts an operator for unenrollment from a list of challengers
129
+ * @param _challengers The list of challengers to unenroll from
130
+ */
131
+ function startUnenrollment(
132
+ IRemoteChallenger[] memory _challengers
133
+ ) external {
134
+ for (uint256 i = 0; i < _challengers.length; i++) {
135
+ startUnenrollment(_challengers[i]);
136
+ }
137
+ }
138
+
139
+ /**
140
+ * @notice Completes the unenrollment of an operator from a list of challengers
141
+ * @param _challengers The list of challengers to unenroll from
142
+ */
143
+ function completeUnenrollment(address[] memory _challengers) external {
144
+ _completeUnenrollment(msg.sender, _challengers);
145
+ }
146
+
147
+ /**
148
+ * @notice Sets the slasher contract responsible for slashing operators
149
+ * @param _slasher The address of the slasher contract
150
+ */
151
+ function setSlasher(ISlasher _slasher) external onlyOwner {
152
+ slasher = _slasher;
153
+ }
154
+
155
+ /**
156
+ * @notice returns the status of a challenger an operator is enrolled in
157
+ * @param _operator The address of the operator
158
+ * @param _challenger specified IRemoteChallenger contract
159
+ */
160
+ function getChallengerEnrollment(
161
+ address _operator,
162
+ IRemoteChallenger _challenger
163
+ ) external view returns (Enrollment memory enrollment) {
164
+ return enrolledChallengers[_operator].get(address(_challenger));
165
+ }
166
+
167
+ /**
168
+ * @notice forwards a call to the Slasher contract to freeze an operator
169
+ * @param operator The address of the operator to freeze.
170
+ * @dev only the enrolled challengers can call this function
171
+ */
172
+ function freezeOperator(
173
+ address operator
174
+ ) external virtual onlyEnrolledChallenger(operator) {
175
+ slasher.freezeOperator(operator);
176
+ }
177
+
178
+ // ============ Public Functions ============
179
+
180
+ /**
181
+ * @notice returns the list of challengers an operator is enrolled in
182
+ * @param _operator The address of the operator
183
+ */
184
+ function getOperatorChallengers(
185
+ address _operator
186
+ ) public view returns (address[] memory) {
187
+ return enrolledChallengers[_operator].keys();
188
+ }
189
+
190
+ /**
191
+ * @notice Enrolls as an operator into a single challenger
192
+ * @param challenger The challenger to enroll into
193
+ */
194
+ function enrollIntoChallenger(IRemoteChallenger challenger) public {
195
+ require(
196
+ enrolledChallengers[msg.sender].set(
197
+ address(challenger),
198
+ Enrollment(EnrollmentStatus.ENROLLED, 0)
199
+ )
200
+ );
201
+ emit OperatorEnrolledToChallenger(msg.sender, challenger);
202
+ }
203
+
204
+ /**
205
+ * @notice starts an operator for unenrollment from a challenger
206
+ * @param challenger The challenger to unenroll from
207
+ */
208
+ function startUnenrollment(IRemoteChallenger challenger) public {
209
+ (bool exists, Enrollment memory enrollment) = enrolledChallengers[
210
+ msg.sender
211
+ ].tryGet(address(challenger));
212
+ require(
213
+ exists && enrollment.status == EnrollmentStatus.ENROLLED,
214
+ "HyperlaneServiceManager: challenger isn't enrolled"
215
+ );
216
+
217
+ enrolledChallengers[msg.sender].set(
218
+ address(challenger),
219
+ Enrollment(
220
+ EnrollmentStatus.PENDING_UNENROLLMENT,
221
+ uint248(block.number)
222
+ )
223
+ );
224
+ emit OperatorQueuedUnenrollmentFromChallenger(
225
+ msg.sender,
226
+ challenger,
227
+ block.number,
228
+ challenger.challengeDelayBlocks()
229
+ );
230
+ }
231
+
232
+ /**
233
+ * @notice Completes the unenrollment of an operator from a challenger
234
+ * @param challenger The challenger to unenroll from
235
+ */
236
+ function completeUnenrollment(address challenger) public {
237
+ _completeUnenrollment(msg.sender, challenger);
238
+ }
239
+
240
+ // ============ Internal Functions ============
241
+
242
+ /**
243
+ * @notice Completes the unenrollment of an operator from a list of challengers
244
+ * @param operator The address of the operator
245
+ * @param _challengers The list of challengers to unenroll from
246
+ */
247
+ function _completeUnenrollment(
248
+ address operator,
249
+ address[] memory _challengers
250
+ ) internal {
251
+ for (uint256 i = 0; i < _challengers.length; i++) {
252
+ _completeUnenrollment(operator, _challengers[i]);
253
+ }
254
+ }
255
+
256
+ /**
257
+ * @notice Completes the unenrollment of an operator from a challenger
258
+ * @param operator The address of the operator
259
+ * @param _challenger The challenger to unenroll from
260
+ */
261
+ function _completeUnenrollment(
262
+ address operator,
263
+ address _challenger
264
+ ) internal {
265
+ IRemoteChallenger challenger = IRemoteChallenger(_challenger);
266
+ (bool exists, Enrollment memory enrollment) = enrolledChallengers[
267
+ operator
268
+ ].tryGet(address(challenger));
269
+
270
+ require(
271
+ exists &&
272
+ enrollment.status == EnrollmentStatus.PENDING_UNENROLLMENT &&
273
+ block.number >=
274
+ enrollment.unenrollmentStartBlock +
275
+ challenger.challengeDelayBlocks(),
276
+ "HyperlaneServiceManager: Invalid unenrollment"
277
+ );
278
+
279
+ enrolledChallengers[operator].remove(address(challenger));
280
+ emit OperatorUnenrolledFromChallenger(
281
+ operator,
282
+ challenger,
283
+ block.number
284
+ );
285
+ }
286
+
287
+ /// @inheritdoc ECDSAServiceManagerBase
288
+ function _deregisterOperatorFromAVS(
289
+ address operator
290
+ ) internal virtual override {
291
+ address[] memory challengers = getOperatorChallengers(operator);
292
+ _completeUnenrollment(operator, challengers);
293
+
294
+ IAVSDirectory(avsDirectory).deregisterOperatorFromAVS(operator);
295
+ emit OperatorDeregisteredFromAVS(operator);
296
+ }
297
+ }
@@ -0,0 +1,83 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ // ============ Internal Imports ============
17
+ import {AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
18
+ import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
19
+ import {TypeCasts} from "../libs/TypeCasts.sol";
20
+ import {Message} from "../libs/Message.sol";
21
+ import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
22
+
23
+ // ============ External Imports ============
24
+ import {FxBaseRootTunnel} from "fx-portal/contracts/tunnel/FxBaseRootTunnel.sol";
25
+ import {Address} from "@openzeppelin/contracts/utils/Address.sol";
26
+
27
+ /**
28
+ * @title PolygonPosHook
29
+ * @notice Message hook to inform the PolygonPosIsm of messages published through
30
+ * the native PoS bridge.
31
+ */
32
+ contract PolygonPosHook is AbstractMessageIdAuthHook, FxBaseRootTunnel {
33
+ using StandardHookMetadata for bytes;
34
+
35
+ // ============ Constructor ============
36
+
37
+ constructor(
38
+ address _mailbox,
39
+ uint32 _destinationDomain,
40
+ bytes32 _ism,
41
+ address _cpManager,
42
+ address _fxRoot
43
+ )
44
+ AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism)
45
+ FxBaseRootTunnel(_cpManager, _fxRoot)
46
+ {
47
+ require(
48
+ Address.isContract(_cpManager),
49
+ "PolygonPosHook: invalid cpManager contract"
50
+ );
51
+ require(
52
+ Address.isContract(_fxRoot),
53
+ "PolygonPosHook: invalid fxRoot contract"
54
+ );
55
+ }
56
+
57
+ // ============ Internal functions ============
58
+ function _quoteDispatch(
59
+ bytes calldata,
60
+ bytes calldata
61
+ ) internal pure override returns (uint256) {
62
+ return 0;
63
+ }
64
+
65
+ /// @inheritdoc AbstractMessageIdAuthHook
66
+ function _sendMessageId(
67
+ bytes calldata metadata,
68
+ bytes memory payload
69
+ ) internal override {
70
+ require(
71
+ metadata.msgValue(0) == 0,
72
+ "PolygonPosHook: does not support msgValue"
73
+ );
74
+ require(msg.value == 0, "PolygonPosHook: does not support msgValue");
75
+ _sendMessageToChild(payload);
76
+ }
77
+
78
+ bytes public latestData;
79
+
80
+ function _processMessageFromChild(bytes memory data) internal override {
81
+ latestData = data;
82
+ }
83
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.8.0;
3
+
4
+ /*@@@@@@@ @@@@@@@@@
5
+ @@@@@@@@@ @@@@@@@@@
6
+ @@@@@@@@@ @@@@@@@@@
7
+ @@@@@@@@@ @@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@ HYPERLANE @@@@@@@
10
+ @@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@ @@@@@@@@@
12
+ @@@@@@@@@ @@@@@@@@@
13
+ @@@@@@@@@ @@@@@@@@@
14
+ @@@@@@@@@ @@@@@@@@*/
15
+
16
+ interface IRemoteChallenger {
17
+ /// @notice Returns the number of blocks that must be mined before a challenge can be handled
18
+ /// @return The number of blocks that must be mined before a challenge can be handled
19
+ function challengeDelayBlocks() external view returns (uint256);
20
+
21
+ /// @notice Handles a challenge for an operator
22
+ /// @param operator The address of the operator
23
+ function handleChallenge(address operator) external;
24
+ }
@@ -0,0 +1,24 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity >=0.8.0;
3
+
4
+ import "./ISignatureUtils.sol";
5
+
6
+ /// part of mock interfaces for vendoring necessary Eigenlayer contracts for the hyperlane AVS
7
+ /// @author Layr Labs, Inc.
8
+ interface IAVSDirectory is ISignatureUtils {
9
+ enum OperatorAVSRegistrationStatus {
10
+ UNREGISTERED,
11
+ REGISTERED
12
+ }
13
+
14
+ event AVSMetadataURIUpdated(address indexed avs, string metadataURI);
15
+
16
+ function registerOperatorToAVS(
17
+ address operator,
18
+ ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
19
+ ) external;
20
+
21
+ function deregisterOperatorFromAVS(address operator) external;
22
+
23
+ function updateAVSMetadataURI(string calldata metadataURI) external;
24
+ }
@@ -0,0 +1,32 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity >=0.8.0;
3
+
4
+ import {IStrategy} from "./IStrategy.sol";
5
+
6
+ /**
7
+ * @title DelegationManager
8
+ * @author Layr Labs, Inc.
9
+ * @notice Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service
10
+ * @notice This is the contract for delegation in EigenLayer. The main functionalities of this contract are
11
+ * - enabling anyone to register as an operator in EigenLayer
12
+ * - allowing operators to specify parameters related to stakers who delegate to them
13
+ * - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time)
14
+ * - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)
15
+ */
16
+ interface IDelegationManager {
17
+ struct OperatorDetails {
18
+ address earningsReceiver;
19
+ address delegationApprover;
20
+ uint32 stakerOptOutWindowBlocks;
21
+ }
22
+
23
+ function registerAsOperator(
24
+ OperatorDetails calldata registeringOperatorDetails,
25
+ string calldata metadataURI
26
+ ) external;
27
+
28
+ function getOperatorShares(
29
+ address operator,
30
+ IStrategy[] memory strategies
31
+ ) external view returns (uint256[] memory);
32
+ }
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.12;
3
+
4
+ import {IStrategy} from "./IStrategy.sol";
5
+
6
+ struct StrategyParams {
7
+ IStrategy strategy; // The strategy contract reference
8
+ uint96 multiplier; // The multiplier applied to the strategy
9
+ }
10
+
11
+ struct Quorum {
12
+ StrategyParams[] strategies; // An array of strategy parameters to define the quorum
13
+ }
14
+
15
+ /// part of mock interfaces for vendoring necessary Eigenlayer contracts for the hyperlane AVS
16
+ /// @author Layr Labs, Inc.
17
+ interface IECDSAStakeRegistryEventsAndErrors {
18
+ /// @notice Emitted when the system registers an operator
19
+ /// @param _operator The address of the registered operator
20
+ /// @param _avs The address of the associated AVS
21
+ event OperatorRegistered(address indexed _operator, address indexed _avs);
22
+
23
+ /// @notice Emitted when the system deregisters an operator
24
+ /// @param _operator The address of the deregistered operator
25
+ /// @param _avs The address of the associated AVS
26
+ event OperatorDeregistered(address indexed _operator, address indexed _avs);
27
+
28
+ /// @notice Emitted when the system updates the quorum
29
+ /// @param _old The previous quorum configuration
30
+ /// @param _new The new quorum configuration
31
+ event QuorumUpdated(Quorum _old, Quorum _new);
32
+
33
+ /// @notice Emitted when the weight to join the operator set updates
34
+ /// @param _old The previous minimum weight
35
+ /// @param _new The new minimumWeight
36
+ event MinimumWeightUpdated(uint256 _old, uint256 _new);
37
+
38
+ /// @notice Emitted when the weight required to be an operator changes
39
+ /// @param oldMinimumWeight The previous weight
40
+ /// @param newMinimumWeight The updated weight
41
+ event UpdateMinimumWeight(
42
+ uint256 oldMinimumWeight,
43
+ uint256 newMinimumWeight
44
+ );
45
+
46
+ /// @notice Emitted when the system updates an operator's weight
47
+ /// @param _operator The address of the operator updated
48
+ /// @param oldWeight The operator's weight before the update
49
+ /// @param newWeight The operator's weight after the update
50
+ event OperatorWeightUpdated(
51
+ address indexed _operator,
52
+ uint256 oldWeight,
53
+ uint256 newWeight
54
+ );
55
+
56
+ /// @notice Emitted when the system updates the total weight
57
+ /// @param oldTotalWeight The total weight before the update
58
+ /// @param newTotalWeight The total weight after the update
59
+ event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight);
60
+
61
+ /// @notice Emits when setting a new threshold weight.
62
+ event ThresholdWeightUpdated(uint256 _thresholdWeight);
63
+
64
+ /// @notice Indicates when the lengths of the signers array and signatures array do not match.
65
+ error LengthMismatch();
66
+
67
+ /// @notice Indicates encountering an invalid length for the signers or signatures array.
68
+ error InvalidLength();
69
+
70
+ /// @notice Indicates encountering an invalid signature.
71
+ error InvalidSignature();
72
+
73
+ /// @notice Thrown when the threshold update is greater than BPS
74
+ error InvalidThreshold();
75
+
76
+ /// @notice Thrown when missing operators in an update
77
+ error MustUpdateAllOperators();
78
+
79
+ /// @notice Indicates operator weights were out of sync and the signed weight exceed the total
80
+ error InvalidSignedWeight();
81
+
82
+ /// @notice Indicates the total signed stake fails to meet the required threshold.
83
+ error InsufficientSignedStake();
84
+
85
+ /// @notice Indicates an individual signer's weight fails to meet the required threshold.
86
+ error InsufficientWeight();
87
+
88
+ /// @notice Indicates the quorum is invalid
89
+ error InvalidQuorum();
90
+
91
+ /// @notice Indicates the system finds a list of items unsorted
92
+ error NotSorted();
93
+
94
+ /// @notice Thrown when registering an already registered operator
95
+ error OperatorAlreadyRegistered();
96
+
97
+ /// @notice Thrown when de-registering or updating the stake for an unregistered operator
98
+ error OperatorNotRegistered();
99
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity >=0.8.0;
3
+
4
+ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+ import "./IStrategy.sol";
6
+
7
+ /**
8
+ * @title Interface for the `IPaymentCoordinator` contract.
9
+ * @author Layr Labs, Inc.
10
+ * @notice Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service
11
+ * @notice Allows AVSs to make "Range Payments", which get distributed amongst the AVSs' confirmed
12
+ * Operators and the Stakers delegated to those Operators.
13
+ * Calculations are performed based on the completed Range Payments, with the results posted in
14
+ * a Merkle root against which Stakers & Operators can make claims.
15
+ */
16
+ interface IPaymentCoordinator {
17
+ /// STRUCTS ///
18
+ struct StrategyAndMultiplier {
19
+ IStrategy strategy;
20
+ // weight used to compare shares in multiple strategies against one another
21
+ uint96 multiplier;
22
+ }
23
+
24
+ struct RangePayment {
25
+ // Strategies & relative weights of shares in the strategies
26
+ StrategyAndMultiplier[] strategiesAndMultipliers;
27
+ IERC20 token;
28
+ uint256 amount;
29
+ uint64 startTimestamp;
30
+ uint64 duration;
31
+ }
32
+
33
+ /// EXTERNAL FUNCTIONS ///
34
+
35
+ /**
36
+ * @notice Creates a new range payment on behalf of an AVS, to be split amongst the
37
+ * set of stakers delegated to operators who are registered to the `avs`
38
+ * @param rangePayments The range payments being created
39
+ * @dev Expected to be called by the ServiceManager of the AVS on behalf of which the payment is being made
40
+ * @dev The duration of the `rangePayment` cannot exceed `MAX_PAYMENT_DURATION`
41
+ * @dev The tokens are sent to the `claimingManager` contract
42
+ * @dev This function will revert if the `rangePayment` is malformed,
43
+ * e.g. if the `strategies` and `weights` arrays are of non-equal lengths
44
+ */
45
+ function payForRange(RangePayment[] calldata rangePayments) external;
46
+ }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+ pragma solidity >=0.8.0;
3
+
4
+ import {IPaymentCoordinator} from "./IPaymentCoordinator.sol";
5
+ import {IServiceManagerUI} from "./IServiceManagerUI.sol";
6
+
7
+ /**
8
+ * @title Minimal interface for a ServiceManager-type contract that forms the single point for an AVS to push updates to EigenLayer
9
+ * @author Layr Labs, Inc.
10
+ */
11
+ interface IServiceManager is IServiceManagerUI {
12
+ /**
13
+ * @notice Creates a new range payment on behalf of an AVS, to be split amongst the
14
+ * set of stakers delegated to operators who are registered to the `avs`.
15
+ * Note that the owner calling this function must have approved the tokens to be transferred to the ServiceManager
16
+ * and of course has the required balances.
17
+ * @param rangePayments The range payments being created
18
+ * @dev Expected to be called by the ServiceManager of the AVS on behalf of which the payment is being made
19
+ * @dev The duration of the `rangePayment` cannot exceed `paymentCoordinator.MAX_PAYMENT_DURATION()`
20
+ * @dev The tokens are sent to the `PaymentCoordinator` contract
21
+ * @dev Strategies must be in ascending order of addresses to check for duplicates
22
+ * @dev This function will revert if the `rangePayment` is malformed,
23
+ * e.g. if the `strategies` and `weights` arrays are of non-equal lengths
24
+ */
25
+ function payForRange(
26
+ IPaymentCoordinator.RangePayment[] calldata rangePayments
27
+ ) external;
28
+ }