@humanode-hyperlane/radix-sdk 0.0.0-stage → 30.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/LICENSE.md +193 -0
  2. package/README.md +42 -2
  3. package/dist/clients/protocol.d.ts +29 -0
  4. package/dist/clients/protocol.d.ts.map +1 -0
  5. package/dist/clients/protocol.js +95 -0
  6. package/dist/clients/protocol.js.map +1 -0
  7. package/dist/clients/provider.d.ts +100 -0
  8. package/dist/clients/provider.d.ts.map +1 -0
  9. package/dist/clients/provider.js +481 -0
  10. package/dist/clients/provider.js.map +1 -0
  11. package/dist/clients/signer.d.ts +66 -0
  12. package/dist/clients/signer.d.ts.map +1 -0
  13. package/dist/clients/signer.js +368 -0
  14. package/dist/clients/signer.js.map +1 -0
  15. package/dist/hook/hook-artifact-manager.d.ts +17 -0
  16. package/dist/hook/hook-artifact-manager.d.ts.map +1 -0
  17. package/dist/hook/hook-artifact-manager.js +60 -0
  18. package/dist/hook/hook-artifact-manager.js.map +1 -0
  19. package/dist/hook/hook-query.d.ts +22 -0
  20. package/dist/hook/hook-query.d.ts.map +1 -0
  21. package/dist/hook/hook-query.js +79 -0
  22. package/dist/hook/hook-query.js.map +1 -0
  23. package/dist/hook/hook-tx.d.ts +21 -0
  24. package/dist/hook/hook-tx.d.ts.map +1 -0
  25. package/dist/hook/hook-tx.js +26 -0
  26. package/dist/hook/hook-tx.js.map +1 -0
  27. package/dist/hook/igp-hook.d.ts +24 -0
  28. package/dist/hook/igp-hook.d.ts.map +1 -0
  29. package/dist/hook/igp-hook.js +148 -0
  30. package/dist/hook/igp-hook.js.map +1 -0
  31. package/dist/hook/merkle-tree-hook.d.ts +24 -0
  32. package/dist/hook/merkle-tree-hook.d.ts.map +1 -0
  33. package/dist/hook/merkle-tree-hook.js +51 -0
  34. package/dist/hook/merkle-tree-hook.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +12 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ism/ism-artifact-manager.d.ts +14 -0
  40. package/dist/ism/ism-artifact-manager.d.ts.map +1 -0
  41. package/dist/ism/ism-artifact-manager.js +67 -0
  42. package/dist/ism/ism-artifact-manager.js.map +1 -0
  43. package/dist/ism/ism-query.d.ts +23 -0
  44. package/dist/ism/ism-query.d.ts.map +1 -0
  45. package/dist/ism/ism-query.js +84 -0
  46. package/dist/ism/ism-query.js.map +1 -0
  47. package/dist/ism/ism-tx.d.ts +31 -0
  48. package/dist/ism/ism-tx.d.ts.map +1 -0
  49. package/dist/ism/ism-tx.js +43 -0
  50. package/dist/ism/ism-tx.js.map +1 -0
  51. package/dist/ism/multisig-ism.d.ts +38 -0
  52. package/dist/ism/multisig-ism.d.ts.map +1 -0
  53. package/dist/ism/multisig-ism.js +107 -0
  54. package/dist/ism/multisig-ism.js.map +1 -0
  55. package/dist/ism/routing-ism.d.ts +23 -0
  56. package/dist/ism/routing-ism.d.ts.map +1 -0
  57. package/dist/ism/routing-ism.js +129 -0
  58. package/dist/ism/routing-ism.js.map +1 -0
  59. package/dist/ism/test-ism.d.ts +23 -0
  60. package/dist/ism/test-ism.d.ts.map +1 -0
  61. package/dist/ism/test-ism.js +49 -0
  62. package/dist/ism/test-ism.js.map +1 -0
  63. package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
  64. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  65. package/dist/mailbox/mailbox-artifact-manager.js +29 -0
  66. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  67. package/dist/mailbox/mailbox-query.d.ts +12 -0
  68. package/dist/mailbox/mailbox-query.d.ts.map +1 -0
  69. package/dist/mailbox/mailbox-query.js +72 -0
  70. package/dist/mailbox/mailbox-query.js.map +1 -0
  71. package/dist/mailbox/mailbox-query.test.d.ts +2 -0
  72. package/dist/mailbox/mailbox-query.test.d.ts.map +1 -0
  73. package/dist/mailbox/mailbox-query.test.js +65 -0
  74. package/dist/mailbox/mailbox-query.test.js.map +1 -0
  75. package/dist/mailbox/mailbox-tx.d.ts +21 -0
  76. package/dist/mailbox/mailbox-tx.d.ts.map +1 -0
  77. package/dist/mailbox/mailbox-tx.js +27 -0
  78. package/dist/mailbox/mailbox-tx.js.map +1 -0
  79. package/dist/mailbox/mailbox.d.ts +24 -0
  80. package/dist/mailbox/mailbox.d.ts.map +1 -0
  81. package/dist/mailbox/mailbox.js +171 -0
  82. package/dist/mailbox/mailbox.js.map +1 -0
  83. package/dist/testing/constants.d.ts +61 -0
  84. package/dist/testing/constants.d.ts.map +1 -0
  85. package/dist/testing/constants.js +65 -0
  86. package/dist/testing/constants.js.map +1 -0
  87. package/dist/testing/index.d.ts +8 -0
  88. package/dist/testing/index.d.ts.map +1 -0
  89. package/dist/testing/index.js +11 -0
  90. package/dist/testing/index.js.map +1 -0
  91. package/dist/testing/node.d.ts +13 -0
  92. package/dist/testing/node.d.ts.map +1 -0
  93. package/dist/testing/node.js +42 -0
  94. package/dist/testing/node.js.map +1 -0
  95. package/dist/testing/setup.d.ts +20 -0
  96. package/dist/testing/setup.d.ts.map +1 -0
  97. package/dist/testing/setup.js +61 -0
  98. package/dist/testing/setup.js.map +1 -0
  99. package/dist/tests/e2e-test.setup.d.ts +3 -0
  100. package/dist/tests/e2e-test.setup.d.ts.map +1 -0
  101. package/dist/tests/e2e-test.setup.js +32 -0
  102. package/dist/tests/e2e-test.setup.js.map +1 -0
  103. package/dist/tests/hook.e2e-test.d.ts +2 -0
  104. package/dist/tests/hook.e2e-test.d.ts.map +1 -0
  105. package/dist/tests/hook.e2e-test.js +369 -0
  106. package/dist/tests/hook.e2e-test.js.map +1 -0
  107. package/dist/tests/ism.e2e-test.d.ts +2 -0
  108. package/dist/tests/ism.e2e-test.d.ts.map +1 -0
  109. package/dist/tests/ism.e2e-test.js +250 -0
  110. package/dist/tests/ism.e2e-test.js.map +1 -0
  111. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  112. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  113. package/dist/tests/mailbox.e2e-test.js +254 -0
  114. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  115. package/dist/tests/validator-announce.e2e-test.d.ts +2 -0
  116. package/dist/tests/validator-announce.e2e-test.d.ts.map +1 -0
  117. package/dist/tests/validator-announce.e2e-test.js +116 -0
  118. package/dist/tests/validator-announce.e2e-test.js.map +1 -0
  119. package/dist/tests/warp.e2e-test.d.ts +2 -0
  120. package/dist/tests/warp.e2e-test.d.ts.map +1 -0
  121. package/dist/tests/warp.e2e-test.js +602 -0
  122. package/dist/tests/warp.e2e-test.js.map +1 -0
  123. package/dist/utils/base-query.d.ts +188 -0
  124. package/dist/utils/base-query.d.ts.map +1 -0
  125. package/dist/utils/base-query.js +207 -0
  126. package/dist/utils/base-query.js.map +1 -0
  127. package/dist/utils/base.d.ts +67 -0
  128. package/dist/utils/base.d.ts.map +1 -0
  129. package/dist/utils/base.js +353 -0
  130. package/dist/utils/base.js.map +1 -0
  131. package/dist/utils/constants.d.ts +20 -0
  132. package/dist/utils/constants.d.ts.map +1 -0
  133. package/dist/utils/constants.js +20 -0
  134. package/dist/utils/constants.js.map +1 -0
  135. package/dist/utils/signer.d.ts +17 -0
  136. package/dist/utils/signer.d.ts.map +1 -0
  137. package/dist/utils/signer.js +60 -0
  138. package/dist/utils/signer.js.map +1 -0
  139. package/dist/utils/types.d.ts +139 -0
  140. package/dist/utils/types.d.ts.map +1 -0
  141. package/dist/utils/types.js +39 -0
  142. package/dist/utils/types.js.map +1 -0
  143. package/dist/utils/utils.d.ts +8 -0
  144. package/dist/utils/utils.d.ts.map +1 -0
  145. package/dist/utils/utils.js +47 -0
  146. package/dist/utils/utils.js.map +1 -0
  147. package/dist/utils/utils.test.d.ts +2 -0
  148. package/dist/utils/utils.test.d.ts.map +1 -0
  149. package/dist/utils/utils.test.js +27 -0
  150. package/dist/utils/utils.test.js.map +1 -0
  151. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
  152. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  153. package/dist/validator-announce/validator-announce-artifact-manager.js +21 -0
  154. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  155. package/dist/validator-announce/validator-announce-query.d.ts +6 -0
  156. package/dist/validator-announce/validator-announce-query.d.ts.map +1 -0
  157. package/dist/validator-announce/validator-announce-query.js +10 -0
  158. package/dist/validator-announce/validator-announce-query.js.map +1 -0
  159. package/dist/validator-announce/validator-announce-tx.d.ts +4 -0
  160. package/dist/validator-announce/validator-announce-tx.d.ts.map +1 -0
  161. package/dist/validator-announce/validator-announce-tx.js +6 -0
  162. package/dist/validator-announce/validator-announce-tx.js.map +1 -0
  163. package/dist/validator-announce/validator-announce.d.ts +23 -0
  164. package/dist/validator-announce/validator-announce.d.ts.map +1 -0
  165. package/dist/validator-announce/validator-announce.js +52 -0
  166. package/dist/validator-announce/validator-announce.js.map +1 -0
  167. package/dist/warp/collateral-token.d.ts +23 -0
  168. package/dist/warp/collateral-token.d.ts.map +1 -0
  169. package/dist/warp/collateral-token.js +130 -0
  170. package/dist/warp/collateral-token.js.map +1 -0
  171. package/dist/warp/populate.d.ts +71 -0
  172. package/dist/warp/populate.d.ts.map +1 -0
  173. package/dist/warp/populate.js +110 -0
  174. package/dist/warp/populate.js.map +1 -0
  175. package/dist/warp/query.d.ts +44 -0
  176. package/dist/warp/query.d.ts.map +1 -0
  177. package/dist/warp/query.js +154 -0
  178. package/dist/warp/query.js.map +1 -0
  179. package/dist/warp/synthetic-token.d.ts +23 -0
  180. package/dist/warp/synthetic-token.d.ts.map +1 -0
  181. package/dist/warp/synthetic-token.js +131 -0
  182. package/dist/warp/synthetic-token.js.map +1 -0
  183. package/dist/warp/tx.d.ts +54 -0
  184. package/dist/warp/tx.d.ts.map +1 -0
  185. package/dist/warp/tx.js +85 -0
  186. package/dist/warp/tx.js.map +1 -0
  187. package/dist/warp/warp-artifact-manager.d.ts +15 -0
  188. package/dist/warp/warp-artifact-manager.d.ts.map +1 -0
  189. package/dist/warp/warp-artifact-manager.js +49 -0
  190. package/dist/warp/warp-artifact-manager.js.map +1 -0
  191. package/dist/warp/warp-query.d.ts +9 -0
  192. package/dist/warp/warp-query.d.ts.map +1 -0
  193. package/dist/warp/warp-query.js +130 -0
  194. package/dist/warp/warp-query.js.map +1 -0
  195. package/dist/warp/warp-tx.d.ts +48 -0
  196. package/dist/warp/warp-tx.d.ts.map +1 -0
  197. package/dist/warp/warp-tx.js +125 -0
  198. package/dist/warp/warp-tx.js.map +1 -0
  199. package/docker-compose.yml +139 -0
  200. package/package.json +64 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-query.test.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-query.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { TransactionManifest } from '@radixdlt/radix-engine-toolkit';
3
+ import { RadixBase } from '../utils/base.js';
4
+ export declare function getCreateMailboxTx(base: Readonly<RadixBase>, fromAddress: string, domainId: number): Promise<TransactionManifest>;
5
+ export declare function getSetMailboxOwnerTx(base: Readonly<RadixBase>, gateway: Readonly<GatewayApiClient>, fromAddress: string, { mailboxAddress, newOwner, }: {
6
+ mailboxAddress: string;
7
+ newOwner: string;
8
+ }): Promise<TransactionManifest>;
9
+ export declare function getSetMailboxRequiredHookTx(base: Readonly<RadixBase>, fromAddress: string, { mailboxAddress, hookAddress, }: {
10
+ mailboxAddress: string;
11
+ hookAddress: string;
12
+ }): Promise<TransactionManifest>;
13
+ export declare function getSetMailboxDefaultHookTx(base: Readonly<RadixBase>, fromAddress: string, { mailboxAddress, hookAddress, }: {
14
+ mailboxAddress: string;
15
+ hookAddress: string;
16
+ }): Promise<TransactionManifest>;
17
+ export declare function getSetMailboxDefaultIsmTx(base: Readonly<RadixBase>, fromAddress: string, { mailboxAddress, ismAddress, }: {
18
+ mailboxAddress: string;
19
+ ismAddress: string;
20
+ }): Promise<TransactionManifest>;
21
+ //# sourceMappingURL=mailbox-tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-tx.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EACL,mBAAmB,EAGpB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAQ9B;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EACzB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACnC,WAAW,EAAE,MAAM,EACnB,EACE,cAAc,EACd,QAAQ,GACT,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAoB9B;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EACzB,WAAW,EAAE,MAAM,EACnB,EACE,cAAc,EACd,WAAW,GACZ,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EACzB,WAAW,EAAE,MAAM,EACnB,EACE,cAAc,EACd,WAAW,GACZ,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAO9B;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EACzB,WAAW,EAAE,MAAM,EACnB,EACE,cAAc,EACd,UAAU,GACX,EAAE;IACD,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC,mBAAmB,CAAC,CAO9B"}
@@ -0,0 +1,27 @@
1
+ import { address, u32, } from '@radixdlt/radix-engine-toolkit';
2
+ import { getComponentOwnershipInfo, getRadixComponentDetails, } from '../utils/base-query.js';
3
+ import { INSTRUCTIONS } from '../utils/types.js';
4
+ export async function getCreateMailboxTx(base, fromAddress, domainId) {
5
+ return base.createCallFunctionManifest(fromAddress, base.getHyperlanePackageDefAddress(), 'Mailbox', INSTRUCTIONS.INSTANTIATE, [u32(domainId)]);
6
+ }
7
+ export async function getSetMailboxOwnerTx(base, gateway, fromAddress, { mailboxAddress, newOwner, }) {
8
+ const mailboxDetails = await getRadixComponentDetails(gateway, mailboxAddress, 'Mailbox');
9
+ const ownershipInfo = getComponentOwnershipInfo(mailboxAddress, mailboxDetails);
10
+ const resourceAddress = ownershipInfo.rule.access_rule.proof_rule.requirement.resource;
11
+ return base.transfer({
12
+ from_address: fromAddress,
13
+ to_address: newOwner,
14
+ resource_address: resourceAddress,
15
+ amount: '1',
16
+ });
17
+ }
18
+ export async function getSetMailboxRequiredHookTx(base, fromAddress, { mailboxAddress, hookAddress, }) {
19
+ return base.createCallMethodManifestWithOwner(fromAddress, mailboxAddress, 'set_required_hook', [address(hookAddress)]);
20
+ }
21
+ export async function getSetMailboxDefaultHookTx(base, fromAddress, { mailboxAddress, hookAddress, }) {
22
+ return base.createCallMethodManifestWithOwner(fromAddress, mailboxAddress, 'set_default_hook', [address(hookAddress)]);
23
+ }
24
+ export async function getSetMailboxDefaultIsmTx(base, fromAddress, { mailboxAddress, ismAddress, }) {
25
+ return base.createCallMethodManifestWithOwner(fromAddress, mailboxAddress, 'set_default_ism', [address(ismAddress)]);
26
+ }
27
+ //# sourceMappingURL=mailbox-tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-tx.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-tx.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,GAAG,GACJ,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAyB,EACzB,WAAmB,EACnB,QAAgB;IAEhB,OAAO,IAAI,CAAC,0BAA0B,CACpC,WAAW,EACX,IAAI,CAAC,6BAA6B,EAAE,EACpC,SAAS,EACT,YAAY,CAAC,WAAW,EACxB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAyB,EACzB,OAAmC,EACnC,WAAmB,EACnB,EACE,cAAc,EACd,QAAQ,GAIT;IAED,MAAM,cAAc,GAAG,MAAM,wBAAwB,CACnD,OAAO,EACP,cAAc,EACd,SAAS,CACV,CAAC;IAEF,MAAM,aAAa,GAAG,yBAAyB,CAC7C,cAAc,EACd,cAAc,CACf,CAAC;IACF,MAAM,eAAe,GACnB,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC;IAEjE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,QAAQ;QACpB,gBAAgB,EAAE,eAAe;QACjC,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAyB,EACzB,WAAmB,EACnB,EACE,cAAc,EACd,WAAW,GAIZ;IAED,OAAO,IAAI,CAAC,iCAAiC,CAC3C,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAyB,EACzB,WAAmB,EACnB,EACE,cAAc,EACd,WAAW,GAIZ;IAED,OAAO,IAAI,CAAC,iCAAiC,CAC3C,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAyB,EACzB,WAAmB,EACnB,EACE,cAAc,EACd,UAAU,GAIX;IAED,OAAO,IAAI,CAAC,iCAAiC,CAC3C,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactDeployed, ArtifactNew, ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { DeployedMailboxAddress, MailboxOnChain } from '@humanode-hyperlane/provider-sdk/mailbox';
4
+ import { TxReceipt } from '@humanode-hyperlane/provider-sdk/module';
5
+ import { RadixBase } from '../utils/base.js';
6
+ import { RadixBaseSigner } from '../utils/signer.js';
7
+ import { AnnotatedRadixTransaction } from '../utils/types.js';
8
+ export declare class RadixMailboxReader implements ArtifactReader<MailboxOnChain, DeployedMailboxAddress> {
9
+ protected readonly gateway: Readonly<GatewayApiClient>;
10
+ constructor(gateway: Readonly<GatewayApiClient>);
11
+ read(address: string): Promise<ArtifactDeployed<MailboxOnChain, DeployedMailboxAddress>>;
12
+ }
13
+ export declare class RadixMailboxWriter extends RadixMailboxReader implements ArtifactWriter<MailboxOnChain, DeployedMailboxAddress> {
14
+ private readonly signer;
15
+ private readonly base;
16
+ private readonly domainId;
17
+ constructor(gateway: Readonly<GatewayApiClient>, signer: RadixBaseSigner, base: RadixBase, domainId: number);
18
+ create(artifact: ArtifactNew<MailboxOnChain>): Promise<[
19
+ ArtifactDeployed<MailboxOnChain, DeployedMailboxAddress>,
20
+ TxReceipt[]
21
+ ]>;
22
+ update(artifact: ArtifactDeployed<MailboxOnChain, DeployedMailboxAddress>): Promise<AnnotatedRadixTransaction[]>;
23
+ }
24
+ //# sourceMappingURL=mailbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAW9D,qBAAa,kBAAmB,YAAW,cAAc,CACvD,cAAc,EACd,sBAAsB,CACvB;IACa,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;gBAAnC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAE5D,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;CAgCrE;AAED,qBAAa,kBACX,SAAQ,kBACR,YAAW,cAAc,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAI/D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHzB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM;IAK7B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,cAAc,CAAC,GACpC,OAAO,CACR;QAAC,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,CAAC;QAAE,SAAS,EAAE;KAAC,CACxE;IAsFK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,cAAc,EAAE,sBAAsB,CAAC,GACjE,OAAO,CAAC,yBAAyB,EAAE,CAAC;CA6GxC"}
@@ -0,0 +1,171 @@
1
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
2
+ import { ZERO_ADDRESS_HEX_32, eqAddressRadix, eqOptionalAddress, isEmptyAddress, } from '@humanode-hyperlane/utils';
3
+ import { getMailboxConfig } from './mailbox-query.js';
4
+ import { getCreateMailboxTx, getSetMailboxDefaultHookTx, getSetMailboxDefaultIsmTx, getSetMailboxOwnerTx, getSetMailboxRequiredHookTx, } from './mailbox-tx.js';
5
+ export class RadixMailboxReader {
6
+ gateway;
7
+ constructor(gateway) {
8
+ this.gateway = gateway;
9
+ }
10
+ async read(address) {
11
+ const mailboxConfig = await getMailboxConfig(this.gateway, address);
12
+ return {
13
+ artifactState: ArtifactState.DEPLOYED,
14
+ config: {
15
+ owner: mailboxConfig.owner,
16
+ defaultIsm: {
17
+ artifactState: ArtifactState.UNDERIVED,
18
+ deployed: {
19
+ address: mailboxConfig.defaultIsm || ZERO_ADDRESS_HEX_32,
20
+ },
21
+ },
22
+ defaultHook: {
23
+ artifactState: ArtifactState.UNDERIVED,
24
+ deployed: {
25
+ address: mailboxConfig.defaultHook || ZERO_ADDRESS_HEX_32,
26
+ },
27
+ },
28
+ requiredHook: {
29
+ artifactState: ArtifactState.UNDERIVED,
30
+ deployed: {
31
+ address: mailboxConfig.requiredHook || ZERO_ADDRESS_HEX_32,
32
+ },
33
+ },
34
+ },
35
+ deployed: {
36
+ address: mailboxConfig.address,
37
+ domainId: mailboxConfig.localDomain,
38
+ },
39
+ };
40
+ }
41
+ }
42
+ export class RadixMailboxWriter extends RadixMailboxReader {
43
+ signer;
44
+ base;
45
+ domainId;
46
+ constructor(gateway, signer, base, domainId) {
47
+ super(gateway);
48
+ this.signer = signer;
49
+ this.base = base;
50
+ this.domainId = domainId;
51
+ }
52
+ async create(artifact) {
53
+ const { config } = artifact;
54
+ const allReceipts = [];
55
+ // Extract addresses from artifact references
56
+ const defaultIsmAddress = config.defaultIsm.deployed.address;
57
+ const defaultHookAddress = config.defaultHook.deployed.address;
58
+ const requiredHookAddress = config.requiredHook.deployed.address;
59
+ const createTx = await getCreateMailboxTx(this.base, this.signer.getAddress(), this.domainId);
60
+ const createReceipt = await this.signer.signAndBroadcast(createTx);
61
+ const address = await this.base.getNewComponent(createReceipt);
62
+ allReceipts.push(createReceipt);
63
+ // Set default ISM (only if address is set)
64
+ if (!isEmptyAddress(defaultIsmAddress)) {
65
+ const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
66
+ mailboxAddress: address,
67
+ ismAddress: defaultIsmAddress,
68
+ });
69
+ const ismReceipt = await this.signer.signAndBroadcast(setIsmTx);
70
+ allReceipts.push(ismReceipt);
71
+ }
72
+ // Set default hook (only if address is set)
73
+ if (!isEmptyAddress(defaultHookAddress)) {
74
+ const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
75
+ mailboxAddress: address,
76
+ hookAddress: defaultHookAddress,
77
+ });
78
+ const defaultHookReceipt = await this.signer.signAndBroadcast(setDefaultHookTx);
79
+ allReceipts.push(defaultHookReceipt);
80
+ }
81
+ // Set required hook (only if address is set)
82
+ if (!isEmptyAddress(requiredHookAddress)) {
83
+ const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
84
+ mailboxAddress: address,
85
+ hookAddress: requiredHookAddress,
86
+ });
87
+ const requiredHookReceipt = await this.signer.signAndBroadcast(setRequiredHookTx);
88
+ allReceipts.push(requiredHookReceipt);
89
+ }
90
+ // Note: Ownership is NOT transferred during creation. The deployer retains
91
+ // ownership to allow setting ISM and hooks after initial deployment, which
92
+ // require owner permissions. Use update() to transfer ownership to the
93
+ // intended owner once all configuration is complete.
94
+ const deployedArtifact = {
95
+ artifactState: ArtifactState.DEPLOYED,
96
+ config: {
97
+ ...artifact.config,
98
+ owner: this.signer.getAddress(),
99
+ },
100
+ deployed: {
101
+ address,
102
+ domainId: this.domainId,
103
+ },
104
+ };
105
+ return [deployedArtifact, allReceipts];
106
+ }
107
+ async update(artifact) {
108
+ const { config, deployed } = artifact;
109
+ const updateTxs = [];
110
+ // Read current state
111
+ const currentState = await this.read(deployed.address);
112
+ // Extract addresses from artifact references
113
+ const expectedDefaultIsmAddress = config.defaultIsm.deployed.address;
114
+ const expectedDefaultHookAddress = config.defaultHook.deployed.address;
115
+ const expectedRequiredHookAddress = config.requiredHook.deployed.address;
116
+ // Extract addresses from current state
117
+ const currentDefaultIsmAddress = currentState.config.defaultIsm.deployed.address;
118
+ const currentDefaultHookAddress = currentState.config.defaultHook.deployed.address;
119
+ const currentRequiredHookAddress = currentState.config.requiredHook.deployed.address;
120
+ // Update default ISM if changed
121
+ if (!eqOptionalAddress(currentDefaultIsmAddress, expectedDefaultIsmAddress, eqAddressRadix)) {
122
+ const setIsmTx = await getSetMailboxDefaultIsmTx(this.base, this.signer.getAddress(), {
123
+ mailboxAddress: deployed.address,
124
+ ismAddress: expectedDefaultIsmAddress,
125
+ });
126
+ updateTxs.push({
127
+ annotation: `Update mailbox default ISM to ${expectedDefaultIsmAddress}`,
128
+ networkId: this.base.getNetworkId(),
129
+ manifest: setIsmTx,
130
+ });
131
+ }
132
+ // Update default hook if changed
133
+ if (!eqOptionalAddress(currentDefaultHookAddress, expectedDefaultHookAddress, eqAddressRadix)) {
134
+ const setDefaultHookTx = await getSetMailboxDefaultHookTx(this.base, this.signer.getAddress(), {
135
+ mailboxAddress: deployed.address,
136
+ hookAddress: expectedDefaultHookAddress,
137
+ });
138
+ updateTxs.push({
139
+ annotation: `Update mailbox default hook to ${expectedDefaultHookAddress}`,
140
+ networkId: this.base.getNetworkId(),
141
+ manifest: setDefaultHookTx,
142
+ });
143
+ }
144
+ // Update required hook if changed
145
+ if (!eqOptionalAddress(currentRequiredHookAddress, expectedRequiredHookAddress, eqAddressRadix)) {
146
+ const setRequiredHookTx = await getSetMailboxRequiredHookTx(this.base, this.signer.getAddress(), {
147
+ mailboxAddress: deployed.address,
148
+ hookAddress: expectedRequiredHookAddress,
149
+ });
150
+ updateTxs.push({
151
+ annotation: `Update mailbox required hook to ${expectedRequiredHookAddress}`,
152
+ networkId: this.base.getNetworkId(),
153
+ manifest: setRequiredHookTx,
154
+ });
155
+ }
156
+ // Update owner if changed (do this last to avoid permission issues)
157
+ if (!eqAddressRadix(currentState.config.owner, config.owner)) {
158
+ const setOwnerTx = await getSetMailboxOwnerTx(this.base, this.gateway, this.signer.getAddress(), {
159
+ mailboxAddress: deployed.address,
160
+ newOwner: config.owner,
161
+ });
162
+ updateTxs.push({
163
+ annotation: `Transfer mailbox ownership to ${config.owner}`,
164
+ networkId: this.base.getNetworkId(),
165
+ manifest: setOwnerTx,
166
+ });
167
+ }
168
+ return updateTxs;
169
+ }
170
+ }
171
+ //# sourceMappingURL=mailbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/mailbox/mailbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { ProtocolType } from '@humanode-hyperlane/provider-sdk';
2
+ /**
3
+ * Test timeout for operations that require node startup and deployment
4
+ */
5
+ export declare const DEFAULT_E2E_TEST_TIMEOUT = 100000;
6
+ /**
7
+ * Hyperlane Radix GitHub repository and version
8
+ */
9
+ export declare const HYPERLANE_RADIX_GIT = "https://github.com/hyperlane-xyz/hyperlane-radix";
10
+ export declare const HYPERLANE_RADIX_VERSION = "1.1.0";
11
+ /**
12
+ * Test private key for Radix local network
13
+ * This matches the key used in CLI tests
14
+ */
15
+ export declare const TEST_RADIX_PRIVATE_KEY = "0x8ef41fc20bf963ce18494c0f13e9303f70abc4c1d1ecfdb0a329d7fd468865b8";
16
+ /**
17
+ * Test private key for Radix local network to test transactions sent
18
+ * from an account that is not the default signer
19
+ */
20
+ export declare const OTHER_RADIX_PRIVATE_KEY = "0xc2c13fcb59f6ee4ed9611ce44eefc6cdf62e6a575c09fb5c4db3e205001328c4";
21
+ /**
22
+ * Test deployer address derived from TEST_RADIX_PRIVATE_KEY
23
+ */
24
+ export declare const TEST_RADIX_DEPLOYER_ADDRESS = "account_loc12ytsy99ajzkwy7ce0444fs8avat7jy3fkj5mk64yz2z3yml6s7y7x3";
25
+ /**
26
+ * Test deployer address derived from OTHER_RADIX_PRIVATE_KEY
27
+ */
28
+ export declare const OTHER_TEST_RADIX_DEPLOYER_ADDRESS = "account_loc129y2xw0zp9qafpas7lr2as4kt9yv0vy62yt5wfd6fw4ky4td7cl8ah";
29
+ /**
30
+ * Burn address for Radix local network
31
+ */
32
+ export declare const TEST_RADIX_BURN_ADDRESS = "account_loc1294g56ga4ckdzhksx6vnrns2jj0v47ju87flsyscxdjxu9wrkjp5vt";
33
+ /**
34
+ * Default test chain metadata for Radix local network
35
+ */
36
+ export declare const TEST_RADIX_CHAIN_METADATA: {
37
+ readonly name: "radixtest";
38
+ readonly protocol: ProtocolType.Radix;
39
+ readonly chainId: 240;
40
+ readonly domainId: 1421493353;
41
+ readonly nativeToken: {
42
+ readonly decimals: 18;
43
+ readonly name: "Radix";
44
+ readonly symbol: "XRD";
45
+ readonly denom: "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd";
46
+ };
47
+ readonly blocks: {
48
+ readonly confirmations: 0;
49
+ readonly estimateBlockTime: 5;
50
+ };
51
+ readonly gatewayUrls: [{
52
+ readonly http: "http://127.0.0.1:5308";
53
+ }];
54
+ readonly rpcUrls: [{
55
+ readonly http: "http://127.0.0.1:3333/core";
56
+ }];
57
+ readonly rpcPort: 3333;
58
+ readonly rpcUrl: "http://127.0.0.1:3333";
59
+ readonly restPort: 3333;
60
+ };
61
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE;;GAEG;AACH,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,mBAAmB,qDACoB,CAAC;AACrD,eAAO,MAAM,uBAAuB,UAAU,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,uEACmC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,uEACkC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,2BAA2B,uEAC8B,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,iCAAiC,uEACwB,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,uBAAuB,uEACkC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;CA6BA,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { ProtocolType } from '@humanode-hyperlane/provider-sdk';
2
+ /**
3
+ * Test timeout for operations that require node startup and deployment
4
+ */
5
+ export const DEFAULT_E2E_TEST_TIMEOUT = 100_000;
6
+ /**
7
+ * Hyperlane Radix GitHub repository and version
8
+ */
9
+ export const HYPERLANE_RADIX_GIT = 'https://github.com/hyperlane-xyz/hyperlane-radix';
10
+ export const HYPERLANE_RADIX_VERSION = '1.1.0';
11
+ /**
12
+ * Test private key for Radix local network
13
+ * This matches the key used in CLI tests
14
+ */
15
+ export const TEST_RADIX_PRIVATE_KEY = '0x8ef41fc20bf963ce18494c0f13e9303f70abc4c1d1ecfdb0a329d7fd468865b8';
16
+ /**
17
+ * Test private key for Radix local network to test transactions sent
18
+ * from an account that is not the default signer
19
+ */
20
+ export const OTHER_RADIX_PRIVATE_KEY = '0xc2c13fcb59f6ee4ed9611ce44eefc6cdf62e6a575c09fb5c4db3e205001328c4';
21
+ /**
22
+ * Test deployer address derived from TEST_RADIX_PRIVATE_KEY
23
+ */
24
+ export const TEST_RADIX_DEPLOYER_ADDRESS = 'account_loc12ytsy99ajzkwy7ce0444fs8avat7jy3fkj5mk64yz2z3yml6s7y7x3';
25
+ /**
26
+ * Test deployer address derived from OTHER_RADIX_PRIVATE_KEY
27
+ */
28
+ export const OTHER_TEST_RADIX_DEPLOYER_ADDRESS = 'account_loc129y2xw0zp9qafpas7lr2as4kt9yv0vy62yt5wfd6fw4ky4td7cl8ah';
29
+ /**
30
+ * Burn address for Radix local network
31
+ */
32
+ export const TEST_RADIX_BURN_ADDRESS = 'account_loc1294g56ga4ckdzhksx6vnrns2jj0v47ju87flsyscxdjxu9wrkjp5vt';
33
+ /**
34
+ * Default test chain metadata for Radix local network
35
+ */
36
+ export const TEST_RADIX_CHAIN_METADATA = {
37
+ name: 'radixtest',
38
+ protocol: ProtocolType.Radix,
39
+ chainId: 240,
40
+ domainId: 1421493353,
41
+ nativeToken: {
42
+ decimals: 18,
43
+ name: 'Radix',
44
+ symbol: 'XRD',
45
+ denom: 'resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd',
46
+ },
47
+ blocks: {
48
+ confirmations: 0,
49
+ estimateBlockTime: 5,
50
+ },
51
+ gatewayUrls: [
52
+ {
53
+ http: 'http://127.0.0.1:5308',
54
+ },
55
+ ],
56
+ rpcUrls: [
57
+ {
58
+ http: 'http://127.0.0.1:3333/core',
59
+ },
60
+ ],
61
+ rpcPort: 3333,
62
+ rpcUrl: 'http://127.0.0.1:3333',
63
+ restPort: 3333,
64
+ };
65
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/testing/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,kDAAkD,CAAC;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,oEAAoE,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,oEAAoE,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACtC,oEAAoE,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,oEAAoE,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAClC,oEAAoE,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,YAAY,CAAC,KAAK;IAC5B,OAAO,EAAE,GAAG;IACZ,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,KAAK;QACb,KAAK,EACH,qEAAqE;KACxE;IACD,MAAM,EAAE;QACN,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;KACrB;IACD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,uBAAuB;SAC9B;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,4BAA4B;SACnC;KACF;IACD,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,uBAAuB;IAC/B,QAAQ,EAAE,IAAI;CACsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Test utilities for Radix SDK
3
+ * Export via @humanode-hyperlane/radix-sdk/testing
4
+ */
5
+ export { DEFAULT_E2E_TEST_TIMEOUT, HYPERLANE_RADIX_GIT, HYPERLANE_RADIX_VERSION, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_CHAIN_METADATA, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from './constants.js';
6
+ export { runRadixNode } from './node.js';
7
+ export { RadixContractArtifacts, deployHyperlaneRadixPackage, downloadRadixContracts, } from './setup.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Test utilities for Radix SDK
3
+ * Export via @humanode-hyperlane/radix-sdk/testing
4
+ */
5
+ // Constants
6
+ export { DEFAULT_E2E_TEST_TIMEOUT, HYPERLANE_RADIX_GIT, HYPERLANE_RADIX_VERSION, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_CHAIN_METADATA, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from './constants.js';
7
+ // Node management
8
+ export { runRadixNode } from './node.js';
9
+ // Setup and deployment
10
+ export { deployHyperlaneRadixPackage, downloadRadixContracts, } from './setup.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY;AACZ,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,uBAAuB;AACvB,OAAO,EAEL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { StartedDockerComposeEnvironment } from 'testcontainers';
2
+ import { TestChainMetadata } from '@humanode-hyperlane/provider-sdk/chain';
3
+ import { RadixContractArtifacts } from './setup.js';
4
+ /**
5
+ * Starts a local Radix node using Docker Compose and deploys the Hyperlane package
6
+ *
7
+ * @param chainMetadata - Test chain metadata configuration
8
+ * @param hyperlanePackageArtifacts - Compiled Radix contract artifacts (WASM + RPD)
9
+ * @param privateKey - Optional private key for deployment (defaults to test key)
10
+ * @returns The DockerComposeEnvironment instance
11
+ */
12
+ export declare function runRadixNode(chainMetadata: TestChainMetadata, hyperlanePackageArtifacts: RadixContractArtifacts, privateKey?: string): Promise<StartedDockerComposeEnvironment>;
13
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/testing/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,+BAA+B,EAEhC,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAQ3E,OAAO,EACL,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAKpB;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,iBAAiB,EAChC,yBAAyB,EAAE,sBAAsB,EACjD,UAAU,CAAC,EAAE,MAAM,4CA8CpB"}
@@ -0,0 +1,42 @@
1
+ /* eslint-disable import/no-nodejs-modules */
2
+ import { dirname, join } from 'path';
3
+ import { DockerComposeEnvironment, Wait, } from 'testcontainers';
4
+ /* eslint-disable import/no-nodejs-modules */
5
+ import { fileURLToPath } from 'url';
6
+ import { assert, retryAsync, rootLogger, sleep, } from '@humanode-hyperlane/utils';
7
+ import { deployHyperlaneRadixPackage, } from './setup.js';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ /**
11
+ * Starts a local Radix node using Docker Compose and deploys the Hyperlane package
12
+ *
13
+ * @param chainMetadata - Test chain metadata configuration
14
+ * @param hyperlanePackageArtifacts - Compiled Radix contract artifacts (WASM + RPD)
15
+ * @param privateKey - Optional private key for deployment (defaults to test key)
16
+ * @returns The DockerComposeEnvironment instance
17
+ */
18
+ export async function runRadixNode(chainMetadata, hyperlanePackageArtifacts, privateKey) {
19
+ const gatewayUrl = chainMetadata.gatewayUrls?.[0]?.http;
20
+ assert(gatewayUrl, `At least one gateway url should be defined in the ${chainMetadata.name} chain metadata`);
21
+ const gatewayPort = new URL(gatewayUrl).port;
22
+ // Retry docker-compose up to handle transient Docker registry 503 errors in CI
23
+ const environment = await retryAsync(async () => new DockerComposeEnvironment(
24
+ // move back to the root of this package
25
+ join(__dirname, '..', '..'), 'docker-compose.yml')
26
+ .withEnvironment({
27
+ RADIX_CORE_PORT: chainMetadata.rpcPort.toString(),
28
+ RADIX_GATEWAY_PORT: gatewayPort,
29
+ })
30
+ .withProfiles('fullnode', 'network-gateway-image')
31
+ .withWaitStrategy('postgres_db-1', Wait.forHealthCheck())
32
+ .withWaitStrategy('fullnode-1', Wait.forHealthCheck())
33
+ .withWaitStrategy('gateway_api_image-1', Wait.forLogMessage(/HealthyAndSynced=1/))
34
+ .up(), 3, // maxRetries
35
+ 5000);
36
+ // Wait 10 sec to give time to the gateway api to sync
37
+ rootLogger.info(`Waiting on the gateway API to sync for ${chainMetadata.name}`);
38
+ await sleep(10_000);
39
+ await deployHyperlaneRadixPackage(chainMetadata, hyperlanePackageArtifacts, privateKey);
40
+ return environment;
41
+ }
42
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/testing/node.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EACL,wBAAwB,EAExB,IAAI,GACL,MAAM,gBAAgB,CAAC;AACxB,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,OAAO,EACL,MAAM,EACN,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAgC,EAChC,yBAAiD,EACjD,UAAmB;IAEnB,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IACxD,MAAM,CACJ,UAAU,EACV,qDAAqD,aAAa,CAAC,IAAI,iBAAiB,CACzF,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAE7C,+EAA+E;IAC/E,MAAM,WAAW,GAAG,MAAM,UAAU,CAClC,KAAK,IAAI,EAAE,CACT,IAAI,wBAAwB;IAC1B,wCAAwC;IACxC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAC3B,oBAAoB,CACrB;SACE,eAAe,CAAC;QACf,eAAe,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE;QACjD,kBAAkB,EAAE,WAAW;KAChC,CAAC;SACD,YAAY,CAAC,UAAU,EAAE,uBAAuB,CAAC;SACjD,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;SACxD,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;SACrD,gBAAgB,CACf,qBAAqB,EACrB,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CACzC;SACA,EAAE,EAAE,EACT,CAAC,EAAE,aAAa;IAChB,IAAI,CACL,CAAC;IAEF,sDAAsD;IACtD,UAAU,CAAC,IAAI,CACb,0CAA0C,aAAa,CAAC,IAAI,EAAE,CAC/D,CAAC;IACF,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,2BAA2B,CAC/B,aAAa,EACb,yBAAyB,EACzB,UAAU,CACX,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { TestChainMetadata } from '@humanode-hyperlane/provider-sdk/chain';
2
+ export interface RadixContractArtifacts {
3
+ code: Uint8Array;
4
+ packageDefinition: Uint8Array;
5
+ }
6
+ /**
7
+ * Downloads Radix contract artifacts (WASM and RPD files) from GitHub releases
8
+ */
9
+ export declare function downloadRadixContracts(): Promise<RadixContractArtifacts>;
10
+ export interface RadixPackageDeployment {
11
+ packageAddress: string;
12
+ xrdAddress: string;
13
+ }
14
+ /**
15
+ * Deploys the Hyperlane Radix package to a test chain and adds it to the provided metadata.
16
+ * Also returns the XRD resource address for the network, which should be used to update
17
+ * the chain metadata's nativeToken.denom.
18
+ */
19
+ export declare function deployHyperlaneRadixPackage(chainMetadata: TestChainMetadata | undefined, hyperlanePackageArtifacts: RadixContractArtifacts, privateKey?: string): Promise<RadixPackageDeployment>;
20
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAY3E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,iBAAiB,EAAE,UAAU,CAAC;CAC/B;AAcD;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAa9E;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,iBAAiB,YAA4B,EAC5D,yBAAyB,EAAE,sBAAsB,EACjD,UAAU,GAAE,MAA+B,GAC1C,OAAO,CAAC,sBAAsB,CAAC,CAwCjC"}
@@ -0,0 +1,61 @@
1
+ import { assert, retryAsync, rootLogger } from '@humanode-hyperlane/utils';
2
+ import { RadixSigner } from '../clients/signer.js';
3
+ import { HYPERLANE_RADIX_GIT, HYPERLANE_RADIX_VERSION, TEST_RADIX_CHAIN_METADATA, TEST_RADIX_PRIVATE_KEY, } from './constants.js';
4
+ /**
5
+ * Downloads a file from a URL and returns it as a Uint8Array
6
+ */
7
+ async function downloadFile(url) {
8
+ const response = await fetch(url);
9
+ if (!response.ok || !response.body) {
10
+ throw new Error(`Failed to download ${url}: ${response.statusText}`);
11
+ }
12
+ return new Uint8Array(await response.arrayBuffer());
13
+ }
14
+ /**
15
+ * Downloads Radix contract artifacts (WASM and RPD files) from GitHub releases
16
+ */
17
+ export async function downloadRadixContracts() {
18
+ rootLogger.info(`Downloading hyperlane-radix v${HYPERLANE_RADIX_VERSION}...`);
19
+ const wasmUrl = `${HYPERLANE_RADIX_GIT}/releases/download/v${HYPERLANE_RADIX_VERSION}/hyperlane_radix.wasm`;
20
+ const rpdUrl = `${HYPERLANE_RADIX_GIT}/releases/download/v${HYPERLANE_RADIX_VERSION}/hyperlane_radix.rpd`;
21
+ const [code, packageDefinition] = await Promise.all([
22
+ retryAsync(() => downloadFile(wasmUrl), 3, 1000),
23
+ retryAsync(() => downloadFile(rpdUrl), 3, 1000),
24
+ ]);
25
+ rootLogger.info('Downloaded Radix contracts successfully');
26
+ return { code, packageDefinition };
27
+ }
28
+ /**
29
+ * Deploys the Hyperlane Radix package to a test chain and adds it to the provided metadata.
30
+ * Also returns the XRD resource address for the network, which should be used to update
31
+ * the chain metadata's nativeToken.denom.
32
+ */
33
+ export async function deployHyperlaneRadixPackage(chainMetadata = TEST_RADIX_CHAIN_METADATA, hyperlanePackageArtifacts, privateKey = TEST_RADIX_PRIVATE_KEY) {
34
+ // Adding dummy package address to avoid the signer crashing because
35
+ // no Hyperlane package is deployed on the new node
36
+ const metadata = {
37
+ ...chainMetadata,
38
+ packageAddress: 'not-yet-deployed',
39
+ };
40
+ const rpcUrls = metadata.rpcUrls?.map((rpc) => rpc.http) ?? [];
41
+ assert(rpcUrls.length > 0, `Expected radix rpc urls not to be empty`);
42
+ const signer = (await RadixSigner.connectWithSigner(rpcUrls, privateKey, {
43
+ metadata,
44
+ }));
45
+ // Get the actual XRD resource address for this network
46
+ // This is dynamically derived based on the network ID and must be used
47
+ // in the chain metadata to ensure IGP and transfers use the correct token
48
+ const xrdAddress = await signer['base'].getXrdAddress();
49
+ // Fund the account with the internal signer
50
+ // Use retryAsync to handle transient errors (e.g., epoch expiry)
51
+ await retryAsync(() => signer['signer'].getTestnetXrd(), 3, // attempts
52
+ 3000);
53
+ rootLogger.info(`Funded test account on ${metadata.name} before publishing the hyperlane package`);
54
+ const packageAddress = await signer.publishPackage({
55
+ code: hyperlanePackageArtifacts.code,
56
+ packageDefinition: hyperlanePackageArtifacts.packageDefinition,
57
+ });
58
+ rootLogger.info(`Deployed Hyperlane package to: ${packageAddress}`);
59
+ return { packageAddress, xrdAddress };
60
+ }
61
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TestChainMetadata } from '@humanode-hyperlane/provider-sdk/chain';
2
+ export declare let DEPLOYED_TEST_CHAIN_METADATA: TestChainMetadata;
3
+ //# sourceMappingURL=e2e-test.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-test.setup.d.ts","sourceRoot":"","sources":["../../src/tests/e2e-test.setup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAgB3E,eAAO,IAAI,4BAA4B,EAAE,iBAAiB,CAAC"}