@hyperlane-xyz/deploy-sdk 1.4.1 → 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.
- package/dist/AltVMCoreModule.d.ts.map +1 -1
- package/dist/AltVMCoreModule.js +1 -2
- package/dist/AltVMCoreModule.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/dist/warp/warp-reader.d.ts +51 -0
- package/dist/warp/warp-reader.d.ts.map +1 -0
- package/dist/warp/warp-reader.js +106 -0
- package/dist/warp/warp-reader.js.map +1 -0
- package/dist/warp/warp-writer.d.ts +66 -0
- package/dist/warp/warp-writer.d.ts.map +1 -0
- package/dist/warp/warp-writer.js +231 -0
- package/dist/warp/warp-writer.js.map +1 -0
- package/dist/warp/warp-writer.test.d.ts +2 -0
- package/dist/warp/warp-writer.test.d.ts.map +1 -0
- package/dist/warp/warp-writer.test.js +903 -0
- package/dist/warp/warp-writer.test.js.map +1 -0
- package/package.json +9 -9
- package/dist/AltVMWarpDeployer.d.ts +0 -14
- package/dist/AltVMWarpDeployer.d.ts.map +0 -1
- package/dist/AltVMWarpDeployer.js +0 -69
- package/dist/AltVMWarpDeployer.js.map +0 -1
- package/dist/AltVMWarpModule.d.ts +0 -96
- package/dist/AltVMWarpModule.d.ts.map +0 -1
- package/dist/AltVMWarpModule.js +0 -416
- package/dist/AltVMWarpModule.js.map +0 -1
- package/dist/AltVMWarpModule.test.d.ts +0 -2
- package/dist/AltVMWarpModule.test.d.ts.map +0 -1
- package/dist/AltVMWarpModule.test.js +0 -508
- package/dist/AltVMWarpModule.test.js.map +0 -1
- package/dist/AltVMWarpRouteReader.d.ts +0 -53
- package/dist/AltVMWarpRouteReader.d.ts.map +0 -1
- package/dist/AltVMWarpRouteReader.js +0 -168
- package/dist/AltVMWarpRouteReader.js.map +0 -1
- package/dist/ism/ism-config-utils.d.ts +0 -37
- package/dist/ism/ism-config-utils.d.ts.map +0 -1
- package/dist/ism/ism-config-utils.js +0 -72
- package/dist/ism/ism-config-utils.js.map +0 -1
- package/dist/warp-module.d.ts +0 -5
- package/dist/warp-module.d.ts.map +0 -1
- package/dist/warp-module.js +0 -28
- 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"}
|