@hyperlane-xyz/deploy-sdk 1.4.0 → 2.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 (44) hide show
  1. package/dist/AltVMCoreModule.d.ts.map +1 -1
  2. package/dist/AltVMCoreModule.js +1 -2
  3. package/dist/AltVMCoreModule.js.map +1 -1
  4. package/dist/index.d.ts +2 -5
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -5
  7. package/dist/index.js.map +1 -1
  8. package/dist/warp/warp-reader.d.ts +51 -0
  9. package/dist/warp/warp-reader.d.ts.map +1 -0
  10. package/dist/warp/warp-reader.js +106 -0
  11. package/dist/warp/warp-reader.js.map +1 -0
  12. package/dist/warp/warp-writer.d.ts +66 -0
  13. package/dist/warp/warp-writer.d.ts.map +1 -0
  14. package/dist/warp/warp-writer.js +231 -0
  15. package/dist/warp/warp-writer.js.map +1 -0
  16. package/dist/warp/warp-writer.test.d.ts +2 -0
  17. package/dist/warp/warp-writer.test.d.ts.map +1 -0
  18. package/dist/warp/warp-writer.test.js +903 -0
  19. package/dist/warp/warp-writer.test.js.map +1 -0
  20. package/package.json +9 -9
  21. package/dist/AltVMWarpDeployer.d.ts +0 -14
  22. package/dist/AltVMWarpDeployer.d.ts.map +0 -1
  23. package/dist/AltVMWarpDeployer.js +0 -69
  24. package/dist/AltVMWarpDeployer.js.map +0 -1
  25. package/dist/AltVMWarpModule.d.ts +0 -96
  26. package/dist/AltVMWarpModule.d.ts.map +0 -1
  27. package/dist/AltVMWarpModule.js +0 -416
  28. package/dist/AltVMWarpModule.js.map +0 -1
  29. package/dist/AltVMWarpModule.test.d.ts +0 -2
  30. package/dist/AltVMWarpModule.test.d.ts.map +0 -1
  31. package/dist/AltVMWarpModule.test.js +0 -508
  32. package/dist/AltVMWarpModule.test.js.map +0 -1
  33. package/dist/AltVMWarpRouteReader.d.ts +0 -53
  34. package/dist/AltVMWarpRouteReader.d.ts.map +0 -1
  35. package/dist/AltVMWarpRouteReader.js +0 -168
  36. package/dist/AltVMWarpRouteReader.js.map +0 -1
  37. package/dist/ism/ism-config-utils.d.ts +0 -37
  38. package/dist/ism/ism-config-utils.d.ts.map +0 -1
  39. package/dist/ism/ism-config-utils.js +0 -72
  40. package/dist/ism/ism-config-utils.js.map +0 -1
  41. package/dist/warp-module.d.ts +0 -5
  42. package/dist/warp-module.d.ts.map +0 -1
  43. package/dist/warp-module.js +0 -28
  44. package/dist/warp-module.js.map +0 -1
@@ -1,508 +0,0 @@
1
- import chai from 'chai';
2
- import chaiAsPromised from 'chai-as-promised';
3
- import Sinon from 'sinon';
4
- import { AltVM, MockSigner, hasProtocol, registerProtocol, } from '@hyperlane-xyz/provider-sdk';
5
- import { TokenType, } from '@hyperlane-xyz/provider-sdk/warp';
6
- import { AltVMWarpModule } from './AltVMWarpModule.js';
7
- // Mock protocol type for testing (use a unique value to avoid collisions)
8
- const TestProtocolType = 'test';
9
- // Mock ISM artifact manager
10
- const mockIsmArtifactManager = {
11
- readIsm: async () => ({
12
- artifactState: 'deployed',
13
- config: { type: AltVM.IsmType.TEST_ISM },
14
- deployed: { address: '0x1234' },
15
- }),
16
- createReader: () => ({
17
- read: async () => ({
18
- artifactState: 'deployed',
19
- config: { type: AltVM.IsmType.TEST_ISM },
20
- deployed: { address: '0x1234' },
21
- }),
22
- }),
23
- createWriter: (type, signer) => ({
24
- create: async (artifact) => {
25
- // Call the appropriate signer method based on ISM type
26
- let ismAddress;
27
- if (type === AltVM.IsmType.MESSAGE_ID_MULTISIG) {
28
- const result = await signer.createMessageIdMultisigIsm({
29
- validators: artifact.config.validators,
30
- threshold: artifact.config.threshold,
31
- });
32
- ismAddress = result.ismAddress;
33
- }
34
- else if (type === AltVM.IsmType.MERKLE_ROOT_MULTISIG) {
35
- const result = await signer.createMerkleRootMultisigIsm({
36
- validators: artifact.config.validators,
37
- threshold: artifact.config.threshold,
38
- });
39
- ismAddress = result.ismAddress;
40
- }
41
- else {
42
- throw new Error(`Unsupported ISM type: ${type}`);
43
- }
44
- return [
45
- {
46
- artifactState: 'deployed',
47
- config: artifact.config,
48
- deployed: { address: ismAddress },
49
- },
50
- [], // No receipts for mock
51
- ];
52
- },
53
- update: async () => [],
54
- }),
55
- };
56
- // Mock hook artifact manager
57
- const mockHookArtifactManager = {
58
- readHook: async () => ({
59
- artifactState: 'deployed',
60
- config: { type: AltVM.HookType.MERKLE_TREE },
61
- deployed: { address: '0x5678' },
62
- }),
63
- createReader: () => ({
64
- read: async () => ({
65
- artifactState: 'deployed',
66
- config: { type: AltVM.HookType.MERKLE_TREE },
67
- deployed: { address: '0x5678' },
68
- }),
69
- }),
70
- createWriter: (_type, _signer) => ({
71
- create: async (artifact) => {
72
- const hookAddress = '0xHOOKADDRESS';
73
- return [
74
- {
75
- artifactState: 'deployed',
76
- config: artifact.config,
77
- deployed: { address: hookAddress },
78
- },
79
- [],
80
- ];
81
- },
82
- read: async () => ({
83
- artifactState: 'deployed',
84
- config: { type: AltVM.HookType.MERKLE_TREE },
85
- deployed: { address: '0x5678' },
86
- }),
87
- update: async () => [],
88
- }),
89
- };
90
- // Mock protocol provider
91
- const mockProtocolProvider = {
92
- createProvider: async () => ({}),
93
- createSigner: async () => ({}),
94
- createSubmitter: async () => ({}),
95
- createIsmArtifactManager: () => mockIsmArtifactManager,
96
- createHookArtifactManager: () => mockHookArtifactManager,
97
- getMinGas: () => ({
98
- CORE_DEPLOY_GAS: 0n,
99
- ISM_DEPLOY_GAS: 0n,
100
- TOKEN_DEPLOY_GAS: 0n,
101
- HOOK_DEPLOY_GAS: 0n,
102
- }),
103
- };
104
- // Register mock protocol provider once
105
- if (!hasProtocol(TestProtocolType)) {
106
- registerProtocol(TestProtocolType, () => mockProtocolProvider);
107
- }
108
- const TestChainName = {
109
- test1: 'test1',
110
- };
111
- chai.use(chaiAsPromised);
112
- const expect = chai.expect;
113
- /*
114
-
115
- TEST CASES - AltVMWarpModule tests
116
-
117
- * no updates needed if the config is the same
118
- * update ownership
119
- * new remote router with invalid config
120
- * new remote router
121
- * multiple new remote routers
122
- * remove existing remote router
123
- * update existing router address
124
- * update existing router gas
125
- * remove and add remote router at the same time
126
- * new ISM
127
- * update existing ISM
128
-
129
- */
130
- describe('AltVMWarpModule', () => {
131
- let signer;
132
- let warpModule;
133
- let chainLookup;
134
- const tokenAddress = '0x726f757465725f61707000000000000000000000000000010000000000000000';
135
- const actualConfig = {
136
- type: TokenType.collateral,
137
- owner: 'hyp1jq304cthpx0lwhpqzrdjrcza559ukyy3sc4dw5',
138
- mailbox: '0x68797065726c616e650000000000000000000000000000000000000000000000',
139
- token: 'uhyp',
140
- remoteRouters: {
141
- '1234': {
142
- address: '0x726f757465725f61707000000000000000000000000000010000000000000000',
143
- },
144
- },
145
- destinationGas: {
146
- '1234': '200000',
147
- },
148
- };
149
- let readStub;
150
- beforeEach(async () => {
151
- signer = await MockSigner.connectWithSigner();
152
- Sinon.stub(signer, 'getSignerAddress').returns(actualConfig.owner);
153
- // Create mock chainLookup
154
- chainLookup = {
155
- getChainMetadata: () => ({
156
- name: TestChainName.test1,
157
- domainId: 1,
158
- protocol: TestProtocolType,
159
- }),
160
- getChainName: () => TestChainName.test1,
161
- getDomainId: () => 1,
162
- getKnownChainNames: () => [TestChainName.test1],
163
- };
164
- warpModule = new AltVMWarpModule(chainLookup, signer, {
165
- chain: TestChainName.test1,
166
- config: actualConfig,
167
- addresses: {
168
- deployedTokenRoute: tokenAddress,
169
- },
170
- });
171
- readStub = Sinon.stub(warpModule, 'read').resolves(actualConfig);
172
- });
173
- it('no updates needed if the config is the same', async () => {
174
- // ARRANGE
175
- const expectedConfig = actualConfig;
176
- // ACT
177
- const updateTransactions = await warpModule.update(expectedConfig);
178
- // ASSERT
179
- expect(updateTransactions).to.have.lengthOf(0);
180
- });
181
- it('update ownership', async () => {
182
- // ARRANGE
183
- const newOwner = 'hyp1hvg7zsnrj6h29q9ss577mhrxa04rn94hv2cm2e';
184
- const expectedConfig = {
185
- ...actualConfig,
186
- owner: newOwner,
187
- };
188
- const updateOwner = Sinon.stub(signer, 'getSetTokenOwnerTransaction').resolves();
189
- // ACT
190
- const updateTransactions = await warpModule.update(expectedConfig);
191
- // ASSERT
192
- expect(updateTransactions).to.have.lengthOf(1);
193
- expect(updateTransactions[0].annotation).to.include('Transferring ownership of');
194
- expect(updateOwner.calledOnceWith({
195
- signer: actualConfig.owner,
196
- tokenAddress,
197
- newOwner,
198
- })).to.be.true;
199
- });
200
- it('new remote router with invalid config', async () => {
201
- // ARRANGE
202
- const newRemoteRouter = {
203
- receiverDomainId: 4321,
204
- receiverAddress: '0x726f757465725f61707000000000000000000000000000020000000000000000',
205
- gas: '300000',
206
- };
207
- // only add new router to remote routers and not to destination gas
208
- const expectedConfig = {
209
- ...actualConfig,
210
- remoteRouters: {
211
- ...actualConfig.remoteRouters,
212
- [newRemoteRouter.receiverDomainId]: {
213
- address: newRemoteRouter.receiverAddress,
214
- },
215
- },
216
- };
217
- // ACT & ASSERT
218
- expect(warpModule.update(expectedConfig)).to.be.rejectedWith(Error);
219
- });
220
- it('new remote router', async () => {
221
- // ARRANGE
222
- const newRemoteRouter = {
223
- receiverDomainId: 4321,
224
- receiverAddress: '0x726f757465725f61707000000000000000000000000000020000000000000000',
225
- gas: '300000',
226
- };
227
- const expectedConfig = {
228
- ...actualConfig,
229
- remoteRouters: {
230
- ...actualConfig.remoteRouters,
231
- [newRemoteRouter.receiverDomainId]: {
232
- address: newRemoteRouter.receiverAddress,
233
- },
234
- },
235
- destinationGas: {
236
- ...actualConfig.destinationGas,
237
- [newRemoteRouter.receiverDomainId]: newRemoteRouter.gas,
238
- },
239
- };
240
- const enrollRouter = Sinon.stub(signer, 'getEnrollRemoteRouterTransaction').resolves();
241
- // ACT
242
- const updateTransactions = await warpModule.update(expectedConfig);
243
- // ASSERT
244
- expect(updateTransactions).to.have.lengthOf(1);
245
- expect(updateTransactions[0].annotation).to.include('Enrolling Router');
246
- expect(enrollRouter.calledOnceWith({
247
- signer: actualConfig.owner,
248
- tokenAddress,
249
- remoteRouter: newRemoteRouter,
250
- })).to.be.true;
251
- });
252
- it('multiple new remote routers', async () => {
253
- // ARRANGE
254
- const newRemoteRouter1 = {
255
- receiverDomainId: 4321,
256
- receiverAddress: '0x726f757465725f61707000000000000000000000000000020000000000000000',
257
- gas: '300000',
258
- };
259
- const newRemoteRouter2 = {
260
- receiverDomainId: 5321,
261
- receiverAddress: '0x726f757465725f61707000000000000000000000000000030000000000000000',
262
- gas: '400000',
263
- };
264
- const expectedConfig = {
265
- ...actualConfig,
266
- remoteRouters: {
267
- ...actualConfig.remoteRouters,
268
- [newRemoteRouter1.receiverDomainId]: {
269
- address: newRemoteRouter1.receiverAddress,
270
- },
271
- [newRemoteRouter2.receiverDomainId]: {
272
- address: newRemoteRouter2.receiverAddress,
273
- },
274
- },
275
- destinationGas: {
276
- ...actualConfig.destinationGas,
277
- [newRemoteRouter1.receiverDomainId]: newRemoteRouter1.gas,
278
- [newRemoteRouter2.receiverDomainId]: newRemoteRouter2.gas,
279
- },
280
- };
281
- const enrollRouter = Sinon.stub(signer, 'getEnrollRemoteRouterTransaction').resolves();
282
- // ACT
283
- const updateTransactions = await warpModule.update(expectedConfig);
284
- // ASSERT
285
- expect(updateTransactions).to.have.lengthOf(2);
286
- expect(updateTransactions[0].annotation).to.include('Enrolling Router');
287
- expect(updateTransactions[1].annotation).to.include('Enrolling Router');
288
- expect(enrollRouter.calledWith({
289
- signer: actualConfig.owner,
290
- tokenAddress,
291
- remoteRouter: newRemoteRouter1,
292
- })).to.be.true;
293
- expect(enrollRouter.calledWith({
294
- signer: actualConfig.owner,
295
- tokenAddress,
296
- remoteRouter: newRemoteRouter2,
297
- })).to.be.true;
298
- });
299
- it('remove existing remote router', async () => {
300
- // ARRANGE
301
- const expectedConfig = {
302
- ...actualConfig,
303
- remoteRouters: {},
304
- destinationGas: {},
305
- };
306
- const unenrollRouter = Sinon.stub(signer, 'getUnenrollRemoteRouterTransaction').resolves();
307
- // ACT
308
- const updateTransactions = await warpModule.update(expectedConfig);
309
- // ASSERT
310
- expect(updateTransactions).to.have.lengthOf(1);
311
- expect(updateTransactions[0].annotation).to.include('Unenrolling Router');
312
- expect(unenrollRouter.calledOnceWith({
313
- signer: actualConfig.owner,
314
- tokenAddress,
315
- receiverDomainId: 1234,
316
- })).to.be.true;
317
- });
318
- it('update existing router address', async () => {
319
- // ARRANGE
320
- const newAddress = '0x726f757465725f61707000000000000000000000000000020000000000000000';
321
- const expectedConfig = {
322
- ...actualConfig,
323
- remoteRouters: {
324
- '1234': {
325
- address: newAddress,
326
- },
327
- },
328
- };
329
- const enrollRouter = Sinon.stub(signer, 'getEnrollRemoteRouterTransaction').resolves();
330
- const unenrollRouter = Sinon.stub(signer, 'getUnenrollRemoteRouterTransaction').resolves();
331
- // ACT
332
- const updateTransactions = await warpModule.update(expectedConfig);
333
- // ASSERT
334
- expect(updateTransactions).to.have.lengthOf(2);
335
- expect(updateTransactions[0].annotation).to.include('Unenrolling Router');
336
- expect(updateTransactions[1].annotation).to.include('Enrolling Router');
337
- expect(enrollRouter.calledOnceWith({
338
- signer: actualConfig.owner,
339
- tokenAddress,
340
- remoteRouter: {
341
- receiverDomainId: 1234,
342
- receiverAddress: newAddress,
343
- gas: '200000',
344
- },
345
- })).to.be.true;
346
- expect(unenrollRouter.calledOnceWith({
347
- signer: actualConfig.owner,
348
- tokenAddress,
349
- receiverDomainId: 1234,
350
- })).to.be.true;
351
- });
352
- it('update existing router gas', async () => {
353
- // ARRANGE
354
- const newGas = '300000';
355
- const expectedConfig = {
356
- ...actualConfig,
357
- destinationGas: {
358
- '1234': newGas,
359
- },
360
- };
361
- const enrollRouter = Sinon.stub(signer, 'getEnrollRemoteRouterTransaction').resolves();
362
- const unenrollRouter = Sinon.stub(signer, 'getUnenrollRemoteRouterTransaction').resolves();
363
- // ACT
364
- const updateTransactions = await warpModule.update(expectedConfig);
365
- // ASSERT
366
- expect(updateTransactions).to.have.lengthOf(2);
367
- expect(updateTransactions[0].annotation).to.include('Unenrolling Router');
368
- expect(updateTransactions[1].annotation).to.include('Enrolling Router');
369
- expect(enrollRouter.calledOnceWith({
370
- signer: actualConfig.owner,
371
- tokenAddress,
372
- remoteRouter: {
373
- receiverDomainId: 1234,
374
- receiverAddress: '0x726f757465725f61707000000000000000000000000000010000000000000000',
375
- gas: newGas,
376
- },
377
- })).to.be.true;
378
- expect(unenrollRouter.calledOnceWith({
379
- signer: actualConfig.owner,
380
- tokenAddress,
381
- receiverDomainId: 1234,
382
- })).to.be.true;
383
- });
384
- it('remove and add remote router at the same time', async () => {
385
- // ARRANGE
386
- const expectedConfig = {
387
- ...actualConfig,
388
- remoteRouters: {
389
- '4321': {
390
- address: '0x726f757465725f61707000000000000000000000000000020000000000000000',
391
- },
392
- },
393
- destinationGas: {
394
- '4321': '300000',
395
- },
396
- };
397
- const enrollRouter = Sinon.stub(signer, 'getEnrollRemoteRouterTransaction').resolves();
398
- const unenrollRouter = Sinon.stub(signer, 'getUnenrollRemoteRouterTransaction').resolves();
399
- // ACT
400
- const updateTransactions = await warpModule.update(expectedConfig);
401
- // ASSERT
402
- expect(updateTransactions).to.have.lengthOf(2);
403
- expect(updateTransactions[0].annotation).to.include('Unenrolling Router');
404
- expect(updateTransactions[1].annotation).to.include('Enrolling Router');
405
- expect(enrollRouter.calledOnceWith({
406
- signer: actualConfig.owner,
407
- tokenAddress,
408
- remoteRouter: {
409
- receiverDomainId: 4321,
410
- receiverAddress: '0x726f757465725f61707000000000000000000000000000020000000000000000',
411
- gas: '300000',
412
- },
413
- })).to.be.true;
414
- expect(unenrollRouter.calledOnceWith({
415
- signer: actualConfig.owner,
416
- tokenAddress,
417
- receiverDomainId: 1234,
418
- })).to.be.true;
419
- });
420
- it('new ISM', async () => {
421
- // ARRANGE
422
- const newIsmAddress = '0x726f757465725f69736d00000000000000000000000000050000000000000000';
423
- const newIsm = {
424
- type: 'messageIdMultisigIsm',
425
- validators: ['0xe699ceCa237DD38e8f2Fa308D7d1a2BeCFC5493E'],
426
- threshold: 1,
427
- };
428
- const expectedConfig = {
429
- ...actualConfig,
430
- interchainSecurityModule: newIsm,
431
- };
432
- const createIsm = Sinon.stub(signer, 'createMessageIdMultisigIsm').resolves({
433
- ismAddress: newIsmAddress,
434
- });
435
- const updateIsm = Sinon.stub(signer, 'getSetTokenIsmTransaction').resolves();
436
- // ACT
437
- const updateTransactions = await warpModule.update(expectedConfig);
438
- // ASSERT
439
- expect(updateTransactions).to.have.lengthOf(1);
440
- expect(updateTransactions[0].annotation).to.include('Setting ISM for Warp Route to');
441
- expect(createIsm.calledOnceWith({
442
- validators: newIsm.validators,
443
- threshold: newIsm.threshold,
444
- })).to.be.true;
445
- expect(updateIsm.calledOnceWith({
446
- signer: actualConfig.owner,
447
- tokenAddress,
448
- ismAddress: newIsmAddress,
449
- })).to.be.true;
450
- });
451
- it('update existing ISM', async () => {
452
- // ARRANGE
453
- const existingIsmAddress = '0x726f757465725f69736d00000000000000000000000000040000000000000000';
454
- const existingIsm = {
455
- type: 'messageIdMultisigIsm',
456
- validators: ['0xe699ceCa237DD38e8f2Fa308D7d1a2BeCFC5493E'],
457
- threshold: 1,
458
- address: existingIsmAddress,
459
- };
460
- const newIsmAddress = '0x726f757465725f69736d00000000000000000000000000050000000000000000';
461
- const newIsm = {
462
- type: 'merkleRootMultisigIsm',
463
- validators: ['0xe699ceCa237DD38e8f2Fa308D7d1a2BeCFC5493E'],
464
- threshold: 1,
465
- };
466
- readStub.restore();
467
- Sinon.stub(warpModule, 'read').resolves({
468
- ...actualConfig,
469
- token: tokenAddress,
470
- interchainSecurityModule: existingIsm,
471
- });
472
- const expectedConfig = {
473
- ...actualConfig,
474
- interchainSecurityModule: newIsm,
475
- };
476
- // Stub ISM reading methods
477
- Sinon.stub(signer, 'getIsmType').resolves('messageIdMultisigIsm');
478
- Sinon.stub(signer, 'getMessageIdMultisigIsm').resolves({
479
- address: existingIsmAddress,
480
- validators: existingIsm.validators,
481
- threshold: existingIsm.threshold,
482
- });
483
- const createIsm = Sinon.stub(signer, 'createMerkleRootMultisigIsm').resolves({
484
- ismAddress: newIsmAddress,
485
- });
486
- const updateIsm = Sinon.stub(signer, 'getSetTokenIsmTransaction').resolves();
487
- // ACT
488
- const updateTransactions = await warpModule.update(expectedConfig);
489
- // ASSERT
490
- expect(updateTransactions).to.have.lengthOf(1);
491
- expect(updateTransactions[0].annotation).to.include('Setting ISM for Warp Route to');
492
- // Check createIsm was called once
493
- expect(createIsm.callCount).to.equal(1);
494
- const createIsmCall = createIsm.getCall(0);
495
- expect(createIsmCall.args[0].threshold).to.equal(newIsm.threshold);
496
- expect(createIsmCall.args[0].validators.length).to.equal(newIsm.validators.length);
497
- expect(createIsmCall.args[0].validators[0].toLowerCase()).to.equal(newIsm.validators[0].toLowerCase());
498
- // Check updateIsm was called once
499
- expect(updateIsm.callCount).to.equal(1);
500
- const updateIsmCall = updateIsm.getCall(0);
501
- expect(updateIsmCall.args[0]).to.deep.equal({
502
- signer: actualConfig.owner,
503
- tokenAddress,
504
- ismAddress: newIsmAddress,
505
- });
506
- });
507
- });
508
- //# sourceMappingURL=AltVMWarpModule.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AltVMWarpModule.test.js","sourceRoot":"","sources":["../src/AltVMWarpModule.test.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- import { AltVM } from '@hyperlane-xyz/provider-sdk';
2
- import { ChainLookup, ChainMetadataForAltVM } from '@hyperlane-xyz/provider-sdk/chain';
3
- import { HypReader } from '@hyperlane-xyz/provider-sdk/module';
4
- import { DerivedWarpConfig, DestinationGas, RemoteRouters, TokenRouterModuleType, TokenType } from '@hyperlane-xyz/provider-sdk/warp';
5
- import { Address, rootLogger } from '@hyperlane-xyz/utils';
6
- import { HookReader } from './hook/hook-reader.js';
7
- export declare class AltVMWarpRouteReader implements HypReader<TokenRouterModuleType> {
8
- protected readonly chainMetadata: ChainMetadataForAltVM;
9
- protected readonly chainLookup: ChainLookup;
10
- protected readonly provider: AltVM.IProvider;
11
- protected readonly logger: ReturnType<typeof rootLogger.child>;
12
- protected readonly hookReader: HookReader;
13
- private readonly ismReader;
14
- constructor(chainMetadata: ChainMetadataForAltVM, chainLookup: ChainLookup, provider: AltVM.IProvider);
15
- /**
16
- * Reads the configuration for a Warp Route at the given address.
17
- * Implements the HypReader interface.
18
- *
19
- * @param address - The address of the Warp Route contract.
20
- * @returns The derived Warp Route configuration.
21
- */
22
- read(address: string): Promise<DerivedWarpConfig>;
23
- /**
24
- * Derives the configuration for a Hyperlane ERC20 router contract at the given address.
25
- *
26
- * @param warpRouteAddress - The address of the Hyperlane ERC20 router contract.
27
- * @returns The configuration for the Hyperlane ERC20 router.
28
- *
29
- */
30
- deriveWarpRouteConfig(warpRouteAddress: Address): Promise<DerivedWarpConfig>;
31
- /**
32
- * Derives the token type for a given Warp Route address using specific methods
33
- *
34
- * @param warpRouteAddress - The Warp Route address to derive the token type for.
35
- * @returns The derived TokenType, which can be either 'collateral' or 'synthetic'.
36
- * @throws Error if the token type is not supported (i.e., not collateral or synthetic).
37
- */
38
- deriveTokenType(warpRouteAddress: Address): Promise<TokenType>;
39
- /**
40
- * Fetches the base metadata for a Warp Route contract.
41
- *
42
- * @param routerAddress - The address of the Warp Route contract.
43
- * @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
44
- */
45
- fetchMailboxClientConfig(routerAddress: Address): Promise<{
46
- mailbox: string;
47
- owner: string;
48
- interchainSecurityModule?: any;
49
- }>;
50
- fetchRemoteRouters(warpRouteAddress: Address): Promise<RemoteRouters>;
51
- fetchDestinationGas(warpRouteAddress: Address): Promise<DestinationGas>;
52
- }
53
- //# sourceMappingURL=AltVMWarpRouteReader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AltVMWarpRouteReader.d.ts","sourceRoot":"","sources":["../src/AltVMWarpRouteReader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,MAAM,6BAA6B,CAAC;AAClE,OAAO,EACL,WAAW,EACX,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAIL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,SAAS,EACV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,OAAO,EAGP,UAAU,EACX,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAoB,MAAM,uBAAuB,CAAC;AAGrE,qBAAa,oBAAqB,YAAW,SAAS,CAAC,qBAAqB,CAAC;IAMzE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,qBAAqB;IACvD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS;IAP9C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;gBAGjB,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,KAAK,CAAC,SAAS;IAW9C;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIvD;;;;;;OAMG;IACG,qBAAqB,CACzB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,iBAAiB,CAAC;IAwE7B;;;;;;OAMG;IACG,eAAe,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBpE;;;;;OAKG;IACG,wBAAwB,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;QAC9D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,wBAAwB,CAAC,EAAE,GAAG,CAAC;KAChC,CAAC;IAkBI,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAerE,mBAAmB,CACvB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;CAY3B"}