@hyperlane-xyz/sdk 3.20.0-beta0 → 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 (450) hide show
  1. package/README.md +0 -15
  2. package/dist/aws/s3.d.ts +22 -0
  3. package/dist/aws/s3.d.ts.map +1 -0
  4. package/dist/aws/s3.js +61 -0
  5. package/dist/aws/s3.js.map +1 -0
  6. package/dist/aws/validator.d.ts +17 -0
  7. package/dist/aws/validator.d.ts.map +1 -0
  8. package/dist/aws/validator.js +76 -0
  9. package/dist/aws/validator.js.map +1 -0
  10. package/dist/consts/{crud.d.ts → concurrency.d.ts} +1 -1
  11. package/dist/consts/concurrency.d.ts.map +1 -0
  12. package/dist/consts/{crud.js → concurrency.js} +1 -1
  13. package/dist/consts/concurrency.js.map +1 -0
  14. package/dist/consts/multisigIsm.d.ts.map +1 -1
  15. package/dist/consts/multisigIsm.js +15 -0
  16. package/dist/consts/multisigIsm.js.map +1 -1
  17. package/dist/consts/testChains.d.ts +3 -1
  18. package/dist/consts/testChains.d.ts.map +1 -1
  19. package/dist/consts/testChains.js +14 -0
  20. package/dist/consts/testChains.js.map +1 -1
  21. package/dist/contracts/contracts.d.ts +1 -0
  22. package/dist/contracts/contracts.d.ts.map +1 -1
  23. package/dist/contracts/contracts.js +4 -0
  24. package/dist/contracts/contracts.js.map +1 -1
  25. package/dist/core/AbstractHyperlaneModule.d.ts +18 -0
  26. package/dist/core/AbstractHyperlaneModule.d.ts.map +1 -0
  27. package/dist/{crud/AbstractCrudModule.js → core/AbstractHyperlaneModule.js} +2 -2
  28. package/dist/core/AbstractHyperlaneModule.js.map +1 -0
  29. package/dist/core/CoreDeployer.hardhat-test.js +8 -11
  30. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  31. package/dist/core/EvmCoreModule.d.ts +71 -0
  32. package/dist/core/EvmCoreModule.d.ts.map +1 -0
  33. package/dist/core/EvmCoreModule.hardhat-test.d.ts +2 -0
  34. package/dist/core/EvmCoreModule.hardhat-test.d.ts.map +1 -0
  35. package/dist/core/EvmCoreModule.hardhat-test.js +101 -0
  36. package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -0
  37. package/dist/core/EvmCoreModule.js +147 -0
  38. package/dist/core/EvmCoreModule.js.map +1 -0
  39. package/dist/core/{read.d.ts → EvmCoreReader.d.ts} +3 -3
  40. package/dist/core/EvmCoreReader.d.ts.map +1 -0
  41. package/dist/core/{read.js → EvmCoreReader.js} +4 -4
  42. package/dist/core/EvmCoreReader.js.map +1 -0
  43. package/dist/core/EvmIcaModule.d.ts +30 -0
  44. package/dist/core/EvmIcaModule.d.ts.map +1 -0
  45. package/dist/core/EvmIcaModule.hardhat-test.d.ts +2 -0
  46. package/dist/core/EvmIcaModule.hardhat-test.d.ts.map +1 -0
  47. package/dist/core/EvmIcaModule.hardhat-test.js +35 -0
  48. package/dist/core/EvmIcaModule.hardhat-test.js.map +1 -0
  49. package/dist/core/EvmIcaModule.js +36 -0
  50. package/dist/core/EvmIcaModule.js.map +1 -0
  51. package/dist/core/HyperlaneCore.d.ts +8 -3
  52. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  53. package/dist/core/HyperlaneCore.js +24 -15
  54. package/dist/core/HyperlaneCore.js.map +1 -1
  55. package/dist/core/HyperlaneCoreDeployer.d.ts +1 -1
  56. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  57. package/dist/core/HyperlaneCoreDeployer.js +12 -8
  58. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  59. package/dist/core/schemas.d.ts +2222 -0
  60. package/dist/core/schemas.d.ts.map +1 -0
  61. package/dist/core/schemas.js +9 -0
  62. package/dist/core/schemas.js.map +1 -0
  63. package/dist/core/types.d.ts +4 -7
  64. package/dist/core/types.d.ts.map +1 -1
  65. package/dist/core/types.js.map +1 -1
  66. package/dist/deploy/HyperlaneAppChecker.d.ts +2 -2
  67. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  68. package/dist/deploy/HyperlaneAppChecker.js +2 -5
  69. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  70. package/dist/deploy/HyperlaneDeployer.d.ts +8 -6
  71. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  72. package/dist/deploy/HyperlaneDeployer.js +35 -32
  73. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  74. package/dist/deploy/schemas.d.ts +2 -62
  75. package/dist/deploy/schemas.d.ts.map +1 -1
  76. package/dist/deploy/schemas.js +1 -2
  77. package/dist/deploy/schemas.js.map +1 -1
  78. package/dist/deploy/types.d.ts +2 -13
  79. package/dist/deploy/types.d.ts.map +1 -1
  80. package/dist/deploy/types.js +0 -16
  81. package/dist/deploy/types.js.map +1 -1
  82. package/dist/deploy/verify/ContractVerifier.js +2 -2
  83. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  84. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  85. package/dist/gas/HyperlaneIgpChecker.js +12 -2
  86. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  87. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  88. package/dist/gas/HyperlaneIgpDeployer.js +20 -8
  89. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  90. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +5 -4
  91. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -1
  92. package/dist/gas/oracle/types.d.ts +20 -7
  93. package/dist/gas/oracle/types.d.ts.map +1 -1
  94. package/dist/gas/oracle/types.js +10 -4
  95. package/dist/gas/oracle/types.js.map +1 -1
  96. package/dist/gas/types.d.ts +4 -10
  97. package/dist/gas/types.d.ts.map +1 -1
  98. package/dist/gas/types.js.map +1 -1
  99. package/dist/hook/EvmHookModule.d.ts +24 -0
  100. package/dist/hook/EvmHookModule.d.ts.map +1 -0
  101. package/dist/{crud → hook}/EvmHookModule.js +9 -10
  102. package/dist/hook/EvmHookModule.js.map +1 -0
  103. package/dist/hook/{read.d.ts → EvmHookReader.d.ts} +3 -2
  104. package/dist/hook/EvmHookReader.d.ts.map +1 -0
  105. package/dist/hook/{read.js → EvmHookReader.js} +10 -5
  106. package/dist/hook/EvmHookReader.js.map +1 -0
  107. package/dist/hook/EvmHookReader.test.d.ts +2 -0
  108. package/dist/hook/EvmHookReader.test.d.ts.map +1 -0
  109. package/dist/hook/{read.test.js → EvmHookReader.test.js} +6 -2
  110. package/dist/hook/EvmHookReader.test.js.map +1 -0
  111. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  112. package/dist/hook/HyperlaneHookDeployer.js +29 -6
  113. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  114. package/dist/hook/schemas.d.ts +210 -0
  115. package/dist/hook/schemas.d.ts.map +1 -0
  116. package/dist/hook/schemas.js +54 -0
  117. package/dist/hook/schemas.js.map +1 -0
  118. package/dist/hook/types.d.ts +9 -28
  119. package/dist/hook/types.d.ts.map +1 -1
  120. package/dist/hook/types.js.map +1 -1
  121. package/dist/index.d.ts +52 -20
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +39 -16
  124. package/dist/index.js.map +1 -1
  125. package/dist/ism/EvmIsmModule.d.ts +74 -0
  126. package/dist/ism/EvmIsmModule.d.ts.map +1 -0
  127. package/dist/ism/EvmIsmModule.hardhat-test.d.ts +2 -0
  128. package/dist/ism/EvmIsmModule.hardhat-test.d.ts.map +1 -0
  129. package/dist/ism/EvmIsmModule.hardhat-test.js +308 -0
  130. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -0
  131. package/dist/ism/EvmIsmModule.js +359 -0
  132. package/dist/ism/EvmIsmModule.js.map +1 -0
  133. package/dist/ism/{read.d.ts → EvmIsmReader.d.ts} +5 -7
  134. package/dist/ism/EvmIsmReader.d.ts.map +1 -0
  135. package/dist/ism/{read.js → EvmIsmReader.js} +9 -4
  136. package/dist/ism/EvmIsmReader.js.map +1 -0
  137. package/dist/ism/EvmIsmReader.test.d.ts +2 -0
  138. package/dist/ism/EvmIsmReader.test.d.ts.map +1 -0
  139. package/dist/ism/{read.test.js → EvmIsmReader.test.js} +2 -2
  140. package/dist/ism/EvmIsmReader.test.js.map +1 -0
  141. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  142. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts +3 -1
  143. package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
  144. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +22 -16
  145. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  146. package/dist/ism/HyperlaneIsmFactory.js +3 -8
  147. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  148. package/dist/ism/metadata/aggregation.d.ts +22 -0
  149. package/dist/ism/metadata/aggregation.d.ts.map +1 -0
  150. package/dist/ism/metadata/aggregation.js +82 -0
  151. package/dist/ism/metadata/aggregation.js.map +1 -0
  152. package/dist/ism/metadata/aggregation.test.d.ts +2 -0
  153. package/dist/ism/metadata/aggregation.test.d.ts.map +1 -0
  154. package/dist/ism/metadata/aggregation.test.js +37 -0
  155. package/dist/ism/metadata/aggregation.test.js.map +1 -0
  156. package/dist/ism/metadata/builder.d.ts +32 -0
  157. package/dist/ism/metadata/builder.d.ts.map +1 -0
  158. package/dist/ism/metadata/builder.hardhat-test.d.ts +2 -0
  159. package/dist/ism/metadata/builder.hardhat-test.d.ts.map +1 -0
  160. package/dist/ism/metadata/builder.hardhat-test.js +120 -0
  161. package/dist/ism/metadata/builder.hardhat-test.js.map +1 -0
  162. package/dist/ism/metadata/builder.js +74 -0
  163. package/dist/ism/metadata/builder.js.map +1 -0
  164. package/dist/ism/metadata/multisig.d.ts +57 -0
  165. package/dist/ism/metadata/multisig.d.ts.map +1 -0
  166. package/dist/ism/metadata/multisig.js +188 -0
  167. package/dist/ism/metadata/multisig.js.map +1 -0
  168. package/dist/ism/metadata/multisig.test.d.ts +2 -0
  169. package/dist/ism/metadata/multisig.test.d.ts.map +1 -0
  170. package/dist/ism/metadata/multisig.test.js +55 -0
  171. package/dist/ism/metadata/multisig.test.js.map +1 -0
  172. package/dist/ism/metadata/null.d.ts +15 -0
  173. package/dist/ism/metadata/null.d.ts.map +1 -0
  174. package/dist/ism/metadata/null.js +20 -0
  175. package/dist/ism/metadata/null.js.map +1 -0
  176. package/dist/ism/metadata/routing.d.ts +16 -0
  177. package/dist/ism/metadata/routing.d.ts.map +1 -0
  178. package/dist/ism/metadata/routing.js +34 -0
  179. package/dist/ism/metadata/routing.js.map +1 -0
  180. package/dist/ism/metadata/types.test.d.ts +5 -0
  181. package/dist/ism/metadata/types.test.d.ts.map +1 -0
  182. package/dist/ism/metadata/types.test.js +2 -0
  183. package/dist/ism/metadata/types.test.js.map +1 -0
  184. package/dist/ism/schemas.d.ts +68 -104
  185. package/dist/ism/schemas.d.ts.map +1 -1
  186. package/dist/ism/schemas.js +14 -17
  187. package/dist/ism/schemas.js.map +1 -1
  188. package/dist/ism/schemas.test.js +1 -1
  189. package/dist/ism/schemas.test.js.map +1 -1
  190. package/dist/ism/types.d.ts +10 -20
  191. package/dist/ism/types.d.ts.map +1 -1
  192. package/dist/ism/types.js +6 -0
  193. package/dist/ism/types.js.map +1 -1
  194. package/dist/ism/utils.d.ts +4 -0
  195. package/dist/ism/utils.d.ts.map +1 -1
  196. package/dist/ism/utils.js +33 -5
  197. package/dist/ism/utils.js.map +1 -1
  198. package/dist/metadata/agentConfig.d.ts +87 -87
  199. package/dist/metadata/agentConfig.js +1 -1
  200. package/dist/metadata/agentConfig.js.map +1 -1
  201. package/dist/metadata/deploymentArtifacts.d.ts +4 -4
  202. package/dist/middleware/account/InterchainAccount.d.ts +6 -5
  203. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  204. package/dist/middleware/account/InterchainAccount.js +15 -6
  205. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  206. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  207. package/dist/middleware/account/InterchainAccountDeployer.js +5 -1
  208. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  209. package/dist/middleware/account/accounts.hardhat-test.js +8 -3
  210. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  211. package/dist/middleware/account/schemas.d.ts +69 -0
  212. package/dist/middleware/account/schemas.d.ts.map +1 -1
  213. package/dist/middleware/account/schemas.js +10 -2
  214. package/dist/middleware/account/schemas.js.map +1 -1
  215. package/dist/middleware/account/types.d.ts +4 -9
  216. package/dist/middleware/account/types.d.ts.map +1 -1
  217. package/dist/providers/MultiProvider.d.ts +2 -1
  218. package/dist/providers/MultiProvider.d.ts.map +1 -1
  219. package/dist/providers/MultiProvider.js +7 -3
  220. package/dist/providers/MultiProvider.js.map +1 -1
  221. package/dist/providers/ProviderType.d.ts +3 -0
  222. package/dist/providers/ProviderType.d.ts.map +1 -1
  223. package/dist/providers/ProviderType.js +0 -1
  224. package/dist/providers/ProviderType.js.map +1 -1
  225. package/dist/providers/transactions/schemas.d.ts +29 -0
  226. package/dist/providers/transactions/schemas.d.ts.map +1 -0
  227. package/dist/providers/transactions/schemas.js +14 -0
  228. package/dist/providers/transactions/schemas.js.map +1 -0
  229. package/dist/providers/transactions/schemas.test.d.ts +2 -0
  230. package/dist/providers/transactions/schemas.test.d.ts.map +1 -0
  231. package/dist/providers/transactions/schemas.test.js +58 -0
  232. package/dist/providers/transactions/schemas.test.js.map +1 -0
  233. package/dist/providers/transactions/submitter/TxSubmitterInterface.d.ts +19 -0
  234. package/dist/providers/transactions/submitter/TxSubmitterInterface.d.ts.map +1 -0
  235. package/dist/providers/transactions/submitter/TxSubmitterInterface.js +2 -0
  236. package/dist/providers/transactions/submitter/TxSubmitterInterface.js.map +1 -0
  237. package/dist/providers/transactions/submitter/TxSubmitterTypes.d.ts +6 -0
  238. package/dist/providers/transactions/submitter/TxSubmitterTypes.d.ts.map +1 -0
  239. package/dist/providers/transactions/submitter/TxSubmitterTypes.js +7 -0
  240. package/dist/providers/transactions/submitter/TxSubmitterTypes.js.map +1 -0
  241. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts +48 -0
  242. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.d.ts.map +1 -0
  243. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.js +65 -0
  244. package/dist/providers/transactions/submitter/builder/TxSubmitterBuilder.js.map +1 -0
  245. package/dist/providers/transactions/submitter/builder/schemas.d.ts +206 -0
  246. package/dist/providers/transactions/submitter/builder/schemas.d.ts.map +1 -0
  247. package/dist/providers/transactions/submitter/builder/schemas.js +10 -0
  248. package/dist/providers/transactions/submitter/builder/schemas.js.map +1 -0
  249. package/dist/providers/transactions/submitter/builder/types.d.ts +4 -0
  250. package/dist/providers/transactions/submitter/builder/types.d.ts.map +1 -0
  251. package/dist/providers/transactions/submitter/builder/types.js +2 -0
  252. package/dist/providers/transactions/submitter/builder/types.js.map +1 -0
  253. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +15 -0
  254. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -0
  255. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js +44 -0
  256. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -0
  257. package/dist/providers/transactions/submitter/ethersV5/EV5ImpersonatedAccountTxSubmitter.d.ts +15 -0
  258. package/dist/providers/transactions/submitter/ethersV5/EV5ImpersonatedAccountTxSubmitter.d.ts.map +1 -0
  259. package/dist/providers/transactions/submitter/ethersV5/EV5ImpersonatedAccountTxSubmitter.js +23 -0
  260. package/dist/providers/transactions/submitter/ethersV5/EV5ImpersonatedAccountTxSubmitter.js.map +1 -0
  261. package/dist/providers/transactions/submitter/ethersV5/EV5JsonRpcTxSubmitter.d.ts +14 -0
  262. package/dist/providers/transactions/submitter/ethersV5/EV5JsonRpcTxSubmitter.d.ts.map +1 -0
  263. package/dist/providers/transactions/submitter/ethersV5/EV5JsonRpcTxSubmitter.js +24 -0
  264. package/dist/providers/transactions/submitter/ethersV5/EV5JsonRpcTxSubmitter.js.map +1 -0
  265. package/dist/providers/transactions/submitter/ethersV5/EV5TxSubmitterInterface.d.ts +10 -0
  266. package/dist/providers/transactions/submitter/ethersV5/EV5TxSubmitterInterface.d.ts.map +1 -0
  267. package/dist/providers/transactions/submitter/ethersV5/EV5TxSubmitterInterface.js +2 -0
  268. package/dist/providers/transactions/submitter/ethersV5/EV5TxSubmitterInterface.js.map +1 -0
  269. package/dist/providers/transactions/submitter/ethersV5/schemas.d.ts +19 -0
  270. package/dist/providers/transactions/submitter/ethersV5/schemas.d.ts.map +1 -0
  271. package/dist/providers/transactions/submitter/ethersV5/schemas.js +10 -0
  272. package/dist/providers/transactions/submitter/ethersV5/schemas.js.map +1 -0
  273. package/dist/providers/transactions/submitter/ethersV5/schemas.test.d.ts +2 -0
  274. package/dist/providers/transactions/submitter/ethersV5/schemas.test.d.ts.map +1 -0
  275. package/dist/providers/transactions/submitter/ethersV5/schemas.test.js +41 -0
  276. package/dist/providers/transactions/submitter/ethersV5/schemas.test.js.map +1 -0
  277. package/dist/providers/transactions/submitter/ethersV5/types.d.ts +5 -0
  278. package/dist/providers/transactions/submitter/ethersV5/types.d.ts.map +1 -0
  279. package/dist/providers/transactions/submitter/ethersV5/types.js +2 -0
  280. package/dist/providers/transactions/submitter/ethersV5/types.js.map +1 -0
  281. package/dist/providers/transactions/submitter/schemas.d.ts +56 -0
  282. package/dist/providers/transactions/submitter/schemas.d.ts.map +1 -0
  283. package/dist/providers/transactions/submitter/schemas.js +18 -0
  284. package/dist/providers/transactions/submitter/schemas.js.map +1 -0
  285. package/dist/providers/transactions/submitter/types.d.ts +4 -0
  286. package/dist/providers/transactions/submitter/types.d.ts.map +1 -0
  287. package/dist/providers/transactions/submitter/types.js +2 -0
  288. package/dist/providers/transactions/submitter/types.js.map +1 -0
  289. package/dist/providers/transactions/transformer/TxTransformerInterface.d.ts +15 -0
  290. package/dist/providers/transactions/transformer/TxTransformerInterface.d.ts.map +1 -0
  291. package/dist/providers/transactions/transformer/TxTransformerInterface.js +2 -0
  292. package/dist/providers/transactions/transformer/TxTransformerInterface.js.map +1 -0
  293. package/dist/providers/transactions/transformer/TxTransformerTypes.d.ts +4 -0
  294. package/dist/providers/transactions/transformer/TxTransformerTypes.d.ts.map +1 -0
  295. package/dist/providers/transactions/transformer/TxTransformerTypes.js +5 -0
  296. package/dist/providers/transactions/transformer/TxTransformerTypes.js.map +1 -0
  297. package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.d.ts +16 -0
  298. package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.d.ts.map +1 -0
  299. package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.js +37 -0
  300. package/dist/providers/transactions/transformer/ethersV5/EV5InterchainAccountTxTransformer.js.map +1 -0
  301. package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.d.ts +5 -0
  302. package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.d.ts.map +1 -0
  303. package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.js +2 -0
  304. package/dist/providers/transactions/transformer/ethersV5/EV5TxTransformerInterface.js.map +1 -0
  305. package/dist/providers/transactions/transformer/ethersV5/schemas.d.ts +58 -0
  306. package/dist/providers/transactions/transformer/ethersV5/schemas.d.ts.map +1 -0
  307. package/dist/providers/transactions/transformer/ethersV5/schemas.js +7 -0
  308. package/dist/providers/transactions/transformer/ethersV5/schemas.js.map +1 -0
  309. package/dist/providers/transactions/transformer/ethersV5/schemas.test.d.ts +2 -0
  310. package/dist/providers/transactions/transformer/ethersV5/schemas.test.d.ts.map +1 -0
  311. package/dist/providers/transactions/transformer/ethersV5/schemas.test.js +44 -0
  312. package/dist/providers/transactions/transformer/ethersV5/schemas.test.js.map +1 -0
  313. package/dist/providers/transactions/transformer/ethersV5/types.d.ts +4 -0
  314. package/dist/providers/transactions/transformer/ethersV5/types.d.ts.map +1 -0
  315. package/dist/providers/transactions/transformer/ethersV5/types.js +2 -0
  316. package/dist/providers/transactions/transformer/ethersV5/types.js.map +1 -0
  317. package/dist/providers/transactions/transformer/schemas.d.ts +89 -0
  318. package/dist/providers/transactions/transformer/schemas.d.ts.map +1 -0
  319. package/dist/providers/transactions/transformer/schemas.js +10 -0
  320. package/dist/providers/transactions/transformer/schemas.js.map +1 -0
  321. package/dist/providers/transactions/transformer/types.d.ts +4 -0
  322. package/dist/providers/transactions/transformer/types.d.ts.map +1 -0
  323. package/dist/providers/transactions/transformer/types.js +2 -0
  324. package/dist/providers/transactions/transformer/types.js.map +1 -0
  325. package/dist/providers/transactions/types.d.ts +6 -0
  326. package/dist/providers/transactions/types.d.ts.map +1 -0
  327. package/dist/providers/transactions/types.js +2 -0
  328. package/dist/providers/transactions/types.js.map +1 -0
  329. package/dist/router/GasRouterDeployer.d.ts +3 -3
  330. package/dist/router/GasRouterDeployer.d.ts.map +1 -1
  331. package/dist/router/GasRouterDeployer.js +2 -1
  332. package/dist/router/GasRouterDeployer.js.map +1 -1
  333. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  334. package/dist/router/HyperlaneRouterChecker.js +36 -53
  335. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  336. package/dist/router/ProxiedRouterDeployer.d.ts +7 -4
  337. package/dist/router/ProxiedRouterDeployer.d.ts.map +1 -1
  338. package/dist/router/ProxiedRouterDeployer.js +8 -2
  339. package/dist/router/ProxiedRouterDeployer.js.map +1 -1
  340. package/dist/router/schemas.d.ts +828 -41
  341. package/dist/router/schemas.d.ts.map +1 -1
  342. package/dist/router/schemas.js +11 -9
  343. package/dist/router/schemas.js.map +1 -1
  344. package/dist/router/types.d.ts +6 -10
  345. package/dist/router/types.d.ts.map +1 -1
  346. package/dist/router/types.js.map +1 -1
  347. package/dist/schemas.d.ts +25 -0
  348. package/dist/schemas.d.ts.map +1 -0
  349. package/dist/schemas.js +10 -0
  350. package/dist/schemas.js.map +1 -0
  351. package/dist/test/multiProviderStubs.d.ts +9 -0
  352. package/dist/test/multiProviderStubs.d.ts.map +1 -0
  353. package/dist/test/multiProviderStubs.js +27 -0
  354. package/dist/test/multiProviderStubs.js.map +1 -0
  355. package/dist/test/testUtils.d.ts +0 -8
  356. package/dist/test/testUtils.d.ts.map +1 -1
  357. package/dist/test/testUtils.js +3 -28
  358. package/dist/test/testUtils.js.map +1 -1
  359. package/dist/token/{read.d.ts → EvmERC20WarpRouteReader.d.ts} +10 -10
  360. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -0
  361. package/dist/token/{read.js → EvmERC20WarpRouteReader.js} +38 -30
  362. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -0
  363. package/dist/token/Token.test.js +1 -10
  364. package/dist/token/Token.test.js.map +1 -1
  365. package/dist/token/TokenStandard.d.ts +0 -1
  366. package/dist/token/TokenStandard.d.ts.map +1 -1
  367. package/dist/token/TokenStandard.js +4 -3
  368. package/dist/token/TokenStandard.js.map +1 -1
  369. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +2 -2
  370. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  371. package/dist/token/adapters/CosmosTokenAdapter.d.ts +2 -2
  372. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  373. package/dist/token/adapters/EvmTokenAdapter.d.ts +4 -4
  374. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  375. package/dist/token/adapters/EvmTokenAdapter.js +3 -2
  376. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  377. package/dist/token/adapters/ITokenAdapter.d.ts +2 -2
  378. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  379. package/dist/token/adapters/SealevelTokenAdapter.d.ts +5 -5
  380. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  381. package/dist/token/adapters/SealevelTokenAdapter.js +2 -1
  382. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  383. package/dist/token/app.d.ts.map +1 -1
  384. package/dist/token/app.js +2 -2
  385. package/dist/token/app.js.map +1 -1
  386. package/dist/token/checker.d.ts +2 -2
  387. package/dist/token/checker.d.ts.map +1 -1
  388. package/dist/token/checker.js +1 -1
  389. package/dist/token/checker.js.map +1 -1
  390. package/dist/token/config.d.ts +4 -44
  391. package/dist/token/config.d.ts.map +1 -1
  392. package/dist/token/config.js +14 -15
  393. package/dist/token/config.js.map +1 -1
  394. package/dist/token/contracts.d.ts +7 -14
  395. package/dist/token/contracts.d.ts.map +1 -1
  396. package/dist/token/contracts.js +8 -8
  397. package/dist/token/contracts.js.map +1 -1
  398. package/dist/token/deploy.d.ts +21 -45
  399. package/dist/token/deploy.d.ts.map +1 -1
  400. package/dist/token/deploy.hardhat-test.js +33 -48
  401. package/dist/token/deploy.hardhat-test.js.map +1 -1
  402. package/dist/token/deploy.js +74 -251
  403. package/dist/token/deploy.js.map +1 -1
  404. package/dist/token/schemas.d.ts +874 -136
  405. package/dist/token/schemas.d.ts.map +1 -1
  406. package/dist/token/schemas.js +29 -19
  407. package/dist/token/schemas.js.map +1 -1
  408. package/dist/token/schemas.test.js +26 -39
  409. package/dist/token/schemas.test.js.map +1 -1
  410. package/dist/token/types.d.ts +2 -1
  411. package/dist/token/types.d.ts.map +1 -1
  412. package/dist/utils/fork.d.ts.map +1 -1
  413. package/dist/utils/fork.js +10 -11
  414. package/dist/utils/fork.js.map +1 -1
  415. package/dist/utils/gnosisSafe.js +46 -0
  416. package/dist/utils/logUtils.d.ts +4 -0
  417. package/dist/utils/logUtils.d.ts.map +1 -0
  418. package/dist/utils/logUtils.js +13 -0
  419. package/dist/utils/logUtils.js.map +1 -0
  420. package/dist/utils/schemas.d.ts +3 -0
  421. package/dist/utils/schemas.d.ts.map +1 -0
  422. package/dist/utils/schemas.js +4 -0
  423. package/dist/utils/schemas.js.map +1 -0
  424. package/package.json +8 -4
  425. package/dist/consts/crud.d.ts.map +0 -1
  426. package/dist/consts/crud.js.map +0 -1
  427. package/dist/core/read.d.ts.map +0 -1
  428. package/dist/core/read.js.map +0 -1
  429. package/dist/crud/AbstractCrudModule.d.ts +0 -21
  430. package/dist/crud/AbstractCrudModule.d.ts.map +0 -1
  431. package/dist/crud/AbstractCrudModule.js.map +0 -1
  432. package/dist/crud/EvmHookModule.d.ts +0 -18
  433. package/dist/crud/EvmHookModule.d.ts.map +0 -1
  434. package/dist/crud/EvmHookModule.js.map +0 -1
  435. package/dist/crud/EvmIsmModule.d.ts +0 -18
  436. package/dist/crud/EvmIsmModule.d.ts.map +0 -1
  437. package/dist/crud/EvmIsmModule.js +0 -28
  438. package/dist/crud/EvmIsmModule.js.map +0 -1
  439. package/dist/hook/read.d.ts.map +0 -1
  440. package/dist/hook/read.js.map +0 -1
  441. package/dist/hook/read.test.d.ts +0 -2
  442. package/dist/hook/read.test.d.ts.map +0 -1
  443. package/dist/hook/read.test.js.map +0 -1
  444. package/dist/ism/read.d.ts.map +0 -1
  445. package/dist/ism/read.js.map +0 -1
  446. package/dist/ism/read.test.d.ts +0 -2
  447. package/dist/ism/read.test.d.ts.map +0 -1
  448. package/dist/ism/read.test.js.map +0 -1
  449. package/dist/token/read.d.ts.map +0 -1
  450. package/dist/token/read.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ import { Address, Checkpoint, MerkleProof, S3CheckpointWithId, SignatureLike, WithAddress } from '@hyperlane-xyz/utils';
2
+ import { S3Validator } from '../../aws/validator.js';
3
+ import { HyperlaneCore } from '../../core/HyperlaneCore.js';
4
+ import { MerkleTreeHookConfig } from '../../hook/types.js';
5
+ import { ChainName } from '../../types.js';
6
+ import { IsmType, MultisigIsmConfig } from '../types.js';
7
+ import { MetadataBuilder, MetadataContext } from './builder.js';
8
+ interface MessageIdMultisigMetadata {
9
+ type: IsmType.MESSAGE_ID_MULTISIG;
10
+ signatures: SignatureLike[];
11
+ checkpoint: Omit<Checkpoint, 'mailbox_domain'>;
12
+ }
13
+ interface MerkleRootMultisigMetadata extends Omit<MessageIdMultisigMetadata, 'type'> {
14
+ type: IsmType.MERKLE_ROOT_MULTISIG;
15
+ proof: MerkleProof;
16
+ }
17
+ export type MultisigMetadata = MessageIdMultisigMetadata | MerkleRootMultisigMetadata;
18
+ export declare class MultisigMetadataBuilder implements MetadataBuilder {
19
+ protected readonly core: HyperlaneCore;
20
+ protected readonly logger: import("pino").default.Logger<never>;
21
+ protected validatorCache: Record<ChainName, Record<string, S3Validator>>;
22
+ constructor(core: HyperlaneCore, logger?: import("pino").default.Logger<never>);
23
+ protected s3Validators(originChain: ChainName, validators: string[]): Promise<S3Validator[]>;
24
+ getS3Checkpoints(validators: Address[], match: {
25
+ origin: number;
26
+ merkleTree: Address;
27
+ messageId: string;
28
+ index: number;
29
+ }): Promise<S3CheckpointWithId[]>;
30
+ build(context: MetadataContext<WithAddress<MultisigIsmConfig>, WithAddress<MerkleTreeHookConfig>>): Promise<string>;
31
+ protected static encodeSimplePrefix(metadata: MessageIdMultisigMetadata): string;
32
+ static decodeSimplePrefix(metadata: string): {
33
+ signatureOffset: number;
34
+ type: IsmType;
35
+ checkpoint: {
36
+ root: string;
37
+ index: number;
38
+ merkle_tree_hook_address: string;
39
+ };
40
+ };
41
+ static encodeProofPrefix(metadata: MerkleRootMultisigMetadata): string;
42
+ static decodeProofPrefix(metadata: string): {
43
+ signatureOffset: number;
44
+ type: IsmType;
45
+ checkpoint: {
46
+ root: string;
47
+ index: number;
48
+ merkle_tree_hook_address: string;
49
+ };
50
+ proof: MerkleProof;
51
+ };
52
+ static encode(metadata: MultisigMetadata): string;
53
+ static signatureAt(metadata: string, offset: number, index: number): SignatureLike | undefined;
54
+ static decode(metadata: string, type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG): MultisigMetadata;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=multisig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/multisig.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EAWZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAClC,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;CAChD;AAED,UAAU,0BACR,SAAQ,IAAI,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC/C,IAAI,EAAE,OAAO,CAAC,oBAAoB,CAAC;IACnC,KAAK,EAAE,WAAW,CAAC;CACpB;AAMD,MAAM,MAAM,gBAAgB,GACxB,yBAAyB,GACzB,0BAA0B,CAAC;AAE/B,qBAAa,uBAAwB,YAAW,eAAe;IAI3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa;IACtC,SAAS,CAAC,QAAQ,CAAC,MAAM;IAJ3B,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAM;gBAGzD,IAAI,EAAE,aAAa,EACnB,MAAM,uCAEvB;cAGY,YAAY,CAC1B,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,WAAW,EAAE,CAAC;IA+BnB,gBAAgB,CACpB,UAAU,EAAE,OAAO,EAAE,EACrB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,GACA,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmD1B,KAAK,CACT,OAAO,EAAE,eAAe,CACtB,WAAW,CAAC,iBAAiB,CAAC,EAC9B,WAAW,CAAC,oBAAoB,CAAC,CAClC,GACA,OAAO,CAAC,MAAM,CAAC;IAqDlB,SAAS,CAAC,MAAM,CAAC,kBAAkB,CACjC,QAAQ,EAAE,yBAAyB,GAClC,MAAM;IAST,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;IAiB1C,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM;IActE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;IA0BzC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAejD,MAAM,CAAC,WAAW,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,aAAa,GAAG,SAAS;IAW5B,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,GAC/D,gBAAgB;CAqBpB"}
@@ -0,0 +1,188 @@
1
+ import { joinSignature, splitSignature } from 'ethers/lib/utils.js';
2
+ import { MerkleTreeHook__factory } from '@hyperlane-xyz/core';
3
+ import { assert, bytes32ToAddress, chunk, ensure0x, eqAddress, eqAddressEvm, fromHexString, rootLogger, strip0x, toHexString, } from '@hyperlane-xyz/utils';
4
+ import { S3Validator } from '../../aws/validator.js';
5
+ import { IsmType } from '../types.js';
6
+ const MerkleTreeInterface = MerkleTreeHook__factory.createInterface();
7
+ const SIGNATURE_LENGTH = 65;
8
+ export class MultisigMetadataBuilder {
9
+ core;
10
+ logger;
11
+ validatorCache = {};
12
+ constructor(core, logger = rootLogger.child({
13
+ module: 'MultisigMetadataBuilder',
14
+ })) {
15
+ this.core = core;
16
+ this.logger = logger;
17
+ }
18
+ async s3Validators(originChain, validators) {
19
+ this.validatorCache[originChain] ??= {};
20
+ const toFetch = validators.filter((v) => !(v in this.validatorCache[originChain]));
21
+ if (toFetch.length > 0) {
22
+ const validatorAnnounce = this.core.getContracts(originChain).validatorAnnounce;
23
+ const storageLocations = await validatorAnnounce.getAnnouncedStorageLocations(toFetch);
24
+ this.logger.debug({ storageLocations }, 'Fetched storage locations');
25
+ const s3Validators = await Promise.all(storageLocations.map((locations) => {
26
+ const latestLocation = locations.slice(-1)[0];
27
+ return S3Validator.fromStorageLocation(latestLocation);
28
+ }));
29
+ this.logger.debug({ s3Validators }, 'Fetched validators');
30
+ toFetch.forEach((validator, index) => {
31
+ this.validatorCache[originChain][validator] = s3Validators[index];
32
+ });
33
+ }
34
+ return validators.map((v) => this.validatorCache[originChain][v]);
35
+ }
36
+ async getS3Checkpoints(validators, match) {
37
+ this.logger.debug({ match, validators }, 'Fetching checkpoints');
38
+ const originChain = this.core.multiProvider.getChainName(match.origin);
39
+ const s3Validators = await this.s3Validators(originChain, validators);
40
+ const results = await Promise.allSettled(s3Validators.map((v) => v.getCheckpoint(match.index)));
41
+ results
42
+ .filter((r) => r.status === 'rejected')
43
+ .forEach((r) => {
44
+ this.logger.error({ error: r }, 'Failed to fetch checkpoint');
45
+ });
46
+ const checkpoints = results
47
+ .filter((result) => result.status === 'fulfilled' && result.value !== undefined)
48
+ .map((result) => result.value);
49
+ this.logger.debug({ checkpoints }, 'Fetched checkpoints');
50
+ if (checkpoints.length < validators.length) {
51
+ this.logger.debug({ checkpoints, validators, match }, `Found ${checkpoints.length} checkpoints out of ${validators.length} validators`);
52
+ }
53
+ const matchingCheckpoints = checkpoints.filter(({ value }) => eqAddress(bytes32ToAddress(value.checkpoint.merkle_tree_hook_address), match.merkleTree) &&
54
+ value.message_id === match.messageId &&
55
+ value.checkpoint.index === match.index &&
56
+ value.checkpoint.mailbox_domain === match.origin);
57
+ if (matchingCheckpoints.length !== checkpoints.length) {
58
+ this.logger.warn({ matchingCheckpoints, checkpoints, match }, 'Mismatched checkpoints');
59
+ }
60
+ return matchingCheckpoints;
61
+ }
62
+ async build(context) {
63
+ assert(context.ism.type === IsmType.MESSAGE_ID_MULTISIG, 'Merkle proofs are not yet supported');
64
+ const merkleTree = context.hook.address;
65
+ const matchingInsertion = context.dispatchTx.logs
66
+ .filter((log) => eqAddressEvm(log.address, merkleTree))
67
+ .map((log) => MerkleTreeInterface.parseLog(log))
68
+ .find((event) => event.args.messageId === context.message.id);
69
+ assert(matchingInsertion, `No merkle tree insertion of ${context.message.id} to ${merkleTree} found in dispatch tx`);
70
+ this.logger.debug({ matchingInsertion }, 'Found matching insertion event');
71
+ const checkpoints = await this.getS3Checkpoints(context.ism.validators, {
72
+ origin: context.message.parsed.origin,
73
+ messageId: context.message.id,
74
+ merkleTree,
75
+ index: matchingInsertion.args.index,
76
+ });
77
+ assert(checkpoints.length >= context.ism.threshold, `Only ${checkpoints.length} of ${context.ism.threshold} required checkpoints found`);
78
+ this.logger.debug({ checkpoints }, `Found ${checkpoints.length} checkpoints for message ${context.message.id}`);
79
+ const signatures = checkpoints
80
+ .map((checkpoint) => checkpoint.signature)
81
+ .slice(0, context.ism.threshold);
82
+ this.logger.debug({ signatures, ism: context.ism }, `Taking ${signatures.length} (threshold) signatures for message ${context.message.id}`);
83
+ const metadata = {
84
+ type: IsmType.MESSAGE_ID_MULTISIG,
85
+ checkpoint: checkpoints[0].value.checkpoint,
86
+ signatures,
87
+ };
88
+ return MultisigMetadataBuilder.encode(metadata);
89
+ }
90
+ static encodeSimplePrefix(metadata) {
91
+ const checkpoint = metadata.checkpoint;
92
+ const buf = Buffer.alloc(68);
93
+ buf.write(strip0x(checkpoint.merkle_tree_hook_address), 0, 32, 'hex');
94
+ buf.write(strip0x(checkpoint.root), 32, 32, 'hex');
95
+ buf.writeUInt32BE(checkpoint.index, 64);
96
+ return toHexString(buf);
97
+ }
98
+ static decodeSimplePrefix(metadata) {
99
+ const buf = fromHexString(metadata);
100
+ const merkleTree = toHexString(buf.subarray(0, 32));
101
+ const root = toHexString(buf.subarray(32, 64));
102
+ const index = buf.readUint32BE(64);
103
+ const checkpoint = {
104
+ root,
105
+ index,
106
+ merkle_tree_hook_address: merkleTree,
107
+ };
108
+ return {
109
+ signatureOffset: 68,
110
+ type: IsmType.MESSAGE_ID_MULTISIG,
111
+ checkpoint,
112
+ };
113
+ }
114
+ static encodeProofPrefix(metadata) {
115
+ const checkpoint = metadata.checkpoint;
116
+ const buf = Buffer.alloc(1096);
117
+ buf.write(strip0x(checkpoint.merkle_tree_hook_address), 0, 32, 'hex');
118
+ buf.writeUInt32BE(metadata.proof.index, 32);
119
+ buf.write(strip0x(metadata.proof.leaf.toString()), 36, 32, 'hex');
120
+ const branchEncoded = metadata.proof.branch
121
+ .map((b) => strip0x(b.toString()))
122
+ .join('');
123
+ buf.write(branchEncoded, 68, 32 * 32, 'hex');
124
+ buf.writeUint32BE(checkpoint.index, 1092);
125
+ return toHexString(buf);
126
+ }
127
+ static decodeProofPrefix(metadata) {
128
+ const buf = fromHexString(metadata);
129
+ const merkleTree = toHexString(buf.subarray(0, 32));
130
+ const messageIndex = buf.readUint32BE(32);
131
+ const signedMessageId = toHexString(buf.subarray(36, 68));
132
+ const branchEncoded = buf.subarray(68, 1092).toString('hex');
133
+ const branch = chunk(branchEncoded, 32 * 2).map((v) => ensure0x(v));
134
+ const signedIndex = buf.readUint32BE(1092);
135
+ const checkpoint = {
136
+ root: '',
137
+ index: messageIndex,
138
+ merkle_tree_hook_address: merkleTree,
139
+ };
140
+ const proof = {
141
+ branch,
142
+ leaf: signedMessageId,
143
+ index: signedIndex,
144
+ };
145
+ return {
146
+ signatureOffset: 1096,
147
+ type: IsmType.MERKLE_ROOT_MULTISIG,
148
+ checkpoint,
149
+ proof,
150
+ };
151
+ }
152
+ static encode(metadata) {
153
+ let encoded = metadata.type === IsmType.MESSAGE_ID_MULTISIG
154
+ ? this.encodeSimplePrefix(metadata)
155
+ : this.encodeProofPrefix(metadata);
156
+ metadata.signatures.forEach((signature) => {
157
+ const encodedSignature = joinSignature(signature);
158
+ assert(fromHexString(encodedSignature).byteLength === SIGNATURE_LENGTH);
159
+ encoded += strip0x(encodedSignature);
160
+ });
161
+ return encoded;
162
+ }
163
+ static signatureAt(metadata, offset, index) {
164
+ const buf = fromHexString(metadata);
165
+ const start = offset + index * SIGNATURE_LENGTH;
166
+ const end = start + SIGNATURE_LENGTH;
167
+ if (end > buf.byteLength) {
168
+ return undefined;
169
+ }
170
+ return toHexString(buf.subarray(start, end));
171
+ }
172
+ static decode(metadata, type) {
173
+ const prefix = type === IsmType.MERKLE_ROOT_MULTISIG
174
+ ? this.decodeProofPrefix(metadata)
175
+ : this.decodeSimplePrefix(metadata);
176
+ const { signatureOffset: offset, ...values } = prefix;
177
+ const signatures = [];
178
+ for (let i = 0; this.signatureAt(metadata, offset, i); i++) {
179
+ const { r, s, v } = splitSignature(this.signatureAt(metadata, offset, i));
180
+ signatures.push({ r, s, v });
181
+ }
182
+ return {
183
+ signatures,
184
+ ...values,
185
+ };
186
+ }
187
+ }
188
+ //# sourceMappingURL=multisig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/ism/metadata/multisig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAOL,MAAM,EACN,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,OAAO,EACP,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIrD,OAAO,EAAE,OAAO,EAAqB,MAAM,aAAa,CAAC;AAgBzD,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,eAAe,EAAE,CAAC;AAEtE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAM5B,MAAM,OAAO,uBAAuB;IAIb;IACA;IAJX,cAAc,GAAmD,EAAE,CAAC;IAE9E,YACqB,IAAmB,EACnB,SAAS,UAAU,CAAC,KAAK,CAAC;QAC3C,MAAM,EAAE,yBAAyB;KAClC,CAAC;QAHiB,SAAI,GAAJ,IAAI,CAAe;QACnB,WAAM,GAAN,MAAM,CAEvB;IACD,CAAC;IAEM,KAAK,CAAC,YAAY,CAC1B,WAAsB,EACtB,UAAoB;QAEpB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAChD,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,iBAAiB,GACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC;YACxD,MAAM,gBAAgB,GACpB,MAAM,iBAAiB,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;YAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAErE,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;gBACjC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,OAAO,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YACzD,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAE1D,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;gBACnC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,UAAqB,EACrB,KAKC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;QAEjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACtD,CAAC;QACF,OAAO;aACJ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;aACtC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACL,MAAM,WAAW,GAAG,OAAO;aACxB,MAAM,CACL,CAAC,MAAM,EAAwD,EAAE,CAC/D,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAC9D;aACA,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAE1D,IAAI,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,EAClC,SAAS,WAAW,CAAC,MAAM,uBAAuB,UAAU,CAAC,MAAM,aAAa,CACjF,CAAC;QACJ,CAAC;QAED,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAC5C,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACZ,SAAS,CACP,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAC3D,KAAK,CAAC,UAAU,CACjB;YACD,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS;YACpC,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;YACtC,KAAK,CAAC,UAAU,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,CACnD,CAAC;QAEF,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,EAC3C,wBAAwB,CACzB,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK,CACT,OAGC;QAED,MAAM,CACJ,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,mBAAmB,EAChD,qCAAqC,CACtC,CAAC;QAEF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAExC,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI;aAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;aACtD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAC/C,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEhE,MAAM,CACJ,iBAAiB,EACjB,+BAA+B,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,UAAU,uBAAuB,CAC1F,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,EAAE,gCAAgC,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;YACtE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;YACrC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;YAC7B,UAAU;YACV,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK;SACpC,CAAC,CAAC;QACH,MAAM,CACJ,WAAW,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAC3C,QAAQ,WAAW,CAAC,MAAM,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,6BAA6B,CACpF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,WAAW,EAAE,EACf,SAAS,WAAW,CAAC,MAAM,4BAA4B,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAC5E,CAAC;QAEF,MAAM,UAAU,GAAG,WAAW;aAC3B,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;aACzC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAChC,UAAU,UAAU,CAAC,MAAM,uCAAuC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CACvF,CAAC;QAEF,MAAM,QAAQ,GAA8B;YAC1C,IAAI,EAAE,OAAO,CAAC,mBAAmB;YACjC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU;YAC3C,UAAU;SACX,CAAC;QAEF,OAAO,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAES,MAAM,CAAC,kBAAkB,CACjC,QAAmC;QAEnC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACnD,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,QAAgB;QACxC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG;YACjB,IAAI;YACJ,KAAK;YACL,wBAAwB,EAAE,UAAU;SACrC,CAAC;QACF,OAAO;YACL,eAAe,EAAE,EAAE;YACnB,IAAI,EAAE,OAAO,CAAC,mBAAmB;YACjC,UAAU;SACX,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,QAAoC;QAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACtE,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM;aACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aACjC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC7C,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,QAAgB;QACvC,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,YAAY;YACnB,wBAAwB,EAAE,UAAU;SACrC,CAAC;QACF,MAAM,KAAK,GAAgB;YACzB,MAAM;YACN,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,WAAW;SACnB,CAAC;QACF,OAAO;YACL,eAAe,EAAE,IAAI;YACrB,IAAI,EAAE,OAAO,CAAC,oBAAoB;YAClC,UAAU;YACV,KAAK;SACN,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAA0B;QACtC,IAAI,OAAO,GACT,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,mBAAmB;YAC3C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEvC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACxC,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,UAAU,KAAK,gBAAgB,CAAC,CAAC;YACxE,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,QAAgB,EAChB,MAAc,EACd,KAAa;QAEb,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,gBAAgB,CAAC;QAChD,MAAM,GAAG,GAAG,KAAK,GAAG,gBAAgB,CAAC;QACrC,IAAI,GAAG,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,MAAM,CACX,QAAgB,EAChB,IAAgE;QAEhE,MAAM,MAAM,GACV,IAAI,KAAK,OAAO,CAAC,oBAAoB;YACnC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC;QAEtD,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAChC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAE,CACvC,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO;YACL,UAAU;YACV,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=multisig.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.test.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/multisig.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import { expect } from 'chai';
2
+ import { existsSync, readFileSync, readdirSync } from 'fs';
3
+ import { IsmType, ModuleType } from '../types.js';
4
+ import { MultisigMetadataBuilder } from './multisig.js';
5
+ const path = '../../solidity/fixtures/multisig';
6
+ const files = existsSync(path) ? readdirSync(path) : [];
7
+ const fixtures = files
8
+ .map((f) => JSON.parse(readFileSync(`${path}/${f}`, 'utf8')))
9
+ .map((contents) => {
10
+ const type = contents.type;
11
+ const { dummy: _dummy, ...signatureValues } = contents.signatures;
12
+ const signatures = Object.values(signatureValues);
13
+ let decoded;
14
+ if (type === ModuleType.MERKLE_ROOT_MULTISIG) {
15
+ const { dummy: _dummy, ...branchValues } = contents.prefix.proof;
16
+ const branch = Object.values(branchValues);
17
+ decoded = {
18
+ type: IsmType.MERKLE_ROOT_MULTISIG,
19
+ proof: {
20
+ branch,
21
+ leaf: contents.prefix.id,
22
+ index: contents.prefix.signedIndex,
23
+ },
24
+ checkpoint: {
25
+ root: '',
26
+ index: contents.prefix.index,
27
+ merkle_tree_hook_address: contents.prefix.merkleTree,
28
+ },
29
+ signatures,
30
+ };
31
+ }
32
+ else {
33
+ decoded = {
34
+ type: IsmType.MESSAGE_ID_MULTISIG,
35
+ checkpoint: {
36
+ root: contents.prefix.root,
37
+ index: contents.prefix.signedIndex,
38
+ merkle_tree_hook_address: contents.prefix.merkleTree,
39
+ },
40
+ signatures,
41
+ };
42
+ }
43
+ return { decoded, encoded: contents.encoded };
44
+ });
45
+ describe('MultisigMetadataBuilder', () => {
46
+ fixtures.forEach((fixture, i) => {
47
+ it(`should encode fixture ${i}`, () => {
48
+ expect(MultisigMetadataBuilder.encode(fixture.decoded)).to.equal(fixture.encoded);
49
+ });
50
+ it(`should decode fixture ${i}`, () => {
51
+ expect(MultisigMetadataBuilder.decode(fixture.encoded, fixture.decoded.type)).to.deep.equal(fixture.decoded);
52
+ });
53
+ });
54
+ });
55
+ //# sourceMappingURL=multisig.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig.test.js","sourceRoot":"","sources":["../../../src/ism/metadata/multisig.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { WithAddress } from '@hyperlane-xyz/utils';
2
+ import { MultiProvider } from '../../providers/MultiProvider.js';
3
+ import { NullIsmConfig } from '../types.js';
4
+ import { MetadataBuilder, MetadataContext } from './builder.js';
5
+ export declare const NULL_METADATA = "0x";
6
+ export type NullMetadata = {
7
+ type: NullIsmConfig['type'];
8
+ };
9
+ export declare class NullMetadataBuilder implements MetadataBuilder {
10
+ protected multiProvider: MultiProvider;
11
+ constructor(multiProvider: MultiProvider);
12
+ build(context: MetadataContext<WithAddress<NullIsmConfig>>): Promise<string>;
13
+ static decode(ism: NullIsmConfig): NullMetadata;
14
+ }
15
+ //# sourceMappingURL=null.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAW,aAAa,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,eAAO,MAAM,aAAa,OAAO,CAAC;AAElC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7B,CAAC;AAEF,qBAAa,mBAAoB,YAAW,eAAe;IAC7C,SAAS,CAAC,aAAa,EAAE,aAAa;gBAA5B,aAAa,EAAE,aAAa;IAE5C,KAAK,CACT,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,GACnD,OAAO,CAAC,MAAM,CAAC;IAalB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY;CAGhD"}
@@ -0,0 +1,20 @@
1
+ import { assert, eqAddress } from '@hyperlane-xyz/utils';
2
+ import { IsmType } from '../types.js';
3
+ export const NULL_METADATA = '0x';
4
+ export class NullMetadataBuilder {
5
+ multiProvider;
6
+ constructor(multiProvider) {
7
+ this.multiProvider = multiProvider;
8
+ }
9
+ async build(context) {
10
+ if (context.ism.type === IsmType.TRUSTED_RELAYER) {
11
+ const destinationSigner = await this.multiProvider.getSignerAddress(context.message.parsed.destination);
12
+ assert(eqAddress(destinationSigner, context.ism.relayer), `Destination signer ${destinationSigner} does not match trusted relayer ${context.ism.relayer}`);
13
+ }
14
+ return NULL_METADATA;
15
+ }
16
+ static decode(ism) {
17
+ return { ...ism };
18
+ }
19
+ }
20
+ //# sourceMappingURL=null.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null.js","sourceRoot":"","sources":["../../../src/ism/metadata/null.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EAAE,OAAO,EAAiB,MAAM,aAAa,CAAC;AAIrD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAMlC,MAAM,OAAO,mBAAmB;IACR;IAAtB,YAAsB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,KAAK,CACT,OAAoD;QAEpD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACjE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CACnC,CAAC;YACF,MAAM,CACJ,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EACjD,sBAAsB,iBAAiB,mCAAmC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,GAAkB;QAC9B,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import { WithAddress } from '@hyperlane-xyz/utils';
2
+ import { ChainName } from '../../types.js';
3
+ import { IsmType, RoutingIsmConfig } from '../types.js';
4
+ import { BaseMetadataBuilder, MetadataBuilder, MetadataContext, StructuredMetadata } from './builder.js';
5
+ export type RoutingMetadata<T> = {
6
+ type: IsmType.ROUTING;
7
+ origin: ChainName;
8
+ metadata: T;
9
+ };
10
+ export declare class RoutingMetadataBuilder implements MetadataBuilder {
11
+ protected baseMetadataBuilder: BaseMetadataBuilder;
12
+ constructor(baseMetadataBuilder: BaseMetadataBuilder);
13
+ build(context: MetadataContext<WithAddress<RoutingIsmConfig>>, maxDepth?: number): Promise<string>;
14
+ static decode(metadata: string, context: MetadataContext<WithAddress<RoutingIsmConfig>>): RoutingMetadata<StructuredMetadata | string>;
15
+ }
16
+ //# sourceMappingURL=routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC;IACtB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC;CACb,CAAC;AAEF,qBAAa,sBAAuB,YAAW,eAAe;IAChD,SAAS,CAAC,mBAAmB,EAAE,mBAAmB;gBAAxC,mBAAmB,EAAE,mBAAmB;IAEjD,KAAK,CAChB,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,EACvD,QAAQ,SAAK,GACZ,OAAO,CAAC,MAAM,CAAC;IAWlB,MAAM,CAAC,MAAM,CACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,GACtD,eAAe,CAAC,kBAAkB,GAAG,MAAM,CAAC;CAkBhD"}
@@ -0,0 +1,34 @@
1
+ import { assert } from '@hyperlane-xyz/utils';
2
+ import { IsmType } from '../types.js';
3
+ import { BaseMetadataBuilder, } from './builder.js';
4
+ export class RoutingMetadataBuilder {
5
+ baseMetadataBuilder;
6
+ constructor(baseMetadataBuilder) {
7
+ this.baseMetadataBuilder = baseMetadataBuilder;
8
+ }
9
+ async build(context, maxDepth = 10) {
10
+ const originChain = this.baseMetadataBuilder.multiProvider.getChainName(context.message.parsed.origin);
11
+ const originContext = {
12
+ ...context,
13
+ ism: context.ism.domains[originChain],
14
+ };
15
+ return this.baseMetadataBuilder.build(originContext, maxDepth - 1);
16
+ }
17
+ static decode(metadata, context) {
18
+ // TODO: this is a naive implementation, we should support domain ID keys
19
+ assert(context.message.parsed.originChain, 'originChain is required');
20
+ const ism = context.ism.domains[context.message.parsed.originChain];
21
+ const originMetadata = typeof ism === 'string'
22
+ ? metadata
23
+ : BaseMetadataBuilder.decode(metadata, {
24
+ ...context,
25
+ ism: ism,
26
+ });
27
+ return {
28
+ type: IsmType.ROUTING,
29
+ origin: context.message.parsed.originChain,
30
+ metadata: originMetadata,
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/ism/metadata/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AAExD,OAAO,EACL,mBAAmB,GAIpB,MAAM,cAAc,CAAC;AAQtB,MAAM,OAAO,sBAAsB;IACX;IAAtB,YAAsB,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAE3D,KAAK,CAAC,KAAK,CAChB,OAAuD,EACvD,QAAQ,GAAG,EAAE;QAEb,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,YAAY,CACrE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAC9B,CAAC;QACF,MAAM,aAAa,GAAG;YACpB,GAAG,OAAO;YACV,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAqB;SAC1D,CAAC;QACF,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,MAAM,CACX,QAAgB,EAChB,OAAuD;QAEvD,yEAAyE;QACzE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,cAAc,GAClB,OAAO,GAAG,KAAK,QAAQ;YACrB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACnC,GAAG,OAAO;gBACV,GAAG,EAAE,GAAuB;aAC7B,CAAC,CAAC;QAET,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW;YAC1C,QAAQ,EAAE,cAAc;SACzB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export type Fixture<T> = {
2
+ decoded: T;
3
+ encoded: string;
4
+ };
5
+ //# sourceMappingURL=types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.d.ts","sourceRoot":"","sources":["../../../src/ism/metadata/types.test.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../../src/ism/metadata/types.test.ts"],"names":[],"mappings":""}