@hyperlane-xyz/core 3.20.0-beta1 → 4.0.0-alpha

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 (527) hide show
  1. package/README.md +18 -2
  2. package/contracts/avs/ECDSAServiceManagerBase.sol +273 -0
  3. package/contracts/avs/ECDSAStakeRegistry.sol +626 -0
  4. package/contracts/avs/ECDSAStakeRegistryStorage.sol +59 -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 +112 -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/ERC20Test.sol +50 -0
  20. package/contracts/test/TestRemoteChallenger.sol +21 -0
  21. package/contracts/test/avs/TestAVSDirectory.sol +87 -0
  22. package/contracts/test/avs/TestDelegationManager.sol +33 -0
  23. package/contracts/test/avs/TestHyperlaneServiceManager.sol +30 -0
  24. package/contracts/test/avs/TestPaymentCoordinator.sol +20 -0
  25. package/contracts/test/avs/TestSlasher.sol +8 -0
  26. package/contracts/token/{HypERC20CollateralVaultDeposit.sol → extensions/HypERC20CollateralVaultDeposit.sol} +1 -1
  27. package/contracts/token/extensions/HypFiatToken.sol +33 -0
  28. package/contracts/token/extensions/HypXERC20.sol +27 -0
  29. package/contracts/token/extensions/HypXERC20Lockbox.sol +54 -0
  30. package/contracts/token/interfaces/IFiatToken.sol +24 -0
  31. package/contracts/token/interfaces/IXERC20.sol +39 -0
  32. package/contracts/token/interfaces/IXERC20Lockbox.sol +61 -0
  33. package/dist/@openzeppelin/contracts/crosschain/index.d.ts +3 -0
  34. package/dist/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
  35. package/dist/@openzeppelin/contracts/crosschain/index.js +2 -0
  36. package/dist/@openzeppelin/contracts/crosschain/index.js.map +1 -0
  37. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts +66 -0
  38. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts.map +1 -0
  39. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js +2 -0
  40. package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js.map +1 -0
  41. package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
  42. package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
  43. package/dist/@openzeppelin/contracts/crosschain/polygon/index.js +2 -0
  44. package/dist/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
  45. package/dist/@openzeppelin/contracts/index.d.ts +2 -0
  46. package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
  47. package/dist/@openzeppelin/contracts/vendor/index.d.ts +2 -0
  48. package/dist/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  49. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts +66 -0
  50. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts.map +1 -0
  51. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js +2 -0
  52. package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js.map +1 -0
  53. package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
  54. package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
  55. package/dist/@openzeppelin/contracts/vendor/polygon/index.js +2 -0
  56. package/dist/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
  57. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts +54 -0
  58. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts.map +1 -0
  59. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js +2 -0
  60. package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js.map +1 -0
  61. package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
  62. package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
  63. package/dist/buildArtifact.js +1 -1
  64. package/dist/buildArtifact.json +1 -1
  65. package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts +423 -0
  66. package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts.map +1 -0
  67. package/dist/contracts/avs/ECDSAServiceManagerBase.js +2 -0
  68. package/dist/contracts/avs/ECDSAServiceManagerBase.js.map +1 -0
  69. package/dist/contracts/avs/ECDSAStakeRegistry.d.ts +772 -0
  70. package/dist/contracts/avs/ECDSAStakeRegistry.d.ts.map +1 -0
  71. package/dist/contracts/avs/ECDSAStakeRegistry.js +2 -0
  72. package/dist/contracts/avs/ECDSAStakeRegistry.js.map +1 -0
  73. package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts +175 -0
  74. package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts.map +1 -0
  75. package/dist/contracts/avs/ECDSAStakeRegistryStorage.js +2 -0
  76. package/dist/contracts/avs/ECDSAStakeRegistryStorage.js.map +1 -0
  77. package/dist/contracts/avs/HyperlaneServiceManager.d.ts +736 -0
  78. package/dist/contracts/avs/HyperlaneServiceManager.d.ts.map +1 -0
  79. package/dist/contracts/avs/HyperlaneServiceManager.js +2 -0
  80. package/dist/contracts/avs/HyperlaneServiceManager.js.map +1 -0
  81. package/dist/contracts/avs/index.d.ts +5 -0
  82. package/dist/contracts/avs/index.d.ts.map +1 -0
  83. package/dist/contracts/avs/index.js +2 -0
  84. package/dist/contracts/avs/index.js.map +1 -0
  85. package/dist/contracts/hooks/PolygonPosHook.d.ts +518 -0
  86. package/dist/contracts/hooks/PolygonPosHook.d.ts.map +1 -0
  87. package/dist/contracts/hooks/PolygonPosHook.js +2 -0
  88. package/dist/contracts/hooks/PolygonPosHook.js.map +1 -0
  89. package/dist/contracts/hooks/index.d.ts +1 -0
  90. package/dist/contracts/hooks/index.d.ts.map +1 -1
  91. package/dist/contracts/index.d.ts +2 -0
  92. package/dist/contracts/index.d.ts.map +1 -1
  93. package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts +81 -0
  94. package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts.map +1 -0
  95. package/dist/contracts/interfaces/avs/IRemoteChallenger.js +2 -0
  96. package/dist/contracts/interfaces/avs/IRemoteChallenger.js.map +1 -0
  97. package/dist/contracts/interfaces/avs/index.d.ts +4 -0
  98. package/dist/contracts/interfaces/avs/index.d.ts.map +1 -0
  99. package/dist/contracts/interfaces/avs/index.js +2 -0
  100. package/dist/contracts/interfaces/avs/index.js.map +1 -0
  101. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts +160 -0
  102. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts.map +1 -0
  103. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js +2 -0
  104. package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js.map +1 -0
  105. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts +93 -0
  106. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts.map +1 -0
  107. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js +2 -0
  108. package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js.map +1 -0
  109. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts +175 -0
  110. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts.map +1 -0
  111. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js +2 -0
  112. package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js.map +1 -0
  113. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts +96 -0
  114. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts.map +1 -0
  115. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js +2 -0
  116. package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js.map +1 -0
  117. package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts +250 -0
  118. package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts.map +1 -0
  119. package/dist/contracts/interfaces/avs/vendored/IServiceManager.js +2 -0
  120. package/dist/contracts/interfaces/avs/vendored/IServiceManager.js.map +1 -0
  121. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts +189 -0
  122. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts.map +1 -0
  123. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js +2 -0
  124. package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js.map +1 -0
  125. package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts +66 -0
  126. package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts.map +1 -0
  127. package/dist/contracts/interfaces/avs/vendored/ISlasher.js +2 -0
  128. package/dist/contracts/interfaces/avs/vendored/ISlasher.js.map +1 -0
  129. package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts +295 -0
  130. package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts.map +1 -0
  131. package/dist/contracts/interfaces/avs/vendored/IStrategy.js +2 -0
  132. package/dist/contracts/interfaces/avs/vendored/IStrategy.js.map +1 -0
  133. package/dist/contracts/interfaces/avs/vendored/index.d.ts +9 -0
  134. package/dist/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
  135. package/dist/contracts/interfaces/avs/vendored/index.js +2 -0
  136. package/dist/contracts/interfaces/avs/vendored/index.js.map +1 -0
  137. package/dist/contracts/interfaces/index.d.ts +2 -0
  138. package/dist/contracts/interfaces/index.d.ts.map +1 -1
  139. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +243 -0
  140. package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -0
  141. package/dist/contracts/isms/hook/PolygonPosIsm.js +2 -0
  142. package/dist/contracts/isms/hook/PolygonPosIsm.js.map +1 -0
  143. package/dist/contracts/isms/hook/index.d.ts +1 -0
  144. package/dist/contracts/isms/hook/index.d.ts.map +1 -1
  145. package/dist/contracts/libs/EnumerableMapEnrollment.d.ts +73 -0
  146. package/dist/contracts/libs/EnumerableMapEnrollment.d.ts.map +1 -0
  147. package/dist/contracts/libs/EnumerableMapEnrollment.js +2 -0
  148. package/dist/contracts/libs/EnumerableMapEnrollment.js.map +1 -0
  149. package/dist/contracts/libs/index.d.ts +1 -0
  150. package/dist/contracts/libs/index.d.ts.map +1 -1
  151. package/dist/contracts/test/{ERC20Test.d.ts → ERC20Test.sol/ERC20Test.d.ts} +1 -1
  152. package/dist/contracts/test/ERC20Test.sol/ERC20Test.d.ts.map +1 -0
  153. package/dist/contracts/test/ERC20Test.sol/ERC20Test.js.map +1 -0
  154. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts +423 -0
  155. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.d.ts.map +1 -0
  156. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.js +2 -0
  157. package/dist/contracts/test/ERC20Test.sol/FiatTokenTest.js.map +1 -0
  158. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts +453 -0
  159. package/dist/contracts/test/ERC20Test.sol/XERC20Test.d.ts.map +1 -0
  160. package/dist/contracts/test/ERC20Test.sol/XERC20Test.js +2 -0
  161. package/dist/contracts/test/ERC20Test.sol/XERC20Test.js.map +1 -0
  162. package/dist/contracts/test/ERC20Test.sol/index.d.ts +4 -0
  163. package/dist/contracts/test/ERC20Test.sol/index.d.ts.map +1 -0
  164. package/dist/contracts/test/ERC20Test.sol/index.js +2 -0
  165. package/dist/contracts/test/ERC20Test.sol/index.js.map +1 -0
  166. package/dist/contracts/test/TestRemoteChallenger.d.ts +81 -0
  167. package/dist/contracts/test/TestRemoteChallenger.d.ts.map +1 -0
  168. package/dist/contracts/test/TestRemoteChallenger.js +2 -0
  169. package/dist/contracts/test/TestRemoteChallenger.js.map +1 -0
  170. package/dist/contracts/test/avs/TestAVSDirectory.d.ts +235 -0
  171. package/dist/contracts/test/avs/TestAVSDirectory.d.ts.map +1 -0
  172. package/dist/contracts/test/avs/TestAVSDirectory.js +2 -0
  173. package/dist/contracts/test/avs/TestAVSDirectory.js.map +1 -0
  174. package/dist/contracts/test/avs/TestDelegationManager.d.ts +154 -0
  175. package/dist/contracts/test/avs/TestDelegationManager.d.ts.map +1 -0
  176. package/dist/contracts/test/avs/TestDelegationManager.js +2 -0
  177. package/dist/contracts/test/avs/TestDelegationManager.js.map +1 -0
  178. package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts +767 -0
  179. package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts.map +1 -0
  180. package/dist/contracts/test/avs/TestHyperlaneServiceManager.js +2 -0
  181. package/dist/contracts/test/avs/TestHyperlaneServiceManager.js.map +1 -0
  182. package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts +96 -0
  183. package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts.map +1 -0
  184. package/dist/contracts/test/avs/TestPaymentCoordinator.js +2 -0
  185. package/dist/contracts/test/avs/TestPaymentCoordinator.js.map +1 -0
  186. package/dist/contracts/test/avs/TestSlasher.d.ts +66 -0
  187. package/dist/contracts/test/avs/TestSlasher.d.ts.map +1 -0
  188. package/dist/contracts/test/avs/TestSlasher.js +2 -0
  189. package/dist/contracts/test/avs/TestSlasher.js.map +1 -0
  190. package/dist/contracts/test/avs/index.d.ts +6 -0
  191. package/dist/contracts/test/avs/index.d.ts.map +1 -0
  192. package/dist/contracts/test/avs/index.js +2 -0
  193. package/dist/contracts/test/avs/index.js.map +1 -0
  194. package/dist/contracts/test/index.d.ts +5 -1
  195. package/dist/contracts/test/index.d.ts.map +1 -1
  196. package/dist/contracts/token/{HypERC20CollateralVaultDeposit.d.ts → extensions/HypERC20CollateralVaultDeposit.d.ts} +1 -1
  197. package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.d.ts.map +1 -0
  198. package/dist/contracts/token/extensions/HypERC20CollateralVaultDeposit.js.map +1 -0
  199. package/dist/contracts/token/extensions/HypFiatToken.d.ts +646 -0
  200. package/dist/contracts/token/extensions/HypFiatToken.d.ts.map +1 -0
  201. package/dist/contracts/token/extensions/HypFiatToken.js +2 -0
  202. package/dist/contracts/token/extensions/HypFiatToken.js.map +1 -0
  203. package/dist/contracts/token/extensions/HypXERC20.d.ts +646 -0
  204. package/dist/contracts/token/extensions/HypXERC20.d.ts.map +1 -0
  205. package/dist/contracts/token/extensions/HypXERC20.js +2 -0
  206. package/dist/contracts/token/extensions/HypXERC20.js.map +1 -0
  207. package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts +676 -0
  208. package/dist/contracts/token/extensions/HypXERC20Lockbox.d.ts.map +1 -0
  209. package/dist/contracts/token/extensions/HypXERC20Lockbox.js +2 -0
  210. package/dist/contracts/token/extensions/HypXERC20Lockbox.js.map +1 -0
  211. package/dist/contracts/token/extensions/index.d.ts +4 -0
  212. package/dist/contracts/token/extensions/index.d.ts.map +1 -1
  213. package/dist/contracts/token/index.d.ts +2 -1
  214. package/dist/contracts/token/index.d.ts.map +1 -1
  215. package/dist/contracts/token/interfaces/IFiatToken.d.ts +269 -0
  216. package/dist/contracts/token/interfaces/IFiatToken.d.ts.map +1 -0
  217. package/dist/contracts/token/interfaces/IFiatToken.js +2 -0
  218. package/dist/contracts/token/interfaces/IFiatToken.js.map +1 -0
  219. package/dist/contracts/token/interfaces/IXERC20.d.ts +331 -0
  220. package/dist/contracts/token/interfaces/IXERC20.d.ts.map +1 -0
  221. package/dist/contracts/token/interfaces/IXERC20.js +2 -0
  222. package/dist/contracts/token/interfaces/IXERC20.js.map +1 -0
  223. package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts +252 -0
  224. package/dist/contracts/token/interfaces/IXERC20Lockbox.d.ts.map +1 -0
  225. package/dist/contracts/token/interfaces/IXERC20Lockbox.js +2 -0
  226. package/dist/contracts/token/interfaces/IXERC20Lockbox.js.map +1 -0
  227. package/dist/contracts/token/interfaces/index.d.ts +4 -0
  228. package/dist/contracts/token/interfaces/index.d.ts.map +1 -0
  229. package/dist/contracts/token/interfaces/index.js +2 -0
  230. package/dist/contracts/token/interfaces/index.js.map +1 -0
  231. package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts +2 -0
  232. package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
  233. package/dist/factories/@openzeppelin/contracts/crosschain/index.js +5 -0
  234. package/dist/factories/@openzeppelin/contracts/crosschain/index.js.map +1 -0
  235. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts +31 -0
  236. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts.map +1 -0
  237. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js +44 -0
  238. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js.map +1 -0
  239. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
  240. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
  241. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js +5 -0
  242. package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
  243. package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
  244. package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
  245. package/dist/factories/@openzeppelin/contracts/index.js +1 -0
  246. package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
  247. package/dist/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  248. package/dist/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
  249. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts +1 -0
  250. package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
  251. package/dist/factories/@openzeppelin/contracts/vendor/index.js +1 -0
  252. package/dist/factories/@openzeppelin/contracts/vendor/index.js.map +1 -1
  253. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts +27 -0
  254. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts.map +1 -0
  255. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js +39 -0
  256. package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js.map +1 -0
  257. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
  258. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
  259. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js +5 -0
  260. package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
  261. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts +27 -0
  262. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts.map +1 -0
  263. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js +40 -0
  264. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js.map +1 -0
  265. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
  266. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
  267. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js +1 -0
  268. package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js.map +1 -1
  269. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts +221 -0
  270. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts.map +1 -0
  271. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js +291 -0
  272. package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js.map +1 -0
  273. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts +234 -0
  274. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts.map +1 -0
  275. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js +302 -0
  276. package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js.map +1 -0
  277. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +648 -0
  278. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts.map +1 -0
  279. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +854 -0
  280. package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js.map +1 -0
  281. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +444 -0
  282. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts.map +1 -0
  283. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +587 -0
  284. package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js.map +1 -0
  285. package/dist/factories/contracts/avs/index.d.ts +5 -0
  286. package/dist/factories/contracts/avs/index.d.ts.map +1 -0
  287. package/dist/factories/contracts/avs/index.js +8 -0
  288. package/dist/factories/contracts/avs/index.js.map +1 -0
  289. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +316 -0
  290. package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts.map +1 -0
  291. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +423 -0
  292. package/dist/factories/contracts/hooks/PolygonPosHook__factory.js.map +1 -0
  293. package/dist/factories/contracts/hooks/index.d.ts +1 -0
  294. package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
  295. package/dist/factories/contracts/hooks/index.js +1 -0
  296. package/dist/factories/contracts/hooks/index.js.map +1 -1
  297. package/dist/factories/contracts/index.d.ts +1 -0
  298. package/dist/factories/contracts/index.d.ts.map +1 -1
  299. package/dist/factories/contracts/index.js +1 -0
  300. package/dist/factories/contracts/index.js.map +1 -1
  301. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts +29 -0
  302. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts.map +1 -0
  303. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js +42 -0
  304. package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js.map +1 -0
  305. package/dist/factories/contracts/interfaces/avs/index.d.ts +3 -0
  306. package/dist/factories/contracts/interfaces/avs/index.d.ts.map +1 -0
  307. package/dist/factories/contracts/interfaces/avs/index.js +6 -0
  308. package/dist/factories/contracts/interfaces/avs/index.js.map +1 -0
  309. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts +71 -0
  310. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts.map +1 -0
  311. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js +96 -0
  312. package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js.map +1 -0
  313. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts +54 -0
  314. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts.map +1 -0
  315. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js +75 -0
  316. package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js.map +1 -0
  317. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts +234 -0
  318. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts.map +1 -0
  319. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js +302 -0
  320. package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js.map +1 -0
  321. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts +49 -0
  322. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts.map +1 -0
  323. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js +68 -0
  324. package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js.map +1 -0
  325. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts +90 -0
  326. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts.map +1 -0
  327. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js +122 -0
  328. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js.map +1 -0
  329. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts +130 -0
  330. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts.map +1 -0
  331. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js +174 -0
  332. package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js.map +1 -0
  333. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts +19 -0
  334. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts.map +1 -0
  335. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js +29 -0
  336. package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js.map +1 -0
  337. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts +173 -0
  338. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts.map +1 -0
  339. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js +235 -0
  340. package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js.map +1 -0
  341. package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts +9 -0
  342. package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
  343. package/dist/factories/contracts/interfaces/avs/vendored/index.js +12 -0
  344. package/dist/factories/contracts/interfaces/avs/vendored/index.js.map +1 -0
  345. package/dist/factories/contracts/interfaces/index.d.ts +1 -0
  346. package/dist/factories/contracts/interfaces/index.d.ts.map +1 -1
  347. package/dist/factories/contracts/interfaces/index.js +1 -0
  348. package/dist/factories/contracts/interfaces/index.js.map +1 -1
  349. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +153 -0
  350. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -0
  351. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +212 -0
  352. package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -0
  353. package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
  354. package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
  355. package/dist/factories/contracts/isms/hook/index.js +1 -0
  356. package/dist/factories/contracts/isms/hook/index.js.map +1 -1
  357. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts +67 -0
  358. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts.map +1 -0
  359. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js +101 -0
  360. package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js.map +1 -0
  361. package/dist/factories/contracts/libs/index.d.ts +1 -0
  362. package/dist/factories/contracts/libs/index.d.ts.map +1 -1
  363. package/dist/factories/contracts/libs/index.js +1 -0
  364. package/dist/factories/contracts/libs/index.js.map +1 -1
  365. package/dist/factories/contracts/test/{ERC20Test__factory.d.ts → ERC20Test.sol/ERC20Test__factory.d.ts} +2 -2
  366. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.d.ts.map +1 -0
  367. package/dist/factories/contracts/test/{ERC20Test__factory.js → ERC20Test.sol/ERC20Test__factory.js} +1 -1
  368. package/dist/factories/contracts/test/ERC20Test.sol/ERC20Test__factory.js.map +1 -0
  369. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts +309 -0
  370. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.d.ts.map +1 -0
  371. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js +416 -0
  372. package/dist/factories/contracts/test/ERC20Test.sol/FiatTokenTest__factory.js.map +1 -0
  373. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts +337 -0
  374. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.d.ts.map +1 -0
  375. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js +451 -0
  376. package/dist/factories/contracts/test/ERC20Test.sol/XERC20Test__factory.js.map +1 -0
  377. package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts +4 -0
  378. package/dist/factories/contracts/test/ERC20Test.sol/index.d.ts.map +1 -0
  379. package/dist/factories/contracts/test/ERC20Test.sol/index.js +7 -0
  380. package/dist/factories/contracts/test/ERC20Test.sol/index.js.map +1 -0
  381. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +49 -0
  382. package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts.map +1 -0
  383. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +76 -0
  384. package/dist/factories/contracts/test/TestRemoteChallenger__factory.js.map +1 -0
  385. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts +157 -0
  386. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts.map +1 -0
  387. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js +216 -0
  388. package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js.map +1 -0
  389. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts +112 -0
  390. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts.map +1 -0
  391. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js +159 -0
  392. package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js.map +1 -0
  393. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +458 -0
  394. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts.map +1 -0
  395. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +605 -0
  396. package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js.map +1 -0
  397. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts +61 -0
  398. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts.map +1 -0
  399. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js +91 -0
  400. package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js.map +1 -0
  401. package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts +31 -0
  402. package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts.map +1 -0
  403. package/dist/factories/contracts/test/avs/TestSlasher__factory.js +52 -0
  404. package/dist/factories/contracts/test/avs/TestSlasher__factory.js.map +1 -0
  405. package/dist/factories/contracts/test/avs/index.d.ts +6 -0
  406. package/dist/factories/contracts/test/avs/index.d.ts.map +1 -0
  407. package/dist/factories/contracts/test/avs/index.js +9 -0
  408. package/dist/factories/contracts/test/avs/index.js.map +1 -0
  409. package/dist/factories/contracts/test/index.d.ts +3 -1
  410. package/dist/factories/contracts/test/index.d.ts.map +1 -1
  411. package/dist/factories/contracts/test/index.js +3 -1
  412. package/dist/factories/contracts/test/index.js.map +1 -1
  413. package/dist/factories/contracts/token/{HypERC20CollateralVaultDeposit__factory.d.ts → extensions/HypERC20CollateralVaultDeposit__factory.d.ts} +2 -2
  414. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.d.ts.map +1 -0
  415. package/dist/factories/contracts/token/{HypERC20CollateralVaultDeposit__factory.js → extensions/HypERC20CollateralVaultDeposit__factory.js} +1 -1
  416. package/dist/factories/contracts/token/extensions/HypERC20CollateralVaultDeposit__factory.js.map +1 -0
  417. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +429 -0
  418. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts.map +1 -0
  419. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +569 -0
  420. package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js.map +1 -0
  421. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +449 -0
  422. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts.map +1 -0
  423. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +595 -0
  424. package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js.map +1 -0
  425. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +429 -0
  426. package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts.map +1 -0
  427. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +569 -0
  428. package/dist/factories/contracts/token/extensions/HypXERC20__factory.js.map +1 -0
  429. package/dist/factories/contracts/token/extensions/index.d.ts +4 -0
  430. package/dist/factories/contracts/token/extensions/index.d.ts.map +1 -1
  431. package/dist/factories/contracts/token/extensions/index.js +4 -0
  432. package/dist/factories/contracts/token/extensions/index.js.map +1 -1
  433. package/dist/factories/contracts/token/index.d.ts +1 -1
  434. package/dist/factories/contracts/token/index.d.ts.map +1 -1
  435. package/dist/factories/contracts/token/index.js +1 -1
  436. package/dist/factories/contracts/token/index.js.map +1 -1
  437. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.d.ts +177 -0
  438. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.d.ts.map +1 -0
  439. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.js +236 -0
  440. package/dist/factories/contracts/token/interfaces/IFiatToken__factory.js.map +1 -0
  441. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts +87 -0
  442. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.d.ts.map +1 -0
  443. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js +117 -0
  444. package/dist/factories/contracts/token/interfaces/IXERC20Lockbox__factory.js.map +1 -0
  445. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts +205 -0
  446. package/dist/factories/contracts/token/interfaces/IXERC20__factory.d.ts.map +1 -0
  447. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js +271 -0
  448. package/dist/factories/contracts/token/interfaces/IXERC20__factory.js.map +1 -0
  449. package/dist/factories/contracts/token/interfaces/index.d.ts +4 -0
  450. package/dist/factories/contracts/token/interfaces/index.d.ts.map +1 -0
  451. package/dist/factories/contracts/token/interfaces/index.js +7 -0
  452. package/dist/factories/contracts/token/interfaces/index.js.map +1 -0
  453. package/dist/factories/fx-portal/contracts/index.d.ts +2 -0
  454. package/dist/factories/fx-portal/contracts/index.d.ts.map +1 -0
  455. package/dist/factories/fx-portal/contracts/index.js +5 -0
  456. package/dist/factories/fx-portal/contracts/index.js.map +1 -0
  457. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts +83 -0
  458. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts.map +1 -0
  459. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js +113 -0
  460. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js.map +1 -0
  461. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts +51 -0
  462. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts.map +1 -0
  463. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js +78 -0
  464. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js.map +1 -0
  465. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts +23 -0
  466. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts.map +1 -0
  467. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js +34 -0
  468. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js.map +1 -0
  469. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
  470. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
  471. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +7 -0
  472. package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
  473. package/dist/factories/fx-portal/contracts/tunnel/index.d.ts +2 -0
  474. package/dist/factories/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
  475. package/dist/factories/fx-portal/contracts/tunnel/index.js +5 -0
  476. package/dist/factories/fx-portal/contracts/tunnel/index.js.map +1 -0
  477. package/dist/factories/fx-portal/index.d.ts +2 -0
  478. package/dist/factories/fx-portal/index.d.ts.map +1 -0
  479. package/dist/factories/fx-portal/index.js +5 -0
  480. package/dist/factories/fx-portal/index.js.map +1 -0
  481. package/dist/factories/index.d.ts +1 -0
  482. package/dist/factories/index.d.ts.map +1 -1
  483. package/dist/factories/index.js +1 -0
  484. package/dist/factories/index.js.map +1 -1
  485. package/dist/fx-portal/contracts/index.d.ts +3 -0
  486. package/dist/fx-portal/contracts/index.d.ts.map +1 -0
  487. package/dist/fx-portal/contracts/index.js +2 -0
  488. package/dist/fx-portal/contracts/index.js.map +1 -0
  489. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts +172 -0
  490. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts.map +1 -0
  491. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js +2 -0
  492. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js.map +1 -0
  493. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts +122 -0
  494. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts.map +1 -0
  495. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js +2 -0
  496. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js.map +1 -0
  497. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts +66 -0
  498. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts.map +1 -0
  499. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js +2 -0
  500. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js.map +1 -0
  501. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
  502. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
  503. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +2 -0
  504. package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
  505. package/dist/fx-portal/contracts/tunnel/index.d.ts +3 -0
  506. package/dist/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
  507. package/dist/fx-portal/contracts/tunnel/index.js +2 -0
  508. package/dist/fx-portal/contracts/tunnel/index.js.map +1 -0
  509. package/dist/fx-portal/index.d.ts +3 -0
  510. package/dist/fx-portal/index.d.ts.map +1 -0
  511. package/dist/fx-portal/index.js +2 -0
  512. package/dist/fx-portal/index.js.map +1 -0
  513. package/dist/index.d.ts +78 -4
  514. package/dist/index.d.ts.map +1 -1
  515. package/dist/index.js +38 -2
  516. package/dist/index.js.map +1 -1
  517. package/package.json +7 -5
  518. package/dist/contracts/test/ERC20Test.d.ts.map +0 -1
  519. package/dist/contracts/test/ERC20Test.js.map +0 -1
  520. package/dist/contracts/token/HypERC20CollateralVaultDeposit.d.ts.map +0 -1
  521. package/dist/contracts/token/HypERC20CollateralVaultDeposit.js.map +0 -1
  522. package/dist/factories/contracts/test/ERC20Test__factory.d.ts.map +0 -1
  523. package/dist/factories/contracts/test/ERC20Test__factory.js.map +0 -1
  524. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.d.ts.map +0 -1
  525. package/dist/factories/contracts/token/HypERC20CollateralVaultDeposit__factory.js.map +0 -1
  526. /package/dist/contracts/test/{ERC20Test.js → ERC20Test.sol/ERC20Test.js} +0 -0
  527. /package/dist/contracts/token/{HypERC20CollateralVaultDeposit.js → extensions/HypERC20CollateralVaultDeposit.js} +0 -0
@@ -0,0 +1,626 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.12;
3
+
4
+ import {ECDSAStakeRegistryStorage, Quorum, StrategyParams} from "./ECDSAStakeRegistryStorage.sol";
5
+ import {IStrategy} from "../interfaces/avs/vendored/IStrategy.sol";
6
+ import {IDelegationManager} from "../interfaces/avs/vendored/IDelegationManager.sol";
7
+ import {ISignatureUtils} from "../interfaces/avs/vendored/ISignatureUtils.sol";
8
+ import {IServiceManager} from "../interfaces/avs/vendored/IServiceManager.sol";
9
+
10
+ import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
11
+ import {CheckpointsUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol";
12
+ import {SignatureCheckerUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/cryptography/SignatureCheckerUpgradeable.sol";
13
+ import {IERC1271Upgradeable} from "@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.sol";
14
+
15
+ /// @title ECDSA Stake Registry
16
+ /// @author Layr Labs, Inc.
17
+ /// @dev THIS CONTRACT IS NOT AUDITED
18
+ /// @notice Manages operator registration and quorum updates for an AVS using ECDSA signatures.
19
+ contract ECDSAStakeRegistry is
20
+ IERC1271Upgradeable,
21
+ OwnableUpgradeable,
22
+ ECDSAStakeRegistryStorage
23
+ {
24
+ using SignatureCheckerUpgradeable for address;
25
+ using CheckpointsUpgradeable for CheckpointsUpgradeable.History;
26
+
27
+ /// @dev Constructor to create ECDSAStakeRegistry.
28
+ /// @param _delegationManager Address of the DelegationManager contract that this registry interacts with.
29
+ constructor(
30
+ IDelegationManager _delegationManager
31
+ ) ECDSAStakeRegistryStorage(_delegationManager) {
32
+ // _disableInitializers();
33
+ }
34
+
35
+ /// @notice Initializes the contract with the given parameters.
36
+ /// @param _serviceManager The address of the service manager.
37
+ /// @param _thresholdWeight The threshold weight in basis points.
38
+ /// @param _quorum The quorum struct containing the details of the quorum thresholds.
39
+ function initialize(
40
+ address _serviceManager,
41
+ uint256 _thresholdWeight,
42
+ Quorum memory _quorum
43
+ ) external initializer {
44
+ __ECDSAStakeRegistry_init(_serviceManager, _thresholdWeight, _quorum);
45
+ }
46
+
47
+ /// @notice Registers a new operator using a provided signature and signing key
48
+ /// @param _operatorSignature Contains the operator's signature, salt, and expiry
49
+ /// @param _signingKey The signing key to add to the operator's history
50
+ function registerOperatorWithSignature(
51
+ ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature,
52
+ address _signingKey
53
+ ) external {
54
+ _registerOperatorWithSig(msg.sender, _operatorSignature, _signingKey);
55
+ }
56
+
57
+ /// @notice Deregisters an existing operator
58
+ function deregisterOperator() external {
59
+ _deregisterOperator(msg.sender);
60
+ }
61
+
62
+ /**
63
+ * @notice Updates the signing key for an operator
64
+ * @dev Only callable by the operator themselves
65
+ * @param _newSigningKey The new signing key to set for the operator
66
+ */
67
+ function updateOperatorSigningKey(address _newSigningKey) external {
68
+ if (!_operatorRegistered[msg.sender]) {
69
+ revert OperatorNotRegistered();
70
+ }
71
+ _updateOperatorSigningKey(msg.sender, _newSigningKey);
72
+ }
73
+
74
+ /**
75
+ * @notice Updates the StakeRegistry's view of one or more operators' stakes adding a new entry in their history of stake checkpoints,
76
+ * @dev Queries stakes from the Eigenlayer core DelegationManager contract
77
+ * @param _operators A list of operator addresses to update
78
+ */
79
+ function updateOperators(address[] memory _operators) external {
80
+ _updateOperators(_operators);
81
+ }
82
+
83
+ /**
84
+ * @notice Updates the quorum configuration and the set of operators
85
+ * @dev Only callable by the contract owner.
86
+ * It first updates the quorum configuration and then updates the list of operators.
87
+ * @param _quorum The new quorum configuration, including strategies and their new weights
88
+ * @param _operators The list of operator addresses to update stakes for
89
+ */
90
+ function updateQuorumConfig(
91
+ Quorum memory _quorum,
92
+ address[] memory _operators
93
+ ) external onlyOwner {
94
+ _updateQuorumConfig(_quorum);
95
+ _updateOperators(_operators);
96
+ }
97
+
98
+ /// @notice Updates the weight an operator must have to join the operator set
99
+ /// @dev Access controlled to the contract owner
100
+ /// @param _newMinimumWeight The new weight an operator must have to join the operator set
101
+ function updateMinimumWeight(
102
+ uint256 _newMinimumWeight,
103
+ address[] memory _operators
104
+ ) external onlyOwner {
105
+ _updateMinimumWeight(_newMinimumWeight);
106
+ _updateOperators(_operators);
107
+ }
108
+
109
+ /**
110
+ * @notice Sets a new cumulative threshold weight for message validation by operator set signatures.
111
+ * @dev This function can only be invoked by the owner of the contract. It delegates the update to
112
+ * an internal function `_updateStakeThreshold`.
113
+ * @param _thresholdWeight The updated threshold weight required to validate a message. This is the
114
+ * cumulative weight that must be met or exceeded by the sum of the stakes of the signatories for
115
+ * a message to be deemed valid.
116
+ */
117
+ function updateStakeThreshold(uint256 _thresholdWeight) external onlyOwner {
118
+ _updateStakeThreshold(_thresholdWeight);
119
+ }
120
+
121
+ /// @notice Verifies if the provided signature data is valid for the given data hash.
122
+ /// @param _dataHash The hash of the data that was signed.
123
+ /// @param _signatureData Encoded signature data consisting of an array of operators, an array of signatures, and a reference block number.
124
+ /// @return The function selector that indicates the signature is valid according to ERC1271 standard.
125
+ function isValidSignature(
126
+ bytes32 _dataHash,
127
+ bytes memory _signatureData
128
+ ) external view returns (bytes4) {
129
+ (
130
+ address[] memory operators,
131
+ bytes[] memory signatures,
132
+ uint32 referenceBlock
133
+ ) = abi.decode(_signatureData, (address[], bytes[], uint32));
134
+ _checkSignatures(_dataHash, operators, signatures, referenceBlock);
135
+ return IERC1271Upgradeable.isValidSignature.selector;
136
+ }
137
+
138
+ /// @notice Retrieves the current stake quorum details.
139
+ /// @return Quorum - The current quorum of strategies and weights
140
+ function quorum() external view returns (Quorum memory) {
141
+ return _quorum;
142
+ }
143
+
144
+ /**
145
+ * @notice Retrieves the latest signing key for a given operator.
146
+ * @param _operator The address of the operator.
147
+ * @return The latest signing key of the operator.
148
+ */
149
+ function getLastestOperatorSigningKey(
150
+ address _operator
151
+ ) external view returns (address) {
152
+ return address(uint160(_operatorSigningKeyHistory[_operator].latest()));
153
+ }
154
+
155
+ /**
156
+ * @notice Retrieves the latest signing key for a given operator at a specific block number.
157
+ * @param _operator The address of the operator.
158
+ * @param _blockNumber The block number to get the operator's signing key.
159
+ * @return The signing key of the operator at the given block.
160
+ */
161
+ function getOperatorSigningKeyAtBlock(
162
+ address _operator,
163
+ uint256 _blockNumber
164
+ ) external view returns (address) {
165
+ return
166
+ address(
167
+ uint160(
168
+ _operatorSigningKeyHistory[_operator].getAtBlock(
169
+ _blockNumber
170
+ )
171
+ )
172
+ );
173
+ }
174
+
175
+ /// @notice Retrieves the last recorded weight for a given operator.
176
+ /// @param _operator The address of the operator.
177
+ /// @return uint256 - The latest weight of the operator.
178
+ function getLastCheckpointOperatorWeight(
179
+ address _operator
180
+ ) external view returns (uint256) {
181
+ return _operatorWeightHistory[_operator].latest();
182
+ }
183
+
184
+ /// @notice Retrieves the last recorded total weight across all operators.
185
+ /// @return uint256 - The latest total weight.
186
+ function getLastCheckpointTotalWeight() external view returns (uint256) {
187
+ return _totalWeightHistory.latest();
188
+ }
189
+
190
+ /// @notice Retrieves the last recorded threshold weight
191
+ /// @return uint256 - The latest threshold weight.
192
+ function getLastCheckpointThresholdWeight()
193
+ external
194
+ view
195
+ returns (uint256)
196
+ {
197
+ return _thresholdWeightHistory.latest();
198
+ }
199
+
200
+ /// @notice Retrieves the operator's weight at a specific block number.
201
+ /// @param _operator The address of the operator.
202
+ /// @param _blockNumber The block number to get the operator weight for the quorum
203
+ /// @return uint256 - The weight of the operator at the given block.
204
+ function getOperatorWeightAtBlock(
205
+ address _operator,
206
+ uint32 _blockNumber
207
+ ) external view returns (uint256) {
208
+ return _operatorWeightHistory[_operator].getAtBlock(_blockNumber);
209
+ }
210
+
211
+ /// @notice Retrieves the total weight at a specific block number.
212
+ /// @param _blockNumber The block number to get the total weight for the quorum
213
+ /// @return uint256 - The total weight at the given block.
214
+ function getLastCheckpointTotalWeightAtBlock(
215
+ uint32 _blockNumber
216
+ ) external view returns (uint256) {
217
+ return _totalWeightHistory.getAtBlock(_blockNumber);
218
+ }
219
+
220
+ /// @notice Retrieves the threshold weight at a specific block number.
221
+ /// @param _blockNumber The block number to get the threshold weight for the quorum
222
+ /// @return uint256 - The threshold weight the given block.
223
+ function getLastCheckpointThresholdWeightAtBlock(
224
+ uint32 _blockNumber
225
+ ) external view returns (uint256) {
226
+ return _thresholdWeightHistory.getAtBlock(_blockNumber);
227
+ }
228
+
229
+ function operatorRegistered(
230
+ address _operator
231
+ ) external view returns (bool) {
232
+ return _operatorRegistered[_operator];
233
+ }
234
+
235
+ /// @notice Returns the weight an operator must have to contribute to validating an AVS
236
+ function minimumWeight() external view returns (uint256) {
237
+ return _minimumWeight;
238
+ }
239
+
240
+ /// @notice Calculates the current weight of an operator based on their delegated stake in the strategies considered in the quorum
241
+ /// @param _operator The address of the operator.
242
+ /// @return uint256 - The current weight of the operator; returns 0 if below the threshold.
243
+ function getOperatorWeight(
244
+ address _operator
245
+ ) public view returns (uint256) {
246
+ StrategyParams[] memory strategyParams = _quorum.strategies;
247
+ uint256 weight;
248
+ IStrategy[] memory strategies = new IStrategy[](strategyParams.length);
249
+ for (uint256 i; i < strategyParams.length; i++) {
250
+ strategies[i] = strategyParams[i].strategy;
251
+ }
252
+ uint256[] memory shares = DELEGATION_MANAGER.getOperatorShares(
253
+ _operator,
254
+ strategies
255
+ );
256
+ for (uint256 i; i < strategyParams.length; i++) {
257
+ weight += shares[i] * strategyParams[i].multiplier;
258
+ }
259
+ weight = weight / BPS;
260
+
261
+ if (weight >= _minimumWeight) {
262
+ return weight;
263
+ } else {
264
+ return 0;
265
+ }
266
+ }
267
+
268
+ /// @notice Initializes state for the StakeRegistry
269
+ /// @param _serviceManagerAddr The AVS' ServiceManager contract's address
270
+ function __ECDSAStakeRegistry_init(
271
+ address _serviceManagerAddr,
272
+ uint256 _thresholdWeight,
273
+ Quorum memory _quorum
274
+ ) internal onlyInitializing {
275
+ _serviceManager = _serviceManagerAddr;
276
+ _updateStakeThreshold(_thresholdWeight);
277
+ _updateQuorumConfig(_quorum);
278
+ __Ownable_init();
279
+ }
280
+
281
+ /// @notice Updates the set of operators for the first quorum.
282
+ /// @param operatorsPerQuorum An array of operator address arrays, one for each quorum.
283
+ /// @dev This interface maintains compatibility with avs-sync which handles multiquorums while this registry has a single quorum
284
+ function updateOperatorsForQuorum(
285
+ address[][] memory operatorsPerQuorum,
286
+ bytes memory
287
+ ) external {
288
+ _updateAllOperators(operatorsPerQuorum[0]);
289
+ }
290
+
291
+ /// @dev Updates the list of operators if the provided list has the correct number of operators.
292
+ /// Reverts if the provided list of operators does not match the expected total count of operators.
293
+ /// @param _operators The list of operator addresses to update.
294
+ function _updateAllOperators(address[] memory _operators) internal {
295
+ if (_operators.length != _totalOperators) {
296
+ revert MustUpdateAllOperators();
297
+ }
298
+ _updateOperators(_operators);
299
+ }
300
+
301
+ /// @dev Updates the weights for a given list of operator addresses.
302
+ /// When passing an operator that isn't registered, then 0 is added to their history
303
+ /// @param _operators An array of addresses for which to update the weights.
304
+ function _updateOperators(address[] memory _operators) internal {
305
+ int256 delta;
306
+ for (uint256 i; i < _operators.length; i++) {
307
+ delta += _updateOperatorWeight(_operators[i]);
308
+ }
309
+ _updateTotalWeight(delta);
310
+ }
311
+
312
+ /// @dev Updates the stake threshold weight and records the history.
313
+ /// @param _thresholdWeight The new threshold weight to set and record in the history.
314
+ function _updateStakeThreshold(uint256 _thresholdWeight) internal {
315
+ _thresholdWeightHistory.push(_thresholdWeight);
316
+ emit ThresholdWeightUpdated(_thresholdWeight);
317
+ }
318
+
319
+ /// @dev Updates the weight an operator must have to join the operator set
320
+ /// @param _newMinimumWeight The new weight an operator must have to join the operator set
321
+ function _updateMinimumWeight(uint256 _newMinimumWeight) internal {
322
+ uint256 oldMinimumWeight = _minimumWeight;
323
+ _minimumWeight = _newMinimumWeight;
324
+ emit MinimumWeightUpdated(oldMinimumWeight, _newMinimumWeight);
325
+ }
326
+
327
+ /// @notice Updates the quorum configuration
328
+ /// @dev Replaces the current quorum configuration with `_newQuorum` if valid.
329
+ /// Reverts with `InvalidQuorum` if the new quorum configuration is not valid.
330
+ /// Emits `QuorumUpdated` event with the old and new quorum configurations.
331
+ /// @param _newQuorum The new quorum configuration to set.
332
+ function _updateQuorumConfig(Quorum memory _newQuorum) internal {
333
+ if (!_isValidQuorum(_newQuorum)) {
334
+ revert InvalidQuorum();
335
+ }
336
+ Quorum memory oldQuorum = _quorum;
337
+ delete _quorum;
338
+ for (uint256 i; i < _newQuorum.strategies.length; i++) {
339
+ _quorum.strategies.push(_newQuorum.strategies[i]);
340
+ }
341
+ emit QuorumUpdated(oldQuorum, _newQuorum);
342
+ }
343
+
344
+ /// @dev Internal function to deregister an operator
345
+ /// @param _operator The operator's address to deregister
346
+ function _deregisterOperator(address _operator) internal {
347
+ if (!_operatorRegistered[_operator]) {
348
+ revert OperatorNotRegistered();
349
+ }
350
+ _totalOperators--;
351
+ delete _operatorRegistered[_operator];
352
+ int256 delta = _updateOperatorWeight(_operator);
353
+ _updateTotalWeight(delta);
354
+ IServiceManager(_serviceManager).deregisterOperatorFromAVS(_operator);
355
+ emit OperatorDeregistered(_operator, address(_serviceManager));
356
+ }
357
+
358
+ /// @dev registers an operator through a provided signature
359
+ /// @param _operatorSignature Contains the operator's signature, salt, and expiry
360
+ /// @param _signingKey The signing key to add to the operator's history
361
+ function _registerOperatorWithSig(
362
+ address _operator,
363
+ ISignatureUtils.SignatureWithSaltAndExpiry memory _operatorSignature,
364
+ address _signingKey
365
+ ) internal virtual {
366
+ if (_operatorRegistered[_operator]) {
367
+ revert OperatorAlreadyRegistered();
368
+ }
369
+ _totalOperators++;
370
+ _operatorRegistered[_operator] = true;
371
+ int256 delta = _updateOperatorWeight(_operator);
372
+ _updateTotalWeight(delta);
373
+ _updateOperatorSigningKey(_operator, _signingKey);
374
+ IServiceManager(_serviceManager).registerOperatorToAVS(
375
+ _operator,
376
+ _operatorSignature
377
+ );
378
+ emit OperatorRegistered(_operator, _serviceManager);
379
+ }
380
+
381
+ /// @dev Internal function to update an operator's signing key
382
+ /// @param _operator The address of the operator to update the signing key for
383
+ /// @param _newSigningKey The new signing key to set for the operator
384
+ function _updateOperatorSigningKey(
385
+ address _operator,
386
+ address _newSigningKey
387
+ ) internal {
388
+ address oldSigningKey = address(
389
+ uint160(_operatorSigningKeyHistory[_operator].latest())
390
+ );
391
+ if (_newSigningKey == oldSigningKey) {
392
+ return;
393
+ }
394
+ _operatorSigningKeyHistory[_operator].push(uint160(_newSigningKey));
395
+ emit SigningKeyUpdate(
396
+ _operator,
397
+ block.number,
398
+ _newSigningKey,
399
+ oldSigningKey
400
+ );
401
+ }
402
+
403
+ /// @notice Updates the weight of an operator and returns the previous and current weights.
404
+ /// @param _operator The address of the operator to update the weight of.
405
+ function _updateOperatorWeight(
406
+ address _operator
407
+ ) internal virtual returns (int256) {
408
+ int256 delta;
409
+ uint256 newWeight;
410
+ uint256 oldWeight = _operatorWeightHistory[_operator].latest();
411
+ if (!_operatorRegistered[_operator]) {
412
+ delta -= int256(oldWeight);
413
+ if (delta == 0) {
414
+ return delta;
415
+ }
416
+ _operatorWeightHistory[_operator].push(0);
417
+ } else {
418
+ newWeight = getOperatorWeight(_operator);
419
+ delta = int256(newWeight) - int256(oldWeight);
420
+ if (delta == 0) {
421
+ return delta;
422
+ }
423
+ _operatorWeightHistory[_operator].push(newWeight);
424
+ }
425
+ emit OperatorWeightUpdated(_operator, oldWeight, newWeight);
426
+ return delta;
427
+ }
428
+
429
+ /// @dev Internal function to update the total weight of the stake
430
+ /// @param delta The change in stake applied last total weight
431
+ /// @return oldTotalWeight The weight before the update
432
+ /// @return newTotalWeight The updated weight after applying the delta
433
+ function _updateTotalWeight(
434
+ int256 delta
435
+ ) internal returns (uint256 oldTotalWeight, uint256 newTotalWeight) {
436
+ oldTotalWeight = _totalWeightHistory.latest();
437
+ int256 newWeight = int256(oldTotalWeight) + delta;
438
+ newTotalWeight = uint256(newWeight);
439
+ _totalWeightHistory.push(newTotalWeight);
440
+ emit TotalWeightUpdated(oldTotalWeight, newTotalWeight);
441
+ }
442
+
443
+ /**
444
+ * @dev Verifies that a specified quorum configuration is valid. A valid quorum has:
445
+ * 1. Weights that sum to exactly 10,000 basis points, ensuring proportional representation.
446
+ * 2. Unique strategies without duplicates to maintain quorum integrity.
447
+ * @param _quorum The quorum configuration to be validated.
448
+ * @return bool True if the quorum configuration is valid, otherwise false.
449
+ */
450
+ function _isValidQuorum(
451
+ Quorum memory _quorum
452
+ ) internal pure returns (bool) {
453
+ StrategyParams[] memory strategies = _quorum.strategies;
454
+ address lastStrategy;
455
+ address currentStrategy;
456
+ uint256 totalMultiplier;
457
+ for (uint256 i; i < strategies.length; i++) {
458
+ currentStrategy = address(strategies[i].strategy);
459
+ if (lastStrategy >= currentStrategy) revert NotSorted();
460
+ lastStrategy = currentStrategy;
461
+ totalMultiplier += strategies[i].multiplier;
462
+ }
463
+ if (totalMultiplier != BPS) {
464
+ return false;
465
+ } else {
466
+ return true;
467
+ }
468
+ }
469
+
470
+ /**
471
+ * @notice Common logic to verify a batch of ECDSA signatures against a hash, using either last stake weight or at a specific block.
472
+ * @param _dataHash The hash of the data the signers endorsed.
473
+ * @param _operators A collection of addresses that endorsed the data hash.
474
+ * @param _signatures A collection of signatures matching the signers.
475
+ * @param _referenceBlock The block number for evaluating stake weight; use max uint32 for latest weight.
476
+ */
477
+ function _checkSignatures(
478
+ bytes32 _dataHash,
479
+ address[] memory _operators,
480
+ bytes[] memory _signatures,
481
+ uint32 _referenceBlock
482
+ ) internal view {
483
+ uint256 signersLength = _operators.length;
484
+ address currentOperator;
485
+ address lastOperator;
486
+ address signer;
487
+ uint256 signedWeight;
488
+
489
+ _validateSignaturesLength(signersLength, _signatures.length);
490
+ for (uint256 i; i < signersLength; i++) {
491
+ currentOperator = _operators[i];
492
+ signer = _getOperatorSigningKey(currentOperator, _referenceBlock);
493
+
494
+ _validateSortedSigners(lastOperator, currentOperator);
495
+ _validateSignature(signer, _dataHash, _signatures[i]);
496
+
497
+ lastOperator = currentOperator;
498
+ uint256 operatorWeight = _getOperatorWeight(
499
+ currentOperator,
500
+ _referenceBlock
501
+ );
502
+ signedWeight += operatorWeight;
503
+ }
504
+
505
+ _validateThresholdStake(signedWeight, _referenceBlock);
506
+ }
507
+
508
+ /// @notice Validates that the number of signers equals the number of signatures, and neither is zero.
509
+ /// @param _signersLength The number of signers.
510
+ /// @param _signaturesLength The number of signatures.
511
+ function _validateSignaturesLength(
512
+ uint256 _signersLength,
513
+ uint256 _signaturesLength
514
+ ) internal pure {
515
+ if (_signersLength != _signaturesLength) {
516
+ revert LengthMismatch();
517
+ }
518
+ if (_signersLength == 0) {
519
+ revert InvalidLength();
520
+ }
521
+ }
522
+
523
+ /// @notice Ensures that signers are sorted in ascending order by address.
524
+ /// @param _lastSigner The address of the last signer.
525
+ /// @param _currentSigner The address of the current signer.
526
+ function _validateSortedSigners(
527
+ address _lastSigner,
528
+ address _currentSigner
529
+ ) internal pure {
530
+ if (_lastSigner >= _currentSigner) {
531
+ revert NotSorted();
532
+ }
533
+ }
534
+
535
+ /// @notice Validates a given signature against the signer's address and data hash.
536
+ /// @param _signer The address of the signer to validate.
537
+ /// @param _dataHash The hash of the data that is signed.
538
+ /// @param _signature The signature to validate.
539
+ function _validateSignature(
540
+ address _signer,
541
+ bytes32 _dataHash,
542
+ bytes memory _signature
543
+ ) internal view {
544
+ if (!_signer.isValidSignatureNow(_dataHash, _signature)) {
545
+ revert InvalidSignature();
546
+ }
547
+ }
548
+
549
+ /// @notice Retrieves the operator weight for a signer, either at the last checkpoint or a specified block.
550
+ /// @param _operator The operator to query their signing key history for
551
+ /// @param _referenceBlock The block number to query the operator's weight at, or the maximum uint32 value for the last checkpoint.
552
+ /// @return The weight of the operator.
553
+ function _getOperatorSigningKey(
554
+ address _operator,
555
+ uint32 _referenceBlock
556
+ ) internal view returns (address) {
557
+ if (_referenceBlock >= block.number) {
558
+ revert InvalidReferenceBlock();
559
+ }
560
+ return
561
+ address(
562
+ uint160(
563
+ _operatorSigningKeyHistory[_operator].getAtBlock(
564
+ _referenceBlock
565
+ )
566
+ )
567
+ );
568
+ }
569
+
570
+ /// @notice Retrieves the operator weight for a signer, either at the last checkpoint or a specified block.
571
+ /// @param _signer The address of the signer whose weight is returned.
572
+ /// @param _referenceBlock The block number to query the operator's weight at, or the maximum uint32 value for the last checkpoint.
573
+ /// @return The weight of the operator.
574
+ function _getOperatorWeight(
575
+ address _signer,
576
+ uint32 _referenceBlock
577
+ ) internal view returns (uint256) {
578
+ if (_referenceBlock >= block.number) {
579
+ revert InvalidReferenceBlock();
580
+ }
581
+ return _operatorWeightHistory[_signer].getAtBlock(_referenceBlock);
582
+ }
583
+
584
+ /// @notice Retrieve the total stake weight at a specific block or the latest if not specified.
585
+ /// @dev If the `_referenceBlock` is the maximum value for uint32, the latest total weight is returned.
586
+ /// @param _referenceBlock The block number to retrieve the total stake weight from.
587
+ /// @return The total stake weight at the given block or the latest if the given block is the max uint32 value.
588
+ function _getTotalWeight(
589
+ uint32 _referenceBlock
590
+ ) internal view returns (uint256) {
591
+ if (_referenceBlock >= block.number) {
592
+ revert InvalidReferenceBlock();
593
+ }
594
+ return _totalWeightHistory.getAtBlock(_referenceBlock);
595
+ }
596
+
597
+ /// @notice Retrieves the threshold stake for a given reference block.
598
+ /// @param _referenceBlock The block number to query the threshold stake for.
599
+ /// If set to the maximum uint32 value, it retrieves the latest threshold stake.
600
+ /// @return The threshold stake in basis points for the reference block.
601
+ function _getThresholdStake(
602
+ uint32 _referenceBlock
603
+ ) internal view returns (uint256) {
604
+ if (_referenceBlock >= block.number) {
605
+ revert InvalidReferenceBlock();
606
+ }
607
+ return _thresholdWeightHistory.getAtBlock(_referenceBlock);
608
+ }
609
+
610
+ /// @notice Validates that the cumulative stake of signed messages meets or exceeds the required threshold.
611
+ /// @param _signedWeight The cumulative weight of the signers that have signed the message.
612
+ /// @param _referenceBlock The block number to verify the stake threshold for
613
+ function _validateThresholdStake(
614
+ uint256 _signedWeight,
615
+ uint32 _referenceBlock
616
+ ) internal view {
617
+ uint256 totalWeight = _getTotalWeight(_referenceBlock);
618
+ if (_signedWeight > totalWeight) {
619
+ revert InvalidSignedWeight();
620
+ }
621
+ uint256 thresholdStake = _getThresholdStake(_referenceBlock);
622
+ if (thresholdStake > _signedWeight) {
623
+ revert InsufficientSignedStake();
624
+ }
625
+ }
626
+ }
@@ -0,0 +1,59 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.12;
3
+
4
+ import {IDelegationManager} from "../interfaces/avs/vendored/IDelegationManager.sol";
5
+ import {CheckpointsUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/CheckpointsUpgradeable.sol";
6
+ import {IECDSAStakeRegistryEventsAndErrors, Quorum, StrategyParams} from "../interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.sol";
7
+
8
+ /// @author Layr Labs, Inc.
9
+ abstract contract ECDSAStakeRegistryStorage is
10
+ IECDSAStakeRegistryEventsAndErrors
11
+ {
12
+ /// @notice Manages staking delegations through the DelegationManager interface
13
+ IDelegationManager internal immutable DELEGATION_MANAGER;
14
+
15
+ /// @dev The total amount of multipliers to weigh stakes
16
+ uint256 internal constant BPS = 10_000;
17
+
18
+ /// @notice The size of the current operator set
19
+ uint256 internal _totalOperators;
20
+
21
+ /// @notice Stores the current quorum configuration
22
+ Quorum internal _quorum;
23
+
24
+ /// @notice Specifies the weight required to become an operator
25
+ uint256 internal _minimumWeight;
26
+
27
+ /// @notice Holds the address of the service manager
28
+ address internal _serviceManager;
29
+
30
+ /// @notice Defines the duration after which the stake's weight expires.
31
+ uint256 internal _stakeExpiry;
32
+
33
+ /// @notice Maps an operator to their signing key history using checkpoints
34
+ mapping(address => CheckpointsUpgradeable.History)
35
+ internal _operatorSigningKeyHistory;
36
+
37
+ /// @notice Tracks the total stake history over time using checkpoints
38
+ CheckpointsUpgradeable.History internal _totalWeightHistory;
39
+
40
+ /// @notice Tracks the threshold bps history using checkpoints
41
+ CheckpointsUpgradeable.History internal _thresholdWeightHistory;
42
+
43
+ /// @notice Maps operator addresses to their respective stake histories using checkpoints
44
+ mapping(address => CheckpointsUpgradeable.History)
45
+ internal _operatorWeightHistory;
46
+
47
+ /// @notice Maps an operator to their registration status
48
+ mapping(address => bool) internal _operatorRegistered;
49
+
50
+ /// @param _delegationManager Connects this registry with the DelegationManager
51
+ constructor(IDelegationManager _delegationManager) {
52
+ DELEGATION_MANAGER = _delegationManager;
53
+ }
54
+
55
+ // slither-disable-next-line shadowing-state
56
+ /// @dev Reserves storage slots for future upgrades
57
+ // solhint-disable-next-line
58
+ uint256[40] private __gap;
59
+ }