@hyperlane-xyz/radix-sdk 27.0.0 → 28.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 (48) hide show
  1. package/dist/clients/protocol.d.ts +9 -0
  2. package/dist/clients/protocol.d.ts.map +1 -1
  3. package/dist/clients/protocol.js +35 -52
  4. package/dist/clients/protocol.js.map +1 -1
  5. package/dist/clients/provider.d.ts.map +1 -1
  6. package/dist/clients/provider.js +8 -2
  7. package/dist/clients/provider.js.map +1 -1
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/mailbox/mailbox-artifact-manager.d.ts +15 -0
  13. package/dist/mailbox/mailbox-artifact-manager.d.ts.map +1 -0
  14. package/dist/mailbox/mailbox-artifact-manager.js +23 -0
  15. package/dist/mailbox/mailbox-artifact-manager.js.map +1 -0
  16. package/dist/mailbox/mailbox-query.d.ts +3 -3
  17. package/dist/mailbox/mailbox-query.d.ts.map +1 -1
  18. package/dist/mailbox/mailbox-query.js +4 -4
  19. package/dist/mailbox/mailbox-query.js.map +1 -1
  20. package/dist/mailbox/mailbox.d.ts +24 -0
  21. package/dist/mailbox/mailbox.d.ts.map +1 -0
  22. package/dist/mailbox/mailbox.js +171 -0
  23. package/dist/mailbox/mailbox.js.map +1 -0
  24. package/dist/tests/mailbox.e2e-test.d.ts +2 -0
  25. package/dist/tests/mailbox.e2e-test.d.ts.map +1 -0
  26. package/dist/tests/mailbox.e2e-test.js +254 -0
  27. package/dist/tests/mailbox.e2e-test.js.map +1 -0
  28. package/dist/tests/validator-announce.e2e-test.d.ts +2 -0
  29. package/dist/tests/validator-announce.e2e-test.d.ts.map +1 -0
  30. package/dist/tests/validator-announce.e2e-test.js +116 -0
  31. package/dist/tests/validator-announce.e2e-test.js.map +1 -0
  32. package/dist/utils/base-query.d.ts +12 -0
  33. package/dist/utils/base-query.d.ts.map +1 -1
  34. package/dist/utils/base-query.js +14 -0
  35. package/dist/utils/base-query.js.map +1 -1
  36. package/dist/validator-announce/validator-announce-artifact-manager.d.ts +14 -0
  37. package/dist/validator-announce/validator-announce-artifact-manager.d.ts.map +1 -0
  38. package/dist/validator-announce/validator-announce-artifact-manager.js +21 -0
  39. package/dist/validator-announce/validator-announce-artifact-manager.js.map +1 -0
  40. package/dist/validator-announce/validator-announce-query.d.ts +6 -0
  41. package/dist/validator-announce/validator-announce-query.d.ts.map +1 -0
  42. package/dist/validator-announce/validator-announce-query.js +10 -0
  43. package/dist/validator-announce/validator-announce-query.js.map +1 -0
  44. package/dist/validator-announce/validator-announce.d.ts +23 -0
  45. package/dist/validator-announce/validator-announce.d.ts.map +1 -0
  46. package/dist/validator-announce/validator-announce.js +52 -0
  47. package/dist/validator-announce/validator-announce.js.map +1 -0
  48. package/package.json +7 -7
@@ -0,0 +1,171 @@
1
+ import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
2
+ import { ZERO_ADDRESS_HEX_32, eqAddressRadix, eqOptionalAddress, isEmptyAddress, } from '@hyperlane-xyz/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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mailbox.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,254 @@
1
+ import { expect } from 'chai';
2
+ import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
3
+ import { ZERO_ADDRESS_HEX_32, assert } from '@hyperlane-xyz/utils';
4
+ import { RadixSigner } from '../clients/signer.js';
5
+ import { RadixMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
6
+ import { DEFAULT_E2E_TEST_TIMEOUT, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from '../testing/constants.js';
7
+ import { DEPLOYED_TEST_CHAIN_METADATA } from './e2e-test.setup.js';
8
+ describe('Radix Mailbox (e2e)', function () {
9
+ this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
10
+ let radixSigner;
11
+ let artifactManager;
12
+ // Test domain ID for mailbox
13
+ const TEST_DOMAIN_ID = 999999;
14
+ // We'll create test ISM and Hook addresses (can be burn address for testing)
15
+ const TEST_ISM_ADDRESS = TEST_RADIX_BURN_ADDRESS;
16
+ const TEST_HOOK_ADDRESS = TEST_RADIX_BURN_ADDRESS;
17
+ before(async () => {
18
+ const rpcUrls = DEPLOYED_TEST_CHAIN_METADATA.rpcUrls?.map((url) => url.http) ?? [];
19
+ assert(rpcUrls.length > 0, 'Expected at least 1 rpc url for the tests');
20
+ radixSigner = (await RadixSigner.connectWithSigner(rpcUrls, TEST_RADIX_PRIVATE_KEY, {
21
+ metadata: {
22
+ chainId: DEPLOYED_TEST_CHAIN_METADATA.chainId,
23
+ gatewayUrls: DEPLOYED_TEST_CHAIN_METADATA.gatewayUrls,
24
+ packageAddress: DEPLOYED_TEST_CHAIN_METADATA.packageAddress,
25
+ },
26
+ }));
27
+ const gateway = radixSigner.gateway;
28
+ const base = radixSigner.base;
29
+ artifactManager = new RadixMailboxArtifactManager(gateway, base, TEST_DOMAIN_ID);
30
+ });
31
+ describe('Mailbox Artifact Operations', () => {
32
+ it('should create a mailbox with ISM and hooks', async () => {
33
+ const config = {
34
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
35
+ defaultIsm: {
36
+ artifactState: ArtifactState.UNDERIVED,
37
+ deployed: { address: TEST_ISM_ADDRESS },
38
+ },
39
+ defaultHook: {
40
+ artifactState: ArtifactState.UNDERIVED,
41
+ deployed: { address: TEST_HOOK_ADDRESS },
42
+ },
43
+ requiredHook: {
44
+ artifactState: ArtifactState.UNDERIVED,
45
+ deployed: { address: TEST_HOOK_ADDRESS },
46
+ },
47
+ };
48
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
49
+ const [result, receipts] = await writer.create({ config });
50
+ expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
51
+ expect(result.config.owner).to.equal(TEST_RADIX_DEPLOYER_ADDRESS);
52
+ expect(result.deployed.address).to.be.a('string').and.not.be.empty;
53
+ expect(result.deployed.domainId).to.equal(TEST_DOMAIN_ID);
54
+ expect(receipts).to.be.an('array').with.length.greaterThan(0);
55
+ // Verify all setters were called (create + 3 setters + optional owner transfer)
56
+ // Should be at least 4 receipts (create + setIsm + setDefaultHook + setRequiredHook)
57
+ expect(receipts.length).to.be.greaterThanOrEqual(4);
58
+ });
59
+ it('should skip optional mailbox setters when zero addresses are provided', async () => {
60
+ const zeroAddressConfig = {
61
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
62
+ defaultIsm: {
63
+ artifactState: ArtifactState.UNDERIVED,
64
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
65
+ },
66
+ defaultHook: {
67
+ artifactState: ArtifactState.UNDERIVED,
68
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
69
+ },
70
+ requiredHook: {
71
+ artifactState: ArtifactState.UNDERIVED,
72
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
73
+ },
74
+ };
75
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
76
+ const [deployedMailbox, receipts] = await writer.create({
77
+ config: zeroAddressConfig,
78
+ });
79
+ expect(receipts).to.be.an('array').with.length(1);
80
+ const reader = artifactManager.createReader('mailbox');
81
+ const readMailbox = await reader.read(deployedMailbox.deployed.address);
82
+ expect(readMailbox.config.defaultIsm.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
83
+ expect(readMailbox.config.defaultHook.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
84
+ expect(readMailbox.config.requiredHook.deployed.address).to.equal(ZERO_ADDRESS_HEX_32);
85
+ });
86
+ it('should read a mailbox configuration from chain', async () => {
87
+ const config = {
88
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
89
+ defaultIsm: {
90
+ artifactState: ArtifactState.UNDERIVED,
91
+ deployed: { address: TEST_ISM_ADDRESS },
92
+ },
93
+ defaultHook: {
94
+ artifactState: ArtifactState.UNDERIVED,
95
+ deployed: { address: TEST_HOOK_ADDRESS },
96
+ },
97
+ requiredHook: {
98
+ artifactState: ArtifactState.UNDERIVED,
99
+ deployed: { address: TEST_HOOK_ADDRESS },
100
+ },
101
+ };
102
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
103
+ const [deployedMailbox] = await writer.create({ config });
104
+ const reader = artifactManager.createReader('mailbox');
105
+ const readMailbox = await reader.read(deployedMailbox.deployed.address);
106
+ expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
107
+ expect(readMailbox.config.owner).to.equal(TEST_RADIX_DEPLOYER_ADDRESS);
108
+ expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
109
+ expect(readMailbox.deployed.domainId).to.equal(TEST_DOMAIN_ID);
110
+ // Verify ISM and hooks are set correctly
111
+ expect(readMailbox.config.defaultIsm.deployed.address).to.equal(TEST_ISM_ADDRESS);
112
+ expect(readMailbox.config.defaultHook.deployed.address).to.equal(TEST_HOOK_ADDRESS);
113
+ expect(readMailbox.config.requiredHook.deployed.address).to.equal(TEST_HOOK_ADDRESS);
114
+ });
115
+ it('should update mailbox when ISM changes', async () => {
116
+ // Create initial mailbox
117
+ const initialConfig = {
118
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
119
+ defaultIsm: {
120
+ artifactState: ArtifactState.UNDERIVED,
121
+ deployed: { address: TEST_ISM_ADDRESS },
122
+ },
123
+ defaultHook: {
124
+ artifactState: ArtifactState.UNDERIVED,
125
+ deployed: { address: TEST_HOOK_ADDRESS },
126
+ },
127
+ requiredHook: {
128
+ artifactState: ArtifactState.UNDERIVED,
129
+ deployed: { address: TEST_HOOK_ADDRESS },
130
+ },
131
+ };
132
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
133
+ const [deployedMailbox] = await writer.create({ config: initialConfig });
134
+ // Update with new ISM address (use deployer address as different address)
135
+ const newIsmAddress = TEST_RADIX_DEPLOYER_ADDRESS;
136
+ const updatedConfig = {
137
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
138
+ defaultIsm: {
139
+ artifactState: ArtifactState.UNDERIVED,
140
+ deployed: { address: newIsmAddress },
141
+ },
142
+ defaultHook: {
143
+ artifactState: ArtifactState.UNDERIVED,
144
+ deployed: { address: TEST_HOOK_ADDRESS },
145
+ },
146
+ requiredHook: {
147
+ artifactState: ArtifactState.UNDERIVED,
148
+ deployed: { address: TEST_HOOK_ADDRESS },
149
+ },
150
+ };
151
+ const updateTxs = await writer.update({
152
+ artifactState: ArtifactState.DEPLOYED,
153
+ config: updatedConfig,
154
+ deployed: deployedMailbox.deployed,
155
+ });
156
+ // Should have 1 transaction to update the ISM
157
+ expect(updateTxs).to.be.an('array').with.length(1);
158
+ expect(updateTxs[0].annotation).to.include('default ISM');
159
+ });
160
+ it('should update mailbox when owner changes', async () => {
161
+ // Create initial mailbox
162
+ const initialConfig = {
163
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
164
+ defaultIsm: {
165
+ artifactState: ArtifactState.UNDERIVED,
166
+ deployed: { address: TEST_ISM_ADDRESS },
167
+ },
168
+ defaultHook: {
169
+ artifactState: ArtifactState.UNDERIVED,
170
+ deployed: { address: TEST_HOOK_ADDRESS },
171
+ },
172
+ requiredHook: {
173
+ artifactState: ArtifactState.UNDERIVED,
174
+ deployed: { address: TEST_HOOK_ADDRESS },
175
+ },
176
+ };
177
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
178
+ const [deployedMailbox] = await writer.create({ config: initialConfig });
179
+ // Update with new owner
180
+ const newOwner = TEST_RADIX_BURN_ADDRESS;
181
+ const updatedConfig = {
182
+ owner: newOwner,
183
+ defaultIsm: {
184
+ artifactState: ArtifactState.UNDERIVED,
185
+ deployed: { address: TEST_ISM_ADDRESS },
186
+ },
187
+ defaultHook: {
188
+ artifactState: ArtifactState.UNDERIVED,
189
+ deployed: { address: TEST_HOOK_ADDRESS },
190
+ },
191
+ requiredHook: {
192
+ artifactState: ArtifactState.UNDERIVED,
193
+ deployed: { address: TEST_HOOK_ADDRESS },
194
+ },
195
+ };
196
+ const updateTxs = await writer.update({
197
+ artifactState: ArtifactState.DEPLOYED,
198
+ config: updatedConfig,
199
+ deployed: deployedMailbox.deployed,
200
+ });
201
+ // Should have 1 transaction to transfer ownership
202
+ expect(updateTxs).to.be.an('array').with.length(1);
203
+ expect(updateTxs[0].annotation).to.include('ownership');
204
+ });
205
+ it('should return no transactions when mailbox state matches desired state', async () => {
206
+ // Create mailbox
207
+ const config = {
208
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
209
+ defaultIsm: {
210
+ artifactState: ArtifactState.UNDERIVED,
211
+ deployed: { address: TEST_ISM_ADDRESS },
212
+ },
213
+ defaultHook: {
214
+ artifactState: ArtifactState.UNDERIVED,
215
+ deployed: { address: TEST_HOOK_ADDRESS },
216
+ },
217
+ requiredHook: {
218
+ artifactState: ArtifactState.UNDERIVED,
219
+ deployed: { address: TEST_HOOK_ADDRESS },
220
+ },
221
+ };
222
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
223
+ const [deployedMailbox] = await writer.create({ config });
224
+ // Update with same config
225
+ const updateTxs = await writer.update(deployedMailbox);
226
+ // Should have no update transactions since nothing changed
227
+ expect(updateTxs).to.be.an('array').with.length(0);
228
+ });
229
+ it('should use readMailbox convenience method', async () => {
230
+ const config = {
231
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
232
+ defaultIsm: {
233
+ artifactState: ArtifactState.UNDERIVED,
234
+ deployed: { address: TEST_ISM_ADDRESS },
235
+ },
236
+ defaultHook: {
237
+ artifactState: ArtifactState.UNDERIVED,
238
+ deployed: { address: TEST_HOOK_ADDRESS },
239
+ },
240
+ requiredHook: {
241
+ artifactState: ArtifactState.UNDERIVED,
242
+ deployed: { address: TEST_HOOK_ADDRESS },
243
+ },
244
+ };
245
+ const writer = artifactManager.createWriter('mailbox', radixSigner);
246
+ const [deployedMailbox] = await writer.create({ config });
247
+ // Use the convenience method
248
+ const readMailbox = await artifactManager.readMailbox(deployedMailbox.deployed.address);
249
+ expect(readMailbox.artifactState).to.equal(ArtifactState.DEPLOYED);
250
+ expect(readMailbox.deployed.address).to.equal(deployedMailbox.deployed.address);
251
+ });
252
+ });
253
+ });
254
+ //# sourceMappingURL=mailbox.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.e2e-test.js","sourceRoot":"","sources":["../../src/tests/mailbox.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validator-announce.e2e-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce.e2e-test.d.ts","sourceRoot":"","sources":["../../src/tests/validator-announce.e2e-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ import { expect } from 'chai';
2
+ import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
3
+ import { assert } from '@hyperlane-xyz/utils';
4
+ import { RadixSigner } from '../clients/signer.js';
5
+ import { RadixMailboxArtifactManager } from '../mailbox/mailbox-artifact-manager.js';
6
+ import { DEFAULT_E2E_TEST_TIMEOUT, TEST_RADIX_BURN_ADDRESS, TEST_RADIX_DEPLOYER_ADDRESS, TEST_RADIX_PRIVATE_KEY, } from '../testing/constants.js';
7
+ import { RadixValidatorAnnounceArtifactManager } from '../validator-announce/validator-announce-artifact-manager.js';
8
+ import { DEPLOYED_TEST_CHAIN_METADATA } from './e2e-test.setup.js';
9
+ describe('Radix ValidatorAnnounce (e2e)', function () {
10
+ this.timeout(DEFAULT_E2E_TEST_TIMEOUT);
11
+ let radixSigner;
12
+ let artifactManager;
13
+ let mailboxArtifactManager;
14
+ // Will be set after creating a test mailbox
15
+ let testMailboxAddress;
16
+ const TEST_DOMAIN_ID = 999998;
17
+ before(async () => {
18
+ const rpcUrls = DEPLOYED_TEST_CHAIN_METADATA.rpcUrls?.map((url) => url.http) ?? [];
19
+ assert(rpcUrls.length > 0, 'Expected at least 1 rpc url for the tests');
20
+ radixSigner = (await RadixSigner.connectWithSigner(rpcUrls, TEST_RADIX_PRIVATE_KEY, {
21
+ metadata: {
22
+ chainId: DEPLOYED_TEST_CHAIN_METADATA.chainId,
23
+ gatewayUrls: DEPLOYED_TEST_CHAIN_METADATA.gatewayUrls,
24
+ packageAddress: DEPLOYED_TEST_CHAIN_METADATA.packageAddress,
25
+ },
26
+ }));
27
+ const gateway = radixSigner.gateway;
28
+ const base = radixSigner.base;
29
+ artifactManager = new RadixValidatorAnnounceArtifactManager(gateway, base);
30
+ mailboxArtifactManager = new RadixMailboxArtifactManager(gateway, base, TEST_DOMAIN_ID);
31
+ // Create a test mailbox for validator announce to reference
32
+ const mailboxConfig = {
33
+ owner: TEST_RADIX_DEPLOYER_ADDRESS,
34
+ defaultIsm: {
35
+ artifactState: ArtifactState.UNDERIVED,
36
+ deployed: { address: TEST_RADIX_BURN_ADDRESS },
37
+ },
38
+ defaultHook: {
39
+ artifactState: ArtifactState.UNDERIVED,
40
+ deployed: { address: TEST_RADIX_BURN_ADDRESS },
41
+ },
42
+ requiredHook: {
43
+ artifactState: ArtifactState.UNDERIVED,
44
+ deployed: { address: TEST_RADIX_BURN_ADDRESS },
45
+ },
46
+ };
47
+ const mailboxWriter = mailboxArtifactManager.createWriter('mailbox', radixSigner);
48
+ const [deployedMailbox] = await mailboxWriter.create({
49
+ config: mailboxConfig,
50
+ });
51
+ testMailboxAddress = deployedMailbox.deployed.address;
52
+ });
53
+ describe('ValidatorAnnounce Artifact Operations', () => {
54
+ it('should create a validator announce contract', async () => {
55
+ const config = {
56
+ mailboxAddress: testMailboxAddress,
57
+ };
58
+ const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
59
+ const [result, receipts] = await writer.create({ config });
60
+ expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
61
+ expect(result.config.mailboxAddress).to.equal(testMailboxAddress);
62
+ expect(result.deployed.address).to.be.a('string').and.not.be.empty;
63
+ expect(receipts).to.be.an('array').with.length(1);
64
+ });
65
+ it('should read a validator announce configuration from chain', async () => {
66
+ const config = {
67
+ mailboxAddress: testMailboxAddress,
68
+ };
69
+ const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
70
+ const [deployedValidatorAnnounce] = await writer.create({ config });
71
+ const reader = artifactManager.createReader('validatorAnnounce');
72
+ const readValidatorAnnounce = await reader.read(deployedValidatorAnnounce.deployed.address);
73
+ expect(readValidatorAnnounce.artifactState).to.equal(ArtifactState.DEPLOYED);
74
+ expect(readValidatorAnnounce.config.mailboxAddress).to.equal(testMailboxAddress);
75
+ expect(readValidatorAnnounce.deployed.address).to.equal(deployedValidatorAnnounce.deployed.address);
76
+ });
77
+ it('should return no transactions when calling update (immutable)', async () => {
78
+ const config = {
79
+ mailboxAddress: testMailboxAddress,
80
+ };
81
+ const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
82
+ const [deployedValidatorAnnounce] = await writer.create({ config });
83
+ // ValidatorAnnounce is immutable - update should return empty array
84
+ const txs = await writer.update(deployedValidatorAnnounce);
85
+ expect(txs).to.be.an('array').with.length(0);
86
+ });
87
+ it('should use readValidatorAnnounce convenience method', async () => {
88
+ const config = {
89
+ mailboxAddress: testMailboxAddress,
90
+ };
91
+ const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
92
+ const [deployedValidatorAnnounce] = await writer.create({ config });
93
+ // Use the convenience method
94
+ const readValidatorAnnounce = await artifactManager.readValidatorAnnounce(deployedValidatorAnnounce.deployed.address);
95
+ expect(readValidatorAnnounce.artifactState).to.equal(ArtifactState.DEPLOYED);
96
+ expect(readValidatorAnnounce.config.mailboxAddress).to.equal(testMailboxAddress);
97
+ expect(readValidatorAnnounce.deployed.address).to.equal(deployedValidatorAnnounce.deployed.address);
98
+ });
99
+ it('should create validator announce with same mailbox address', async () => {
100
+ const config1 = {
101
+ mailboxAddress: testMailboxAddress,
102
+ };
103
+ const config2 = {
104
+ mailboxAddress: testMailboxAddress,
105
+ };
106
+ const writer = artifactManager.createWriter('validatorAnnounce', radixSigner);
107
+ const [result1] = await writer.create({ config: config1 });
108
+ const [result2] = await writer.create({ config: config2 });
109
+ // Different validator announce instances should have different addresses
110
+ expect(result1.deployed.address).to.not.equal(result2.deployed.address);
111
+ // But both should have the same mailbox address
112
+ expect(result1.config.mailboxAddress).to.equal(result2.config.mailboxAddress);
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=validator-announce.e2e-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator-announce.e2e-test.js","sourceRoot":"","sources":["../../src/tests/validator-announce.e2e-test.ts"],"names":[],"mappings":"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"}
@@ -137,6 +137,18 @@ export declare function tryGetFieldHexValueFromEntityState<T>(fieldName: string,
137
137
  */
138
138
  export declare function getFieldHexValueFromEntityState(fieldName: string, entityAddress: string, entityState: EntityDetails['state']): string;
139
139
  export declare function getFieldHexValueFromEntityState<T>(fieldName: string, entityAddress: string, entityState: EntityDetails['state'], formatter: (value: string) => T): T;
140
+ /**
141
+ * Extracts an optional field value from a Radix component's entity state.
142
+ *
143
+ * Similar to getFieldValueFromEntityState, but returns undefined instead of throwing
144
+ * if the field is not found or if it's an Option::None variant.
145
+ *
146
+ * @param fieldName - The name of the field to extract
147
+ * @param entityState - The component state containing the fields
148
+ * @returns The field value as a string, or undefined if not found/None
149
+ */
150
+ export declare function getOptionalFieldValueFromEntityState(fieldName: string, entityState: EntityDetails['state']): string | undefined;
151
+ export declare function getOptionalFieldValueFromEntityState<T>(fieldName: string, entityState: EntityDetails['state'], formatter: (value: string) => T): T | undefined;
140
152
  /**
141
153
  * Extracts field elements (array values) from a Radix component's entity state.
142
154
  *
@@ -1 +1 @@
1
- {"version":3,"file":"base-query.d.ts","sourceRoot":"","sources":["../../src/utils/base-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-query.d.ts","sourceRoot":"","sources":["../../src/utils/base-query.ts"],"names":[],"mappings":"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"}