@hyperlane-xyz/deploy-sdk 3.1.0 → 4.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 (36) hide show
  1. package/dist/core/core-artifact-reader.d.ts +19 -1
  2. package/dist/core/core-artifact-reader.d.ts.map +1 -1
  3. package/dist/core/core-artifact-reader.js +23 -3
  4. package/dist/core/core-artifact-reader.js.map +1 -1
  5. package/dist/core/core-artifact-reader.test.d.ts +2 -0
  6. package/dist/core/core-artifact-reader.test.d.ts.map +1 -0
  7. package/dist/core/core-artifact-reader.test.js +300 -0
  8. package/dist/core/core-artifact-reader.test.js.map +1 -0
  9. package/dist/core/core-writer.d.ts +42 -0
  10. package/dist/core/core-writer.d.ts.map +1 -0
  11. package/dist/core/core-writer.js +230 -0
  12. package/dist/core/core-writer.js.map +1 -0
  13. package/dist/core/core-writer.test.d.ts +2 -0
  14. package/dist/core/core-writer.test.d.ts.map +1 -0
  15. package/dist/core/core-writer.test.js +980 -0
  16. package/dist/core/core-writer.test.js.map +1 -0
  17. package/dist/hook/hook-writer.d.ts.map +1 -1
  18. package/dist/hook/hook-writer.js +2 -1
  19. package/dist/hook/hook-writer.js.map +1 -1
  20. package/dist/index.d.ts +7 -9
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +7 -9
  23. package/dist/index.js.map +1 -1
  24. package/package.json +10 -10
  25. package/dist/AltVMCoreModule.d.ts +0 -94
  26. package/dist/AltVMCoreModule.d.ts.map +0 -1
  27. package/dist/AltVMCoreModule.js +0 -368
  28. package/dist/AltVMCoreModule.js.map +0 -1
  29. package/dist/AltVMCoreReader.d.ts +0 -16
  30. package/dist/AltVMCoreReader.d.ts.map +0 -1
  31. package/dist/AltVMCoreReader.js +0 -36
  32. package/dist/AltVMCoreReader.js.map +0 -1
  33. package/dist/core-module.d.ts +0 -5
  34. package/dist/core-module.d.ts.map +0 -1
  35. package/dist/core-module.js +0 -28
  36. package/dist/core-module.js.map +0 -1
@@ -4,6 +4,23 @@ import { ChainLookup } from '@hyperlane-xyz/provider-sdk/chain';
4
4
  import { DerivedCoreConfig } from '@hyperlane-xyz/provider-sdk/core';
5
5
  import { DeployedMailboxAddress, DeployedMailboxArtifact, IRawMailboxArtifactManager, MailboxOnChain } from '@hyperlane-xyz/provider-sdk/mailbox';
6
6
  import { Logger } from '@hyperlane-xyz/utils';
7
+ import { HookReader } from '../hook/hook-reader.js';
8
+ import { IsmReader } from '../ism/generic-ism.js';
9
+ /**
10
+ * Factory function to create a CoreArtifactReader instance.
11
+ * Follows pattern of createHookReader() and createIsmReader().
12
+ *
13
+ * @param chainMetadata Chain metadata for target chain
14
+ * @param chainLookup Chain lookup for domain resolution
15
+ * @returns CoreArtifactReader instance
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const reader = createCoreReader(chainMetadata, chainLookup);
20
+ * const coreConfig = await reader.deriveCoreConfig(mailboxAddress);
21
+ * ```
22
+ */
23
+ export declare function createCoreReader(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup): CoreArtifactReader;
7
24
  /**
8
25
  * Core Artifact Reader - composite artifact reader that orchestrates mailbox, ISM, and hook readers.
9
26
  *
@@ -23,7 +40,8 @@ export declare class CoreArtifactReader implements ArtifactReader<MailboxOnChain
23
40
  protected readonly chainMetadata: ChainMetadataForAltVM;
24
41
  protected readonly chainLookup: ChainLookup;
25
42
  protected readonly logger: Logger;
26
- private readonly ismReader;
43
+ protected readonly ismReader: IsmReader;
44
+ protected readonly hookReaderFactory: (mailbox: string) => HookReader;
27
45
  constructor(mailboxArtifactManager: IRawMailboxArtifactManager, chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup);
28
46
  /**
29
47
  * Read mailbox configuration and expand all nested ISM/hook configs.
@@ -1 +1 @@
1
- {"version":3,"file":"core-artifact-reader.d.ts","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EACL,cAAc,EAEf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EAEf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,MAAM,EAA8B,MAAM,sBAAsB,CAAC;AAM1E;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,YAAW,cAAc,CACvD,cAAc,EACd,sBAAsB,CACvB;IAOG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,0BAA0B;IACrE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAR7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGjB,sBAAsB,EAAE,0BAA0B,EAClD,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW;IAK7C;;;;;;;;OAQG;IACG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA0CpE;;;;;;;;OAQG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQ3E"}
1
+ {"version":3,"file":"core-artifact-reader.d.ts","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EAEf,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,cAAc,EAEf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,MAAM,EAA8B,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAoB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AAGnE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,GACvB,kBAAkB,CAUpB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAmB,YAAW,cAAc,CACvD,cAAc,EACd,sBAAsB,CACvB;IAQG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,0BAA0B;IACrE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAT7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;IACH,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC;gBAGjD,sBAAsB,EAAE,0BAA0B,EAClD,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW;IAO7C;;;;;;;;OAQG;IACG,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAwCpE;;;;;;;;OAQG;IACG,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAQ3E"}
@@ -1,3 +1,4 @@
1
+ import { getProtocolProvider, } from '@hyperlane-xyz/provider-sdk';
1
2
  import { ArtifactState, } from '@hyperlane-xyz/provider-sdk/artifact';
2
3
  import { hookArtifactToDerivedConfig } from '@hyperlane-xyz/provider-sdk/hook';
3
4
  import { mailboxArtifactToDerivedCoreConfig, } from '@hyperlane-xyz/provider-sdk/mailbox';
@@ -5,6 +6,25 @@ import { isEmptyAddress, rootLogger } from '@hyperlane-xyz/utils';
5
6
  import { createHookReader } from '../hook/hook-reader.js';
6
7
  import { createIsmReader } from '../ism/generic-ism.js';
7
8
  import { ismArtifactToDerivedConfig } from '@hyperlane-xyz/provider-sdk/ism';
9
+ /**
10
+ * Factory function to create a CoreArtifactReader instance.
11
+ * Follows pattern of createHookReader() and createIsmReader().
12
+ *
13
+ * @param chainMetadata Chain metadata for target chain
14
+ * @param chainLookup Chain lookup for domain resolution
15
+ * @returns CoreArtifactReader instance
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const reader = createCoreReader(chainMetadata, chainLookup);
20
+ * const coreConfig = await reader.deriveCoreConfig(mailboxAddress);
21
+ * ```
22
+ */
23
+ export function createCoreReader(chainMetadata, chainLookup) {
24
+ const protocolProvider = getProtocolProvider(chainMetadata.protocol);
25
+ const mailboxArtifactManager = protocolProvider.createMailboxArtifactManager(chainMetadata);
26
+ return new CoreArtifactReader(mailboxArtifactManager, chainMetadata, chainLookup);
27
+ }
8
28
  /**
9
29
  * Core Artifact Reader - composite artifact reader that orchestrates mailbox, ISM, and hook readers.
10
30
  *
@@ -27,11 +47,13 @@ export class CoreArtifactReader {
27
47
  module: CoreArtifactReader.name,
28
48
  });
29
49
  ismReader;
50
+ hookReaderFactory;
30
51
  constructor(mailboxArtifactManager, chainMetadata, chainLookup) {
31
52
  this.mailboxArtifactManager = mailboxArtifactManager;
32
53
  this.chainMetadata = chainMetadata;
33
54
  this.chainLookup = chainLookup;
34
55
  this.ismReader = createIsmReader(this.chainMetadata, this.chainLookup);
56
+ this.hookReaderFactory = (mailbox) => createHookReader(this.chainMetadata, this.chainLookup, { mailbox });
35
57
  }
36
58
  /**
37
59
  * Read mailbox configuration and expand all nested ISM/hook configs.
@@ -48,9 +70,7 @@ export class CoreArtifactReader {
48
70
  // 2. Expand nested ISM and hooks using specialized readers
49
71
  // Hook reader is created per-read with mailbox context (needed for SVM hook detection)
50
72
  // Skip reading when address is empty (undefined, null, empty string, or zeroish)
51
- const hookReader = createHookReader(this.chainMetadata, this.chainLookup, {
52
- mailbox: mailboxAddress,
53
- });
73
+ const hookReader = this.hookReaderFactory(mailboxAddress);
54
74
  const defaultIsmAddr = rawMailbox.config.defaultIsm.deployed.address;
55
75
  const defaultHookAddr = rawMailbox.config.defaultHook.deployed.address;
56
76
  const requiredHookAddr = rawMailbox.config.requiredHook.deployed.address;
@@ -1 +1 @@
1
- {"version":3,"file":"core-artifact-reader.js","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-artifact-reader.js","sourceRoot":"","sources":["../../src/core/core-artifact-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=core-artifact-reader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-artifact-reader.test.d.ts","sourceRoot":"","sources":["../../src/core/core-artifact-reader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,300 @@
1
+ import { expect } from 'chai';
2
+ import sinon from 'sinon';
3
+ import { hasProtocol, registerProtocol, } from '@hyperlane-xyz/provider-sdk';
4
+ import { ArtifactState } from '@hyperlane-xyz/provider-sdk/artifact';
5
+ import { ZERO_ADDRESS_HEX_32 } from '@hyperlane-xyz/utils';
6
+ import { CoreArtifactReader } from './core-artifact-reader.js';
7
+ // Test protocol
8
+ const TestProtocol = 'test-core-reader';
9
+ const mockProtocolProvider = {
10
+ createProvider: sinon.stub(),
11
+ createSigner: sinon.stub(),
12
+ createSubmitter: sinon.stub(),
13
+ createIsmArtifactManager: sinon.stub(),
14
+ createHookArtifactManager: sinon.stub(),
15
+ createMailboxArtifactManager: sinon.stub(),
16
+ createValidatorAnnounceArtifactManager: sinon.stub(),
17
+ getMinGas: sinon.stub(),
18
+ createWarpArtifactManager: sinon.stub(),
19
+ };
20
+ if (!hasProtocol(TestProtocol)) {
21
+ registerProtocol(TestProtocol, () => mockProtocolProvider);
22
+ }
23
+ describe('CoreArtifactReader', () => {
24
+ const mockMailboxAddress = '0xMAILBOX';
25
+ const mockIsmAddress = '0xISM';
26
+ const mockDefaultHookAddress = '0xDEFAULTHOOK';
27
+ const mockRequiredHookAddress = '0xREQUIREDHOOK';
28
+ const mockOwner = '0xOWNER';
29
+ const mockDomainId = 1;
30
+ const chainName = 'test-chain';
31
+ let readMailboxStub;
32
+ let mailboxArtifactManager;
33
+ let chainLookup;
34
+ let chainMetadata;
35
+ let coreReader;
36
+ const mockRawMailbox = {
37
+ artifactState: ArtifactState.DEPLOYED,
38
+ config: {
39
+ owner: mockOwner,
40
+ defaultIsm: {
41
+ artifactState: ArtifactState.UNDERIVED,
42
+ deployed: { address: mockIsmAddress },
43
+ },
44
+ defaultHook: {
45
+ artifactState: ArtifactState.UNDERIVED,
46
+ deployed: { address: mockDefaultHookAddress },
47
+ },
48
+ requiredHook: {
49
+ artifactState: ArtifactState.UNDERIVED,
50
+ deployed: { address: mockRequiredHookAddress },
51
+ },
52
+ },
53
+ deployed: { address: mockMailboxAddress, domainId: mockDomainId },
54
+ };
55
+ const mockExpandedIsm = {
56
+ artifactState: ArtifactState.DEPLOYED,
57
+ config: {
58
+ type: 'merkleRootMultisigIsm',
59
+ validators: ['0xVALIDATOR1'],
60
+ threshold: 1,
61
+ },
62
+ deployed: { address: mockIsmAddress },
63
+ };
64
+ const mockExpandedDefaultHook = {
65
+ artifactState: ArtifactState.DEPLOYED,
66
+ config: {
67
+ type: 'merkleTreeHook',
68
+ },
69
+ deployed: { address: mockDefaultHookAddress },
70
+ };
71
+ const mockExpandedRequiredHook = {
72
+ artifactState: ArtifactState.DEPLOYED,
73
+ config: {
74
+ type: 'interchainGasPaymaster',
75
+ owner: mockOwner,
76
+ beneficiary: '0xBENEFICIARY',
77
+ oracleKey: '0xORACLE',
78
+ overhead: {},
79
+ oracleConfig: {},
80
+ },
81
+ deployed: { address: mockRequiredHookAddress },
82
+ };
83
+ let mockIsmReader;
84
+ let mockHookReader;
85
+ beforeEach(() => {
86
+ readMailboxStub = sinon
87
+ .stub()
88
+ .resolves(mockRawMailbox);
89
+ mailboxArtifactManager = {
90
+ readMailbox: readMailboxStub,
91
+ createReader: sinon.stub(),
92
+ createWriter: sinon.stub(),
93
+ };
94
+ chainMetadata = {
95
+ name: chainName,
96
+ domainId: mockDomainId,
97
+ protocol: TestProtocol,
98
+ chainId: mockDomainId,
99
+ };
100
+ chainLookup = {
101
+ getChainMetadata: sinon
102
+ .stub()
103
+ .returns(chainMetadata),
104
+ getChainName: sinon.stub().returns(chainName),
105
+ getDomainId: sinon
106
+ .stub()
107
+ .returns(mockDomainId),
108
+ getKnownChainNames: sinon.stub().returns([chainName]),
109
+ };
110
+ mockIsmReader = {
111
+ read: sinon.stub(),
112
+ };
113
+ mockHookReader = {
114
+ read: sinon.stub(),
115
+ };
116
+ coreReader = Object.create(CoreArtifactReader.prototype);
117
+ Object.assign(coreReader, {
118
+ mailboxArtifactManager,
119
+ chainMetadata,
120
+ chainLookup,
121
+ ismReader: mockIsmReader,
122
+ hookReaderFactory: () => mockHookReader,
123
+ });
124
+ });
125
+ afterEach(() => {
126
+ sinon.restore();
127
+ });
128
+ describe('read', () => {
129
+ it('should read mailbox and expand nested ISM/hook artifacts', async () => {
130
+ // ARRANGE
131
+ mockIsmReader.read.resolves(mockExpandedIsm);
132
+ mockHookReader.read
133
+ .onFirstCall()
134
+ .resolves(mockExpandedDefaultHook)
135
+ .onSecondCall()
136
+ .resolves(mockExpandedRequiredHook);
137
+ // ACT
138
+ const result = await coreReader.read(mockMailboxAddress);
139
+ // ASSERT
140
+ expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
141
+ expect(result.config.owner).to.equal(mockOwner);
142
+ expect(result.deployed.address).to.equal(mockMailboxAddress);
143
+ expect(result.deployed.domainId).to.equal(mockDomainId);
144
+ expect(result.config.defaultIsm).to.deep.equal(mockExpandedIsm);
145
+ expect(result.config.defaultHook).to.deep.equal(mockExpandedDefaultHook);
146
+ expect(result.config.requiredHook).to.deep.equal(mockExpandedRequiredHook);
147
+ sinon.assert.calledOnceWithExactly(readMailboxStub, mockMailboxAddress);
148
+ sinon.assert.calledOnceWithExactly(mockIsmReader.read, mockIsmAddress);
149
+ sinon.assert.calledWith(mockHookReader.read.firstCall, mockDefaultHookAddress);
150
+ sinon.assert.calledWith(mockHookReader.read.secondCall, mockRequiredHookAddress);
151
+ });
152
+ it('should read ISM and hooks in parallel via Promise.all', async () => {
153
+ // ARRANGE
154
+ const callOrder = [];
155
+ mockIsmReader.read.callsFake(async () => {
156
+ callOrder.push('ism');
157
+ return mockExpandedIsm;
158
+ });
159
+ mockHookReader.read.callsFake(async (address) => {
160
+ if (address === mockDefaultHookAddress) {
161
+ callOrder.push('defaultHook');
162
+ return mockExpandedDefaultHook;
163
+ }
164
+ callOrder.push('requiredHook');
165
+ return mockExpandedRequiredHook;
166
+ });
167
+ // ACT
168
+ await coreReader.read(mockMailboxAddress);
169
+ // ASSERT
170
+ expect(callOrder).to.have.lengthOf(3);
171
+ expect(callOrder).to.include.members([
172
+ 'ism',
173
+ 'defaultHook',
174
+ 'requiredHook',
175
+ ]);
176
+ });
177
+ it('should propagate mailbox reading errors', async () => {
178
+ // ARRANGE
179
+ const error = new Error('Failed to read mailbox');
180
+ readMailboxStub.rejects(error);
181
+ // ACT & ASSERT
182
+ await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('Failed to read mailbox');
183
+ });
184
+ it('should skip ISM/hook reader expansion for zero-address artifacts', async () => {
185
+ // ARRANGE
186
+ const zeroAddressMailbox = {
187
+ artifactState: ArtifactState.DEPLOYED,
188
+ config: {
189
+ owner: mockOwner,
190
+ defaultIsm: {
191
+ artifactState: ArtifactState.UNDERIVED,
192
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
193
+ },
194
+ defaultHook: {
195
+ artifactState: ArtifactState.UNDERIVED,
196
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
197
+ },
198
+ requiredHook: {
199
+ artifactState: ArtifactState.UNDERIVED,
200
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
201
+ },
202
+ },
203
+ deployed: { address: mockMailboxAddress, domainId: mockDomainId },
204
+ };
205
+ readMailboxStub.resolves(zeroAddressMailbox);
206
+ mockIsmReader.read.resolves(mockExpandedIsm);
207
+ mockHookReader.read.resolves(mockExpandedDefaultHook);
208
+ // ACT
209
+ const result = await coreReader.read(mockMailboxAddress);
210
+ // ASSERT
211
+ expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
212
+ expect(result.config.owner).to.equal(mockOwner);
213
+ // Nested artifacts should remain UNDERIVED (not expanded)
214
+ expect(result.config.defaultIsm.artifactState).to.equal(ArtifactState.UNDERIVED);
215
+ expect(result.config.defaultHook.artifactState).to.equal(ArtifactState.UNDERIVED);
216
+ expect(result.config.requiredHook.artifactState).to.equal(ArtifactState.UNDERIVED);
217
+ // Readers should NOT have been called
218
+ sinon.assert.notCalled(mockIsmReader.read);
219
+ sinon.assert.notCalled(mockHookReader.read);
220
+ });
221
+ it('should propagate ISM reader errors', async () => {
222
+ // ARRANGE
223
+ const error = new Error('ISM read failed');
224
+ mockIsmReader.read.rejects(error);
225
+ mockHookReader.read.resolves(mockExpandedDefaultHook);
226
+ // ACT & ASSERT
227
+ await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('ISM read failed');
228
+ });
229
+ it('should propagate hook reader errors', async () => {
230
+ // ARRANGE
231
+ const error = new Error('Hook read failed');
232
+ mockIsmReader.read.resolves(mockExpandedIsm);
233
+ mockHookReader.read.rejects(error);
234
+ // ACT & ASSERT
235
+ await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('Hook read failed');
236
+ });
237
+ });
238
+ describe('deriveCoreConfig', () => {
239
+ it('should convert artifact to DerivedCoreConfig format', async () => {
240
+ // ARRANGE
241
+ mockIsmReader.read.resolves(mockExpandedIsm);
242
+ mockHookReader.read
243
+ .onFirstCall()
244
+ .resolves(mockExpandedDefaultHook)
245
+ .onSecondCall()
246
+ .resolves(mockExpandedRequiredHook);
247
+ // ACT
248
+ const result = await coreReader.deriveCoreConfig(mockMailboxAddress);
249
+ // ASSERT
250
+ expect(result.owner).to.equal(mockOwner);
251
+ expect(result.defaultIsm).to.be.an('object');
252
+ expect(result.defaultHook).to.be.an('object');
253
+ expect(result.requiredHook).to.be.an('object');
254
+ sinon.assert.calledOnce(readMailboxStub);
255
+ sinon.assert.calledOnce(mockIsmReader.read);
256
+ expect(mockHookReader.read.callCount).to.equal(2);
257
+ });
258
+ it('should propagate read errors', async () => {
259
+ // ARRANGE
260
+ const error = new Error('Mailbox read failed');
261
+ readMailboxStub.rejects(error);
262
+ // ACT & ASSERT
263
+ await expect(coreReader.deriveCoreConfig(mockMailboxAddress)).to.be.rejectedWith('Mailbox read failed');
264
+ });
265
+ it('should return ZERO_ADDRESS_HEX_32 for zero-address ISM/hooks', async () => {
266
+ // ARRANGE
267
+ const zeroAddressMailbox = {
268
+ artifactState: ArtifactState.DEPLOYED,
269
+ config: {
270
+ owner: mockOwner,
271
+ defaultIsm: {
272
+ artifactState: ArtifactState.UNDERIVED,
273
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
274
+ },
275
+ defaultHook: {
276
+ artifactState: ArtifactState.UNDERIVED,
277
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
278
+ },
279
+ requiredHook: {
280
+ artifactState: ArtifactState.UNDERIVED,
281
+ deployed: { address: ZERO_ADDRESS_HEX_32 },
282
+ },
283
+ },
284
+ deployed: { address: mockMailboxAddress, domainId: mockDomainId },
285
+ };
286
+ readMailboxStub.resolves(zeroAddressMailbox);
287
+ // ACT
288
+ const result = await coreReader.deriveCoreConfig(mockMailboxAddress);
289
+ // ASSERT
290
+ expect(result.owner).to.equal(mockOwner);
291
+ expect(result.defaultIsm).to.equal(ZERO_ADDRESS_HEX_32);
292
+ expect(result.defaultHook).to.equal(ZERO_ADDRESS_HEX_32);
293
+ expect(result.requiredHook).to.equal(ZERO_ADDRESS_HEX_32);
294
+ // Readers should NOT have been called
295
+ sinon.assert.notCalled(mockIsmReader.read);
296
+ sinon.assert.notCalled(mockHookReader.read);
297
+ });
298
+ });
299
+ });
300
+ //# sourceMappingURL=core-artifact-reader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-artifact-reader.test.js","sourceRoot":"","sources":["../../src/core/core-artifact-reader.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { ChainMetadataForAltVM } from '@hyperlane-xyz/provider-sdk';
2
+ import { ISigner } from '@hyperlane-xyz/provider-sdk/altvm';
3
+ import { ArtifactDeployed, ArtifactNew } from '@hyperlane-xyz/provider-sdk/artifact';
4
+ import { ChainLookup } from '@hyperlane-xyz/provider-sdk/chain';
5
+ import { DeployedMailboxAddress, DeployedMailboxArtifact, IRawMailboxArtifactManager, MailboxArtifactConfig } from '@hyperlane-xyz/provider-sdk/mailbox';
6
+ import { AnnotatedTx, TxReceipt } from '@hyperlane-xyz/provider-sdk/module';
7
+ import { DeployedValidatorAnnounceArtifact, IRawValidatorAnnounceArtifactManager } from '@hyperlane-xyz/provider-sdk/validator-announce';
8
+ import { Logger } from '@hyperlane-xyz/utils';
9
+ import { CoreArtifactReader } from './core-artifact-reader.js';
10
+ export declare function createCoreWriter(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup, signer: ISigner<AnnotatedTx, TxReceipt>): CoreWriter;
11
+ /**
12
+ * Orchestrates core deployment (mailbox, ISM, hooks, validator announce)
13
+ * using the Artifact API. Extends CoreArtifactReader for read().
14
+ *
15
+ * Does not implement ArtifactWriter<MailboxArtifactConfig, DeployedMailboxAddress>
16
+ * because create() returns a composite result (mailbox + validator announce) rather
17
+ * than a single [ArtifactDeployed, TxReceipt[]] tuple. The update() signature does
18
+ * conform to the standard pattern.
19
+ */
20
+ export declare class CoreWriter extends CoreArtifactReader {
21
+ protected readonly validatorAnnounceArtifactManager: IRawValidatorAnnounceArtifactManager | null;
22
+ protected readonly signer: ISigner<AnnotatedTx, TxReceipt>;
23
+ protected readonly logger: Logger;
24
+ private readonly ismWriter;
25
+ constructor(mailboxArtifactManager: IRawMailboxArtifactManager, validatorAnnounceArtifactManager: IRawValidatorAnnounceArtifactManager | null, chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup, signer: ISigner<AnnotatedTx, TxReceipt>);
26
+ create(artifact: ArtifactNew<MailboxArtifactConfig>): Promise<[
27
+ {
28
+ mailbox: DeployedMailboxArtifact;
29
+ validatorAnnounce: DeployedValidatorAnnounceArtifact | null;
30
+ },
31
+ TxReceipt[]
32
+ ]>;
33
+ /**
34
+ * Returns mailbox update transactions for the caller to submit.
35
+ * Note: may perform on-chain writes as a side effect when sub-components
36
+ * (ISM, hooks) require fresh deployment via `create()`.
37
+ */
38
+ update(expectedArtifact: ArtifactDeployed<MailboxArtifactConfig, DeployedMailboxAddress>): Promise<AnnotatedTx[]>;
39
+ private deployOrUpdateIsm;
40
+ private deployOrUpdateHook;
41
+ }
42
+ //# sourceMappingURL=core-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-writer.d.ts","sourceRoot":"","sources":["../../src/core/core-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAEL,gBAAgB,EAChB,WAAW,EAMZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAahE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EAErC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,MAAM,EAAmC,MAAM,sBAAsB,CAAC;AAK/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,GACtC,UAAU,CAgBZ;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,kBAAkB;IAS9C,SAAS,CAAC,QAAQ,CAAC,gCAAgC,EAAE,oCAAoC,GAAG,IAAI;IAGhG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;IAX5D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAE9B;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGpC,sBAAsB,EAAE,0BAA0B,EAC/B,gCAAgC,EAAE,oCAAoC,GAAG,IAAI,EAChG,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACL,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC;IAWtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,OAAO,CACjE;QACE;YACE,OAAO,EAAE,uBAAuB,CAAC;YACjC,iBAAiB,EAAE,iCAAiC,GAAG,IAAI,CAAC;SAC7D;QACD,SAAS,EAAE;KACZ,CACF;IAuJD;;;;OAIG;IACG,MAAM,CACV,gBAAgB,EAAE,gBAAgB,CAChC,qBAAqB,EACrB,sBAAsB,CACvB,GACA,OAAO,CAAC,WAAW,EAAE,CAAC;YA8EX,iBAAiB;YA6BjB,kBAAkB;CAuCjC"}