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

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,38 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactDeployed, ArtifactNew, ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { DeployedIsmAddress, MultisigIsmConfig } from '@humanode-hyperlane/provider-sdk/ism';
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 RadixMessageIdMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, DeployedIsmAddress> {
9
+ private readonly gateway;
10
+ constructor(gateway: Readonly<GatewayApiClient>);
11
+ read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>>;
12
+ }
13
+ export declare class RadixMessageIdMultisigIsmWriter extends RadixMessageIdMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, DeployedIsmAddress> {
14
+ private readonly signer;
15
+ private readonly base;
16
+ constructor(gateway: Readonly<GatewayApiClient>, signer: RadixBaseSigner, base: RadixBase);
17
+ create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
18
+ ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>,
19
+ TxReceipt[]
20
+ ]>;
21
+ update(_artifact: ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>): Promise<AnnotatedRadixTransaction[]>;
22
+ }
23
+ export declare class RadixMerkleRootMultisigIsmReader implements ArtifactReader<MultisigIsmConfig, DeployedIsmAddress> {
24
+ private readonly gateway;
25
+ constructor(gateway: Readonly<GatewayApiClient>);
26
+ read(address: string): Promise<ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>>;
27
+ }
28
+ export declare class RadixMerkleRootMultisigIsmWriter extends RadixMerkleRootMultisigIsmReader implements ArtifactWriter<MultisigIsmConfig, DeployedIsmAddress> {
29
+ private readonly signer;
30
+ private readonly base;
31
+ constructor(gateway: Readonly<GatewayApiClient>, signer: RadixBaseSigner, base: RadixBase);
32
+ create(artifact: ArtifactNew<MultisigIsmConfig>): Promise<[
33
+ ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>,
34
+ TxReceipt[]
35
+ ]>;
36
+ update(_artifact: ArtifactDeployed<MultisigIsmConfig, DeployedIsmAddress>): Promise<AnnotatedRadixTransaction[]>;
37
+ }
38
+ //# sourceMappingURL=multisig-ism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig-ism.d.ts","sourceRoot":"","sources":["../../src/ism/multisig-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAQ9D,qBAAa,+BAAgC,YAAW,cAAc,CACpE,iBAAiB,EACjB,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAE1D,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;CAepE;AAED,qBAAa,+BACX,SAAQ,+BACR,YAAW,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAI9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS;IAK5B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACvC,OAAO,CACR;QAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QAAE,SAAS,EAAE;KAAC,CACvE;IA6BK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GACjE,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAKxC;AAED,qBAAa,gCAAiC,YAAW,cAAc,CACrE,iBAAiB,EACjB,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAE1D,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;CAepE;AAED,qBAAa,gCACX,SAAQ,gCACR,YAAW,cAAc,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAI9D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS;IAK5B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACvC,OAAO,CACR;QAAC,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;QAAE,SAAS,EAAE;KAAC,CACvE;IA6BK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GACjE,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAKxC"}
@@ -0,0 +1,107 @@
1
+ import { IsmType } from '@humanode-hyperlane/provider-sdk/altvm';
2
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { getMultisigIsmConfig } from './ism-query.js';
4
+ import { getCreateMerkleRootMultisigIsmTx, getCreateMessageIdMultisigIsmTx, } from './ism-tx.js';
5
+ export class RadixMessageIdMultisigIsmReader {
6
+ gateway;
7
+ constructor(gateway) {
8
+ this.gateway = gateway;
9
+ }
10
+ async read(address) {
11
+ const ismConfig = await getMultisigIsmConfig(this.gateway, address);
12
+ return {
13
+ artifactState: ArtifactState.DEPLOYED,
14
+ config: {
15
+ type: IsmType.MESSAGE_ID_MULTISIG,
16
+ validators: ismConfig.validators,
17
+ threshold: ismConfig.threshold,
18
+ },
19
+ deployed: {
20
+ address: ismConfig.address,
21
+ },
22
+ };
23
+ }
24
+ }
25
+ export class RadixMessageIdMultisigIsmWriter extends RadixMessageIdMultisigIsmReader {
26
+ signer;
27
+ base;
28
+ constructor(gateway, signer, base) {
29
+ super(gateway);
30
+ this.signer = signer;
31
+ this.base = base;
32
+ }
33
+ async create(artifact) {
34
+ const { config } = artifact;
35
+ const transactionManifest = await getCreateMessageIdMultisigIsmTx(this.base, this.signer.getAddress(), {
36
+ validators: config.validators,
37
+ threshold: config.threshold,
38
+ });
39
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
40
+ const address = await this.base.getNewComponent(receipt);
41
+ const deployedArtifact = {
42
+ artifactState: ArtifactState.DEPLOYED,
43
+ config: artifact.config,
44
+ deployed: {
45
+ address,
46
+ },
47
+ };
48
+ return [deployedArtifact, [receipt]];
49
+ }
50
+ async update(_artifact) {
51
+ // Multisig ISMs are immutable.
52
+ // To change configuration, a new ISM must be deployed
53
+ return [];
54
+ }
55
+ }
56
+ export class RadixMerkleRootMultisigIsmReader {
57
+ gateway;
58
+ constructor(gateway) {
59
+ this.gateway = gateway;
60
+ }
61
+ async read(address) {
62
+ const ismConfig = await getMultisigIsmConfig(this.gateway, address);
63
+ return {
64
+ artifactState: ArtifactState.DEPLOYED,
65
+ config: {
66
+ type: IsmType.MERKLE_ROOT_MULTISIG,
67
+ validators: ismConfig.validators,
68
+ threshold: ismConfig.threshold,
69
+ },
70
+ deployed: {
71
+ address: ismConfig.address,
72
+ },
73
+ };
74
+ }
75
+ }
76
+ export class RadixMerkleRootMultisigIsmWriter extends RadixMerkleRootMultisigIsmReader {
77
+ signer;
78
+ base;
79
+ constructor(gateway, signer, base) {
80
+ super(gateway);
81
+ this.signer = signer;
82
+ this.base = base;
83
+ }
84
+ async create(artifact) {
85
+ const { config } = artifact;
86
+ const transactionManifest = await getCreateMerkleRootMultisigIsmTx(this.base, this.signer.getAddress(), {
87
+ validators: config.validators,
88
+ threshold: config.threshold,
89
+ });
90
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
91
+ const address = await this.base.getNewComponent(receipt);
92
+ const deployedArtifact = {
93
+ artifactState: ArtifactState.DEPLOYED,
94
+ config: artifact.config,
95
+ deployed: {
96
+ address,
97
+ },
98
+ };
99
+ return [deployedArtifact, [receipt]];
100
+ }
101
+ async update(_artifact) {
102
+ // Multisig ISMs are immutable.
103
+ // To change configuration, a new ISM must be deployed
104
+ return [];
105
+ }
106
+ }
107
+ //# sourceMappingURL=multisig-ism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multisig-ism.js","sourceRoot":"","sources":["../../src/ism/multisig-ism.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactDeployed, ArtifactNew, ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { DeployedIsmAddress, RawRoutingIsmArtifactConfig } from '@humanode-hyperlane/provider-sdk/ism';
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 RadixRoutingIsmRawReader implements ArtifactReader<RawRoutingIsmArtifactConfig, DeployedIsmAddress> {
9
+ protected readonly gateway: Readonly<GatewayApiClient>;
10
+ constructor(gateway: Readonly<GatewayApiClient>);
11
+ read(address: string): Promise<ArtifactDeployed<RawRoutingIsmArtifactConfig, DeployedIsmAddress>>;
12
+ }
13
+ export declare class RadixRoutingIsmRawWriter extends RadixRoutingIsmRawReader implements ArtifactWriter<RawRoutingIsmArtifactConfig, DeployedIsmAddress> {
14
+ private readonly signer;
15
+ private readonly base;
16
+ constructor(gateway: Readonly<GatewayApiClient>, signer: RadixBaseSigner, base: RadixBase);
17
+ create(artifact: ArtifactNew<RawRoutingIsmArtifactConfig>): Promise<[
18
+ ArtifactDeployed<RawRoutingIsmArtifactConfig, DeployedIsmAddress>,
19
+ TxReceipt[]
20
+ ]>;
21
+ update(artifact: ArtifactDeployed<RawRoutingIsmArtifactConfig, DeployedIsmAddress>): Promise<AnnotatedRadixTransaction[]>;
22
+ }
23
+ //# sourceMappingURL=routing-ism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-ism.d.ts","sourceRoot":"","sources":["../../src/ism/routing-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAGd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAU9D,qBAAa,wBAAyB,YAAW,cAAc,CAC7D,2BAA2B,EAC3B,kBAAkB,CACnB;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,CACR,gBAAgB,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAClE;CAyBF;AAED,qBAAa,wBACX,SAAQ,wBACR,YAAW,cAAc,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;IAIxE,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS;IAK5B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,2BAA2B,CAAC,GACjD,OAAO,CACR;QACE,gBAAgB,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;QACjE,SAAS,EAAE;KACZ,CACF;IAmDK,MAAM,CACV,QAAQ,EAAE,gBAAgB,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,GAC1E,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAmFxC"}
@@ -0,0 +1,129 @@
1
+ import { IsmType } from '@humanode-hyperlane/provider-sdk/altvm';
2
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { eqAddressRadix, isNullish } from '@humanode-hyperlane/utils';
4
+ import { getDomainRoutingIsmConfig } from './ism-query.js';
5
+ import { getCreateRoutingIsmTx, getRemoveRoutingIsmDomainIsmTx, getSetRoutingIsmDomainIsmTx, getSetRoutingIsmOwnerTx, } from './ism-tx.js';
6
+ export class RadixRoutingIsmRawReader {
7
+ gateway;
8
+ constructor(gateway) {
9
+ this.gateway = gateway;
10
+ }
11
+ async read(address) {
12
+ const ismConfig = await getDomainRoutingIsmConfig(this.gateway, address);
13
+ const domains = {};
14
+ for (const route of ismConfig.routes) {
15
+ domains[route.domainId] = {
16
+ deployed: {
17
+ address: route.ismAddress,
18
+ },
19
+ artifactState: ArtifactState.UNDERIVED,
20
+ };
21
+ }
22
+ return {
23
+ artifactState: ArtifactState.DEPLOYED,
24
+ config: {
25
+ type: IsmType.ROUTING,
26
+ owner: ismConfig.owner,
27
+ domains,
28
+ },
29
+ deployed: {
30
+ address: ismConfig.address,
31
+ },
32
+ };
33
+ }
34
+ }
35
+ export class RadixRoutingIsmRawWriter extends RadixRoutingIsmRawReader {
36
+ signer;
37
+ base;
38
+ constructor(gateway, signer, base) {
39
+ super(gateway);
40
+ this.signer = signer;
41
+ this.base = base;
42
+ }
43
+ async create(artifact) {
44
+ const { config } = artifact;
45
+ const receipts = [];
46
+ const routes = Object.entries(config.domains).map(([domainId, ismAddress]) => ({
47
+ domainId: parseInt(domainId),
48
+ ismAddress: ismAddress.deployed.address,
49
+ }));
50
+ const transactionManifest = await getCreateRoutingIsmTx(this.base, this.signer.getAddress(), routes);
51
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
52
+ receipts.push(receipt);
53
+ const address = await this.base.getNewComponent(receipt);
54
+ // Transfer ownership if config.owner differs from signer
55
+ if (!eqAddressRadix(config.owner, this.signer.getAddress())) {
56
+ const ownerTransferTx = await getSetRoutingIsmOwnerTx(this.base, this.gateway, this.signer.getAddress(), {
57
+ ismAddress: address,
58
+ newOwner: config.owner,
59
+ });
60
+ const ownerReceipt = await this.signer.signAndBroadcast(ownerTransferTx);
61
+ receipts.push(ownerReceipt);
62
+ }
63
+ const deployedArtifact = {
64
+ artifactState: ArtifactState.DEPLOYED,
65
+ config: artifact.config,
66
+ deployed: {
67
+ address,
68
+ },
69
+ };
70
+ return [deployedArtifact, receipts];
71
+ }
72
+ async update(artifact) {
73
+ const { config, deployed } = artifact;
74
+ const currentConfig = await this.read(deployed.address);
75
+ const transactions = [];
76
+ // This is the address that has to execute the update transactions
77
+ const currentOwner = currentConfig.config.owner;
78
+ // Find domains to add
79
+ for (const [domainId, expectedIsm] of Object.entries(config.domains)) {
80
+ const domain = parseInt(domainId);
81
+ const currentIsmAddress = currentConfig.config.domains[domain]
82
+ ? currentConfig.config.domains[domain].deployed.address
83
+ : undefined;
84
+ const expectedIsmAddress = expectedIsm.deployed.address;
85
+ if (isNullish(currentIsmAddress) ||
86
+ !eqAddressRadix(currentIsmAddress, expectedIsmAddress)) {
87
+ const transactionManifest = await getSetRoutingIsmDomainIsmTx(this.base, currentOwner, {
88
+ ismAddress: deployed.address,
89
+ domainIsm: { domainId: domain, ismAddress: expectedIsmAddress },
90
+ });
91
+ transactions.push({
92
+ annotation: `Set ism for domain ${domain} to ISM ${expectedIsmAddress} on ${IsmType.ROUTING}`,
93
+ networkId: this.base.getNetworkId(),
94
+ manifest: transactionManifest,
95
+ });
96
+ }
97
+ }
98
+ // Find domains to remove
99
+ for (const domainId of Object.keys(currentConfig.config.domains)) {
100
+ const domain = parseInt(domainId);
101
+ const desiredIsmAddress = config.domains[domain];
102
+ if (isNullish(desiredIsmAddress)) {
103
+ const transactionManifest = await getRemoveRoutingIsmDomainIsmTx(this.base, currentOwner, {
104
+ ismAddress: deployed.address,
105
+ domainId: domain,
106
+ });
107
+ transactions.push({
108
+ annotation: `Remove ism for domain ${domain} on ${IsmType.ROUTING}`,
109
+ networkId: this.base.getNetworkId(),
110
+ manifest: transactionManifest,
111
+ });
112
+ }
113
+ }
114
+ // Owner transfer must be last transaction as the current owner executes all updates
115
+ if (!eqAddressRadix(config.owner, currentConfig.config.owner)) {
116
+ const transactionManifest = await getSetRoutingIsmOwnerTx(this.base, this.gateway, currentOwner, {
117
+ ismAddress: deployed.address,
118
+ newOwner: config.owner,
119
+ });
120
+ transactions.push({
121
+ annotation: `Transfer ownership of ${IsmType.ROUTING} from ${currentConfig.config.owner} to ${config.owner}`,
122
+ networkId: this.base.getNetworkId(),
123
+ manifest: transactionManifest,
124
+ });
125
+ }
126
+ return transactions;
127
+ }
128
+ }
129
+ //# sourceMappingURL=routing-ism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-ism.js","sourceRoot":"","sources":["../../src/ism/routing-ism.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactDeployed, ArtifactNew, ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { DeployedIsmAddress, TestIsmConfig } from '@humanode-hyperlane/provider-sdk/ism';
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 RadixTestIsmReader implements ArtifactReader<TestIsmConfig, DeployedIsmAddress> {
9
+ private readonly gateway;
10
+ constructor(gateway: Readonly<GatewayApiClient>);
11
+ read(address: string): Promise<ArtifactDeployed<TestIsmConfig, DeployedIsmAddress>>;
12
+ }
13
+ export declare class RadixTestIsmWriter extends RadixTestIsmReader implements ArtifactWriter<TestIsmConfig, DeployedIsmAddress> {
14
+ private readonly signer;
15
+ private readonly base;
16
+ constructor(gateway: Readonly<GatewayApiClient>, signer: RadixBaseSigner, base: RadixBase);
17
+ create(artifact: ArtifactNew<TestIsmConfig>): Promise<[
18
+ ArtifactDeployed<TestIsmConfig, DeployedIsmAddress>,
19
+ TxReceipt[]
20
+ ]>;
21
+ update(_artifact: ArtifactDeployed<TestIsmConfig, DeployedIsmAddress>): Promise<AnnotatedRadixTransaction[]>;
22
+ }
23
+ //# sourceMappingURL=test-ism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-ism.d.ts","sourceRoot":"","sources":["../../src/ism/test-ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAEd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACd,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAK9D,qBAAa,kBAAmB,YAAW,cAAc,CACvD,aAAa,EACb,kBAAkB,CACnB;IACa,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IAE1D,IAAI,CACR,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;CAahE;AAED,qBAAa,kBACX,SAAQ,kBACR,YAAW,cAAc,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAI1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFrB,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAClB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,SAAS;IAK5B,MAAM,CACV,QAAQ,EAAE,WAAW,CAAC,aAAa,CAAC,GACnC,OAAO,CACR;QAAC,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAAE,SAAS,EAAE;KAAC,CACnE;IAuBK,MAAM,CACV,SAAS,EAAE,gBAAgB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAIxC"}
@@ -0,0 +1,49 @@
1
+ import { IsmType } from '@humanode-hyperlane/provider-sdk/altvm';
2
+ import { ArtifactState, } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { getTestIsmConfig } from './ism-query.js';
4
+ import { getCreateNoopIsmTx } from './ism-tx.js';
5
+ export class RadixTestIsmReader {
6
+ gateway;
7
+ constructor(gateway) {
8
+ this.gateway = gateway;
9
+ }
10
+ async read(address) {
11
+ const ismConfig = await getTestIsmConfig(this.gateway, address);
12
+ return {
13
+ artifactState: ArtifactState.DEPLOYED,
14
+ config: {
15
+ type: IsmType.TEST_ISM,
16
+ },
17
+ deployed: {
18
+ address: ismConfig.address,
19
+ },
20
+ };
21
+ }
22
+ }
23
+ export class RadixTestIsmWriter extends RadixTestIsmReader {
24
+ signer;
25
+ base;
26
+ constructor(gateway, signer, base) {
27
+ super(gateway);
28
+ this.signer = signer;
29
+ this.base = base;
30
+ }
31
+ async create(artifact) {
32
+ const transactionManifest = await getCreateNoopIsmTx(this.base, this.signer.getAddress());
33
+ const receipt = await this.signer.signAndBroadcast(transactionManifest);
34
+ const address = await this.base.getNewComponent(receipt);
35
+ const deployedArtifact = {
36
+ artifactState: ArtifactState.DEPLOYED,
37
+ config: artifact.config,
38
+ deployed: {
39
+ address,
40
+ },
41
+ };
42
+ return [deployedArtifact, [receipt]];
43
+ }
44
+ async update(_artifact) {
45
+ // NoopIsm has no mutable state
46
+ return [];
47
+ }
48
+ }
49
+ //# sourceMappingURL=test-ism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-ism.js","sourceRoot":"","sources":["../../src/ism/test-ism.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AACjE,OAAO,EAIL,aAAa,GAEd,MAAM,2CAA2C,CAAC;AAWnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,OAAO,kBAAkB;IAIA;IAA7B,YAA6B,OAAmC;QAAnC,YAAO,GAAP,OAAO,CAA4B;IAAG,CAAC;IAEpE,KAAK,CAAC,IAAI,CACR,OAAe;QAEf,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhE,OAAO;YACL,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,QAAQ;aACvB;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B;SACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBACX,SAAQ,kBAAkB;IAKP;IACA;IAHnB,YACE,OAAmC,EAClB,MAAuB,EACvB,IAAe;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHE,WAAM,GAAN,MAAM,CAAiB;QACvB,SAAI,GAAJ,IAAI,CAAW;IAGlC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,QAAoC;QAIpC,MAAM,mBAAmB,GAAG,MAAM,kBAAkB,CAClD,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CACzB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzD,MAAM,gBAAgB,GAGlB;YACF,aAAa,EAAE,aAAa,CAAC,QAAQ;YACrC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE;gBACR,OAAO;aACR;SACF,CAAC;QAEF,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,SAA8D;QAE9D,+BAA+B;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { ArtifactReader, ArtifactWriter } from '@humanode-hyperlane/provider-sdk/artifact';
3
+ import { DeployedMailboxAddress, IRawMailboxArtifactManager, MailboxType, RawMailboxArtifactConfigs } from '@humanode-hyperlane/provider-sdk/mailbox';
4
+ import { RadixSigner } from '../clients/signer.js';
5
+ import { RadixBase } from '../utils/base.js';
6
+ export declare class RadixMailboxArtifactManager implements IRawMailboxArtifactManager {
7
+ private readonly gateway;
8
+ private readonly base;
9
+ private readonly domainId;
10
+ constructor(gateway: GatewayApiClient, base: RadixBase, domainId: number);
11
+ readMailbox(address: string): Promise<import("@humanode-hyperlane/provider-sdk/artifact").ArtifactDeployed<import("@humanode-hyperlane/provider-sdk/artifact").ConfigOnChain<import("@humanode-hyperlane/provider-sdk/mailbox").MailboxArtifactConfig>, DeployedMailboxAddress>>;
12
+ createReader<T extends MailboxType>(_type: T): ArtifactReader<RawMailboxArtifactConfigs[T], DeployedMailboxAddress>;
13
+ createWriter<T extends MailboxType>(_type: T, signer: RadixSigner): ArtifactWriter<RawMailboxArtifactConfigs[T], DeployedMailboxAddress>;
14
+ }
15
+ //# sourceMappingURL=mailbox-artifact-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-artifact-manager.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-artifact-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAErE,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACX,yBAAyB,EAC1B,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,qBAAa,2BAA4B,YAAW,0BAA0B;IAE1E,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM;IAG7B,WAAW,CAAC,OAAO,EAAE,MAAM;IAKjC,YAAY,CAAC,CAAC,SAAS,WAAW,EAChC,KAAK,EAAE,CAAC,GACP,cAAc,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAavE,YAAY,CAAC,CAAC,SAAS,WAAW,EAChC,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,WAAW,GAClB,cAAc,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;CAmBxE"}
@@ -0,0 +1,29 @@
1
+ import { RadixMailboxReader, RadixMailboxWriter } from './mailbox.js';
2
+ export class RadixMailboxArtifactManager {
3
+ gateway;
4
+ base;
5
+ domainId;
6
+ constructor(gateway, base, domainId) {
7
+ this.gateway = gateway;
8
+ this.base = base;
9
+ this.domainId = domainId;
10
+ }
11
+ async readMailbox(address) {
12
+ const reader = this.createReader('mailbox');
13
+ return reader.read(address);
14
+ }
15
+ createReader(_type) {
16
+ const readers = {
17
+ mailbox: () => new RadixMailboxReader(this.gateway),
18
+ };
19
+ return readers[_type]();
20
+ }
21
+ createWriter(_type, signer) {
22
+ const baseSigner = signer.getBaseSigner();
23
+ const writers = {
24
+ mailbox: () => new RadixMailboxWriter(this.gateway, baseSigner, this.base, this.domainId),
25
+ };
26
+ return writers[_type]();
27
+ }
28
+ }
29
+ //# sourceMappingURL=mailbox-artifact-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-artifact-manager.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-artifact-manager.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,OAAO,2BAA2B;IAEnB;IACA;IACA;IAHnB,YACmB,OAAyB,EACzB,IAAe,EACf,QAAgB;QAFhB,YAAO,GAAP,OAAO,CAAkB;QACzB,SAAI,GAAJ,IAAI,CAAW;QACf,aAAQ,GAAR,QAAQ,CAAQ;IAChC,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAe;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,CACV,KAAQ;QAER,MAAM,OAAO,GAKT;YACF,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;SACpD,CAAC;QAEF,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1B,CAAC;IAED,YAAY,CACV,KAAQ,EACR,MAAmB;QAEnB,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAKT;YACF,OAAO,EAAE,GAAG,EAAE,CACZ,IAAI,kBAAkB,CACpB,IAAI,CAAC,OAAO,EACZ,UAAU,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,CACd;SACJ,CAAC;QAEF,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ export declare function getMailboxConfig(gateway: Readonly<GatewayApiClient>, mailboxAddress: string): Promise<{
3
+ address: string;
4
+ owner: string;
5
+ localDomain: number;
6
+ nonce: number;
7
+ defaultIsm?: string;
8
+ defaultHook?: string;
9
+ requiredHook?: string;
10
+ }>;
11
+ export declare function isMessageDelivered(gateway: Readonly<GatewayApiClient>, mailboxAddress: string, messageId: string): Promise<boolean>;
12
+ //# sourceMappingURL=mailbox-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-query.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAiCrE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACnC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CA0CD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACnC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAyClB"}
@@ -0,0 +1,72 @@
1
+ import { generateRandomNonce } from '@radixdlt/radix-engine-toolkit';
2
+ import { assert, strip0x } from '@humanode-hyperlane/utils';
3
+ import { getComponentOwner, getComponentState, getFieldValueFromEntityState, getOptionalFieldValueFromEntityState, getRadixComponentDetails, } from '../utils/base-query.js';
4
+ import { EPOCH_VALIDITY_RANGE, READ_ACCOUNT_HEX_PUBLIC_KEY, } from '../utils/constants.js';
5
+ function isReceipt(value) {
6
+ if (typeof value !== 'object' || value === null)
7
+ return false;
8
+ return Array.isArray(Reflect.get(value, 'output'));
9
+ }
10
+ function getBooleanOutput(value) {
11
+ if (typeof value !== 'object' || value === null)
12
+ return undefined;
13
+ const raw = Reflect.get(value, 'value');
14
+ if (typeof raw === 'boolean')
15
+ return raw;
16
+ if (raw === 0n || raw === 1n)
17
+ return raw === 1n;
18
+ if (raw === 0 || raw === '0' || raw === 'false')
19
+ return false;
20
+ if (raw === 1 || raw === '1' || raw === 'true')
21
+ return true;
22
+ return undefined;
23
+ }
24
+ export async function getMailboxConfig(gateway, mailboxAddress) {
25
+ const mailboxDetails = await getRadixComponentDetails(gateway, mailboxAddress, 'mailbox');
26
+ const mailboxState = getComponentState(mailboxAddress, mailboxDetails);
27
+ const owner = await getComponentOwner(gateway, mailboxAddress, mailboxDetails);
28
+ return {
29
+ address: mailboxAddress,
30
+ owner,
31
+ localDomain: getFieldValueFromEntityState('local_domain', mailboxAddress, mailboxState, (v) => parseInt(v, 10)),
32
+ nonce: getFieldValueFromEntityState('nonce', mailboxAddress, mailboxState, (v) => parseInt(v, 10)),
33
+ defaultIsm: getOptionalFieldValueFromEntityState('default_ism', mailboxState),
34
+ defaultHook: getOptionalFieldValueFromEntityState('default_hook', mailboxState),
35
+ requiredHook: getOptionalFieldValueFromEntityState('required_hook', mailboxState),
36
+ };
37
+ }
38
+ export async function isMessageDelivered(gateway, mailboxAddress, messageId) {
39
+ const constructionMetadata = await gateway.transaction.innerClient.transactionConstruction();
40
+ const response = await gateway.transaction.innerClient.transactionPreview({
41
+ transactionPreviewRequest: {
42
+ manifest: `
43
+ CALL_METHOD
44
+ Address("${mailboxAddress}")
45
+ "delivered"
46
+ Bytes("${strip0x(messageId)}")
47
+ ;
48
+ `,
49
+ nonce: generateRandomNonce(),
50
+ signer_public_keys: [
51
+ {
52
+ key_type: 'EddsaEd25519',
53
+ key_hex: READ_ACCOUNT_HEX_PUBLIC_KEY,
54
+ },
55
+ ],
56
+ flags: {
57
+ use_free_credit: true,
58
+ },
59
+ start_epoch_inclusive: constructionMetadata.ledger_state.epoch,
60
+ end_epoch_exclusive: constructionMetadata.ledger_state.epoch + EPOCH_VALIDITY_RANGE,
61
+ },
62
+ });
63
+ const { receipt } = response;
64
+ assert(isReceipt(receipt), 'Unexpected transaction preview receipt shape');
65
+ assert(!receipt.error_message, `${receipt.error_message}`);
66
+ const output = receipt.output;
67
+ assert(output.length, `found no output for delivered method`);
68
+ const delivered = getBooleanOutput(output[0]?.programmatic_json);
69
+ assert(delivered !== undefined, 'Unexpected delivered() output shape from transaction preview');
70
+ return delivered;
71
+ }
72
+ //# sourceMappingURL=mailbox-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-query.js","sourceRoot":"","sources":["../../src/mailbox/mailbox-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oCAAoC,EACpC,wBAAwB,GACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAG/B,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,GAAG,KAAK,EAAE,CAAC;IAChD,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAmC,EACnC,cAAsB;IAUtB,MAAM,cAAc,GAAG,MAAM,wBAAwB,CACnD,OAAO,EACP,cAAc,EACd,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,iBAAiB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,MAAM,iBAAiB,CACnC,OAAO,EACP,cAAc,EACd,cAAc,CACf,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,KAAK;QACL,WAAW,EAAE,4BAA4B,CACvC,cAAc,EACd,cAAc,EACd,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CACvB;QACD,KAAK,EAAE,4BAA4B,CACjC,OAAO,EACP,cAAc,EACd,YAAY,EACZ,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CACvB;QACD,UAAU,EAAE,oCAAoC,CAC9C,aAAa,EACb,YAAY,CACb;QACD,WAAW,EAAE,oCAAoC,CAC/C,cAAc,EACd,YAAY,CACb;QACD,YAAY,EAAE,oCAAoC,CAChD,eAAe,EACf,YAAY,CACb;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAmC,EACnC,cAAsB,EACtB,SAAiB;IAEjB,MAAM,oBAAoB,GACxB,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;IAElE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC;QACxE,yBAAyB,EAAE;YACzB,QAAQ,EAAE;;2BAEW,cAAc;;yBAEhB,OAAO,CAAC,SAAS,CAAC;;SAElC;YACH,KAAK,EAAE,mBAAmB,EAAE;YAC5B,kBAAkB,EAAE;gBAClB;oBACE,QAAQ,EAAE,cAAc;oBACxB,OAAO,EAAE,2BAA2B;iBACrC;aACF;YACD,KAAK,EAAE;gBACL,eAAe,EAAE,IAAI;aACtB;YACD,qBAAqB,EAAE,oBAAoB,CAAC,YAAY,CAAC,KAAK;YAC9D,mBAAmB,EACjB,oBAAoB,CAAC,YAAY,CAAC,KAAK,GAAG,oBAAoB;SACjE;KACF,CAAC,CAAC;IAEH,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,8CAA8C,CAAC,CAAC;IAC3E,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,CACJ,SAAS,KAAK,SAAS,EACvB,8DAA8D,CAC/D,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mailbox-query.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox-query.test.d.ts","sourceRoot":"","sources":["../../src/mailbox/mailbox-query.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { Transaction, TransactionApi, } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { expect } from 'chai';
3
+ import { isMessageDelivered } from './mailbox-query.js';
4
+ class TestTransactionApi extends TransactionApi {
5
+ programmaticJson;
6
+ constructor(programmaticJson) {
7
+ super();
8
+ this.programmaticJson = programmaticJson;
9
+ }
10
+ async transactionConstruction() {
11
+ return {
12
+ ledger_state: {
13
+ network: 'stokenet',
14
+ state_version: 1,
15
+ proposer_round_timestamp: '0',
16
+ epoch: 1,
17
+ round: 1,
18
+ },
19
+ };
20
+ }
21
+ async transactionPreview() {
22
+ return {
23
+ encoded_receipt: '0x',
24
+ receipt: {
25
+ output: [{ programmatic_json: this.programmaticJson }],
26
+ },
27
+ resource_changes: [],
28
+ logs: [],
29
+ };
30
+ }
31
+ }
32
+ function getGateway(programmaticJson) {
33
+ return {
34
+ transaction: new Transaction(new TestTransactionApi(programmaticJson)),
35
+ };
36
+ }
37
+ describe(isMessageDelivered.name, function () {
38
+ it('parses strict boolean output', async function () {
39
+ const delivered = await isMessageDelivered(getGateway({ value: true }), 'component_rdx1test', '0x1234');
40
+ expect(delivered).to.equal(true);
41
+ });
42
+ it('parses numeric and string boolean output', async function () {
43
+ const numericDelivered = await isMessageDelivered(getGateway({ value: 1 }), 'component_rdx1test', '0x1234');
44
+ const stringDelivered = await isMessageDelivered(getGateway({ value: 'false' }), 'component_rdx1test', '0x1234');
45
+ expect(numericDelivered).to.equal(true);
46
+ expect(stringDelivered).to.equal(false);
47
+ });
48
+ it('parses bigint boolean output', async function () {
49
+ const bigintDelivered = await isMessageDelivered(getGateway({ value: 1n }), 'component_rdx1test', '0x1234');
50
+ const bigintUndelivered = await isMessageDelivered(getGateway({ value: 0n }), 'component_rdx1test', '0x1234');
51
+ expect(bigintDelivered).to.equal(true);
52
+ expect(bigintUndelivered).to.equal(false);
53
+ });
54
+ it('throws on malformed boolean output', async function () {
55
+ let error;
56
+ try {
57
+ await isMessageDelivered(getGateway({ value: 'nope' }), 'component_rdx1test', '0x1234');
58
+ }
59
+ catch (caughtError) {
60
+ error = caughtError;
61
+ }
62
+ expect(String(error)).to.match(/Unexpected delivered\(\) output shape/i);
63
+ });
64
+ });
65
+ //# sourceMappingURL=mailbox-query.test.js.map