@recoillink/deploy-sdk 0.0.0-stage → 11.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +193 -0
- package/dist/AltVMFileSubmitter.d.ts +12 -0
- package/dist/AltVMFileSubmitter.d.ts.map +1 -0
- package/dist/AltVMFileSubmitter.js +35 -0
- package/dist/AltVMFileSubmitter.js.map +1 -0
- package/dist/AltVMFileSubmitter.test.d.ts +2 -0
- package/dist/AltVMFileSubmitter.test.d.ts.map +1 -0
- package/dist/AltVMFileSubmitter.test.js +46 -0
- package/dist/AltVMFileSubmitter.test.js.map +1 -0
- package/dist/AltVMJsonRpcSubmitter.d.ts +2 -0
- package/dist/AltVMJsonRpcSubmitter.d.ts.map +1 -0
- package/dist/AltVMJsonRpcSubmitter.js +2 -0
- package/dist/AltVMJsonRpcSubmitter.js.map +1 -0
- package/dist/core/core-artifact-reader.d.ts +67 -0
- package/dist/core/core-artifact-reader.d.ts.map +1 -0
- package/dist/core/core-artifact-reader.js +118 -0
- package/dist/core/core-artifact-reader.js.map +1 -0
- package/dist/core/core-artifact-reader.test.d.ts +2 -0
- package/dist/core/core-artifact-reader.test.d.ts.map +1 -0
- package/dist/core/core-artifact-reader.test.js +310 -0
- package/dist/core/core-artifact-reader.test.js.map +1 -0
- package/dist/core/core-writer.d.ts +43 -0
- package/dist/core/core-writer.d.ts.map +1 -0
- package/dist/core/core-writer.js +238 -0
- package/dist/core/core-writer.js.map +1 -0
- package/dist/core/core-writer.test.d.ts +2 -0
- package/dist/core/core-writer.test.d.ts.map +1 -0
- package/dist/core/core-writer.test.js +1315 -0
- package/dist/core/core-writer.test.js.map +1 -0
- package/dist/fee/fee-reader.d.ts +25 -0
- package/dist/fee/fee-reader.d.ts.map +1 -0
- package/dist/fee/fee-reader.js +35 -0
- package/dist/fee/fee-reader.js.map +1 -0
- package/dist/fee/fee-writer.d.ts +31 -0
- package/dist/fee/fee-writer.d.ts.map +1 -0
- package/dist/fee/fee-writer.js +45 -0
- package/dist/fee/fee-writer.js.map +1 -0
- package/dist/hook/hook-reader.d.ts +41 -0
- package/dist/hook/hook-reader.d.ts.map +1 -0
- package/dist/hook/hook-reader.js +52 -0
- package/dist/hook/hook-reader.js.map +1 -0
- package/dist/hook/hook-writer.d.ts +101 -0
- package/dist/hook/hook-writer.d.ts.map +1 -0
- package/dist/hook/hook-writer.js +140 -0
- package/dist/hook/hook-writer.js.map +1 -0
- package/dist/hook/hook-writer.test.d.ts +2 -0
- package/dist/hook/hook-writer.test.d.ts.map +1 -0
- package/dist/hook/hook-writer.test.js +70 -0
- package/dist/hook/hook-writer.test.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/ism/generic-ism-context.test.d.ts +2 -0
- package/dist/ism/generic-ism-context.test.d.ts.map +1 -0
- package/dist/ism/generic-ism-context.test.js +112 -0
- package/dist/ism/generic-ism-context.test.js.map +1 -0
- package/dist/ism/generic-ism-writer.d.ts +62 -0
- package/dist/ism/generic-ism-writer.d.ts.map +1 -0
- package/dist/ism/generic-ism-writer.js +100 -0
- package/dist/ism/generic-ism-writer.js.map +1 -0
- package/dist/ism/generic-ism.d.ts +43 -0
- package/dist/ism/generic-ism.d.ts.map +1 -0
- package/dist/ism/generic-ism.js +105 -0
- package/dist/ism/generic-ism.js.map +1 -0
- package/dist/ism/generic-ism.test.d.ts +2 -0
- package/dist/ism/generic-ism.test.d.ts.map +1 -0
- package/dist/ism/generic-ism.test.js +145 -0
- package/dist/ism/generic-ism.test.js.map +1 -0
- package/dist/ism/routing-ism.d.ts +21 -0
- package/dist/ism/routing-ism.d.ts.map +1 -0
- package/dist/ism/routing-ism.js +149 -0
- package/dist/ism/routing-ism.js.map +1 -0
- package/dist/protocol.d.ts +3 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +38 -0
- package/dist/protocol.js.map +1 -0
- package/dist/protocol.test.d.ts +2 -0
- package/dist/protocol.test.d.ts.map +1 -0
- package/dist/protocol.test.js +14 -0
- package/dist/protocol.test.js.map +1 -0
- package/dist/utils/validation.d.ts +46 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +132 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/validation.test.d.ts +2 -0
- package/dist/utils/validation.test.d.ts.map +1 -0
- package/dist/utils/validation.test.js +160 -0
- package/dist/utils/validation.test.js.map +1 -0
- package/dist/warp/warp-reader.d.ts +57 -0
- package/dist/warp/warp-reader.d.ts.map +1 -0
- package/dist/warp/warp-reader.js +135 -0
- package/dist/warp/warp-reader.js.map +1 -0
- package/dist/warp/warp-writer.d.ts +67 -0
- package/dist/warp/warp-writer.d.ts.map +1 -0
- package/dist/warp/warp-writer.js +381 -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 +1855 -0
- package/dist/warp/warp-writer.test.js.map +1 -0
- package/package.json +54 -3
- package/README.md +0 -3
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import sinon from 'sinon';
|
|
3
|
+
import { hasProtocol, registerProtocol, } from '@recoillink/provider-sdk';
|
|
4
|
+
import { ArtifactState } from '@recoillink/provider-sdk/artifact';
|
|
5
|
+
import { ZERO_ADDRESS_HEX_32 } from '@recoillink/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
|
+
createFeeArtifactManager: sinon.stub(),
|
|
18
|
+
getMinGas: sinon.stub(),
|
|
19
|
+
createWarpArtifactManager: sinon.stub(),
|
|
20
|
+
};
|
|
21
|
+
if (!hasProtocol(TestProtocol)) {
|
|
22
|
+
registerProtocol(TestProtocol, () => mockProtocolProvider);
|
|
23
|
+
}
|
|
24
|
+
describe('CoreArtifactReader', () => {
|
|
25
|
+
const mockMailboxAddress = '0xMAILBOX';
|
|
26
|
+
const mockIsmAddress = '0xISM';
|
|
27
|
+
const mockDefaultHookAddress = '0xDEFAULTHOOK';
|
|
28
|
+
const mockRequiredHookAddress = '0xREQUIREDHOOK';
|
|
29
|
+
const mockOwner = '0xOWNER';
|
|
30
|
+
const mockDomainId = 1;
|
|
31
|
+
const chainName = 'test-chain';
|
|
32
|
+
let readMailboxStub;
|
|
33
|
+
let mailboxArtifactManager;
|
|
34
|
+
let chainLookup;
|
|
35
|
+
let chainMetadata;
|
|
36
|
+
let coreReader;
|
|
37
|
+
const mockContractVersion = '1.2.3';
|
|
38
|
+
const mockRawMailbox = {
|
|
39
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
40
|
+
config: {
|
|
41
|
+
owner: mockOwner,
|
|
42
|
+
defaultIsm: {
|
|
43
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
44
|
+
deployed: { address: mockIsmAddress },
|
|
45
|
+
},
|
|
46
|
+
defaultHook: {
|
|
47
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
48
|
+
deployed: { address: mockDefaultHookAddress },
|
|
49
|
+
},
|
|
50
|
+
requiredHook: {
|
|
51
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
52
|
+
deployed: { address: mockRequiredHookAddress },
|
|
53
|
+
},
|
|
54
|
+
contractVersion: mockContractVersion,
|
|
55
|
+
},
|
|
56
|
+
deployed: { address: mockMailboxAddress, domainId: mockDomainId },
|
|
57
|
+
};
|
|
58
|
+
const mockExpandedIsm = {
|
|
59
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
60
|
+
config: {
|
|
61
|
+
type: 'merkleRootMultisigIsm',
|
|
62
|
+
validators: ['0xVALIDATOR1'],
|
|
63
|
+
threshold: 1,
|
|
64
|
+
},
|
|
65
|
+
deployed: { address: mockIsmAddress },
|
|
66
|
+
};
|
|
67
|
+
const mockExpandedDefaultHook = {
|
|
68
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
69
|
+
config: {
|
|
70
|
+
type: 'merkleTreeHook',
|
|
71
|
+
},
|
|
72
|
+
deployed: { address: mockDefaultHookAddress },
|
|
73
|
+
};
|
|
74
|
+
const mockExpandedRequiredHook = {
|
|
75
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
76
|
+
config: {
|
|
77
|
+
type: 'interchainGasPaymaster',
|
|
78
|
+
owner: mockOwner,
|
|
79
|
+
beneficiary: '0xBENEFICIARY',
|
|
80
|
+
oracleKey: '0xORACLE',
|
|
81
|
+
overhead: {},
|
|
82
|
+
oracleConfig: {},
|
|
83
|
+
},
|
|
84
|
+
deployed: { address: mockRequiredHookAddress },
|
|
85
|
+
};
|
|
86
|
+
let mockIsmReader;
|
|
87
|
+
let mockHookReader;
|
|
88
|
+
beforeEach(() => {
|
|
89
|
+
readMailboxStub = sinon
|
|
90
|
+
.stub()
|
|
91
|
+
.resolves(mockRawMailbox);
|
|
92
|
+
mailboxArtifactManager = {
|
|
93
|
+
readMailbox: readMailboxStub,
|
|
94
|
+
createReader: sinon.stub(),
|
|
95
|
+
createWriter: sinon.stub(),
|
|
96
|
+
};
|
|
97
|
+
chainMetadata = {
|
|
98
|
+
name: chainName,
|
|
99
|
+
domainId: mockDomainId,
|
|
100
|
+
protocol: TestProtocol,
|
|
101
|
+
chainId: mockDomainId,
|
|
102
|
+
};
|
|
103
|
+
chainLookup = {
|
|
104
|
+
getChainMetadata: sinon
|
|
105
|
+
.stub()
|
|
106
|
+
.returns(chainMetadata),
|
|
107
|
+
getChainName: sinon.stub().returns(chainName),
|
|
108
|
+
getDomainId: sinon
|
|
109
|
+
.stub()
|
|
110
|
+
.returns(mockDomainId),
|
|
111
|
+
getKnownChainNames: sinon.stub().returns([chainName]),
|
|
112
|
+
getKnownDomainIds: sinon
|
|
113
|
+
.stub()
|
|
114
|
+
.returns(new Set([mockDomainId])),
|
|
115
|
+
};
|
|
116
|
+
mockIsmReader = {
|
|
117
|
+
read: sinon.stub(),
|
|
118
|
+
};
|
|
119
|
+
mockHookReader = {
|
|
120
|
+
read: sinon.stub(),
|
|
121
|
+
};
|
|
122
|
+
coreReader = Object.create(CoreArtifactReader.prototype);
|
|
123
|
+
Object.assign(coreReader, {
|
|
124
|
+
mailboxArtifactManager,
|
|
125
|
+
chainMetadata,
|
|
126
|
+
chainLookup,
|
|
127
|
+
ismReader: mockIsmReader,
|
|
128
|
+
hookReaderFactory: () => mockHookReader,
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
afterEach(() => {
|
|
132
|
+
sinon.restore();
|
|
133
|
+
});
|
|
134
|
+
describe('read', () => {
|
|
135
|
+
it('should read mailbox and expand nested ISM/hook artifacts', async () => {
|
|
136
|
+
// ARRANGE
|
|
137
|
+
mockIsmReader.read.resolves(mockExpandedIsm);
|
|
138
|
+
mockHookReader.read
|
|
139
|
+
.onFirstCall()
|
|
140
|
+
.resolves(mockExpandedDefaultHook)
|
|
141
|
+
.onSecondCall()
|
|
142
|
+
.resolves(mockExpandedRequiredHook);
|
|
143
|
+
// ACT
|
|
144
|
+
const result = await coreReader.read(mockMailboxAddress);
|
|
145
|
+
// ASSERT
|
|
146
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
147
|
+
expect(result.config.owner).to.equal(mockOwner);
|
|
148
|
+
expect(result.deployed.address).to.equal(mockMailboxAddress);
|
|
149
|
+
expect(result.deployed.domainId).to.equal(mockDomainId);
|
|
150
|
+
expect(result.config.defaultIsm).to.deep.equal(mockExpandedIsm);
|
|
151
|
+
expect(result.config.defaultHook).to.deep.equal(mockExpandedDefaultHook);
|
|
152
|
+
expect(result.config.requiredHook).to.deep.equal(mockExpandedRequiredHook);
|
|
153
|
+
expect(result.config.contractVersion).to.equal(mockContractVersion);
|
|
154
|
+
sinon.assert.calledOnceWithExactly(readMailboxStub, mockMailboxAddress);
|
|
155
|
+
sinon.assert.calledOnceWithExactly(mockIsmReader.read, mockIsmAddress);
|
|
156
|
+
sinon.assert.calledWith(mockHookReader.read.firstCall, mockDefaultHookAddress);
|
|
157
|
+
sinon.assert.calledWith(mockHookReader.read.secondCall, mockRequiredHookAddress);
|
|
158
|
+
});
|
|
159
|
+
it('should read ISM and hooks in parallel via Promise.all', async () => {
|
|
160
|
+
// ARRANGE
|
|
161
|
+
const callOrder = [];
|
|
162
|
+
mockIsmReader.read.callsFake(async () => {
|
|
163
|
+
callOrder.push('ism');
|
|
164
|
+
return mockExpandedIsm;
|
|
165
|
+
});
|
|
166
|
+
mockHookReader.read.callsFake(async (address) => {
|
|
167
|
+
if (address === mockDefaultHookAddress) {
|
|
168
|
+
callOrder.push('defaultHook');
|
|
169
|
+
return mockExpandedDefaultHook;
|
|
170
|
+
}
|
|
171
|
+
callOrder.push('requiredHook');
|
|
172
|
+
return mockExpandedRequiredHook;
|
|
173
|
+
});
|
|
174
|
+
// ACT
|
|
175
|
+
await coreReader.read(mockMailboxAddress);
|
|
176
|
+
// ASSERT
|
|
177
|
+
expect(callOrder).to.have.lengthOf(3);
|
|
178
|
+
expect(callOrder).to.include.members([
|
|
179
|
+
'ism',
|
|
180
|
+
'defaultHook',
|
|
181
|
+
'requiredHook',
|
|
182
|
+
]);
|
|
183
|
+
});
|
|
184
|
+
it('should propagate mailbox reading errors', async () => {
|
|
185
|
+
// ARRANGE
|
|
186
|
+
const error = new Error('Failed to read mailbox');
|
|
187
|
+
readMailboxStub.rejects(error);
|
|
188
|
+
// ACT & ASSERT
|
|
189
|
+
await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('Failed to read mailbox');
|
|
190
|
+
});
|
|
191
|
+
it('should skip ISM/hook reader expansion for zero-address artifacts', async () => {
|
|
192
|
+
// ARRANGE
|
|
193
|
+
const zeroAddressMailbox = {
|
|
194
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
195
|
+
config: {
|
|
196
|
+
owner: mockOwner,
|
|
197
|
+
defaultIsm: {
|
|
198
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
199
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
200
|
+
},
|
|
201
|
+
defaultHook: {
|
|
202
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
203
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
204
|
+
},
|
|
205
|
+
requiredHook: {
|
|
206
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
207
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
208
|
+
},
|
|
209
|
+
contractVersion: mockContractVersion,
|
|
210
|
+
},
|
|
211
|
+
deployed: { address: mockMailboxAddress, domainId: mockDomainId },
|
|
212
|
+
};
|
|
213
|
+
readMailboxStub.resolves(zeroAddressMailbox);
|
|
214
|
+
mockIsmReader.read.resolves(mockExpandedIsm);
|
|
215
|
+
mockHookReader.read.resolves(mockExpandedDefaultHook);
|
|
216
|
+
// ACT
|
|
217
|
+
const result = await coreReader.read(mockMailboxAddress);
|
|
218
|
+
// ASSERT
|
|
219
|
+
expect(result.artifactState).to.equal(ArtifactState.DEPLOYED);
|
|
220
|
+
expect(result.config.owner).to.equal(mockOwner);
|
|
221
|
+
expect(result.config.contractVersion).to.equal(mockContractVersion);
|
|
222
|
+
// Nested artifacts should remain UNDERIVED (not expanded)
|
|
223
|
+
expect(result.config.defaultIsm.artifactState).to.equal(ArtifactState.UNDERIVED);
|
|
224
|
+
expect(result.config.defaultHook.artifactState).to.equal(ArtifactState.UNDERIVED);
|
|
225
|
+
expect(result.config.requiredHook.artifactState).to.equal(ArtifactState.UNDERIVED);
|
|
226
|
+
// Readers should NOT have been called
|
|
227
|
+
sinon.assert.notCalled(mockIsmReader.read);
|
|
228
|
+
sinon.assert.notCalled(mockHookReader.read);
|
|
229
|
+
});
|
|
230
|
+
it('should propagate ISM reader errors', async () => {
|
|
231
|
+
// ARRANGE
|
|
232
|
+
const error = new Error('ISM read failed');
|
|
233
|
+
mockIsmReader.read.rejects(error);
|
|
234
|
+
mockHookReader.read.resolves(mockExpandedDefaultHook);
|
|
235
|
+
// ACT & ASSERT
|
|
236
|
+
await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('ISM read failed');
|
|
237
|
+
});
|
|
238
|
+
it('should propagate hook reader errors', async () => {
|
|
239
|
+
// ARRANGE
|
|
240
|
+
const error = new Error('Hook read failed');
|
|
241
|
+
mockIsmReader.read.resolves(mockExpandedIsm);
|
|
242
|
+
mockHookReader.read.rejects(error);
|
|
243
|
+
// ACT & ASSERT
|
|
244
|
+
await expect(coreReader.read(mockMailboxAddress)).to.be.rejectedWith('Hook read failed');
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe('deriveCoreConfig', () => {
|
|
248
|
+
it('should convert artifact to DerivedCoreConfig format', async () => {
|
|
249
|
+
// ARRANGE
|
|
250
|
+
mockIsmReader.read.resolves(mockExpandedIsm);
|
|
251
|
+
mockHookReader.read
|
|
252
|
+
.onFirstCall()
|
|
253
|
+
.resolves(mockExpandedDefaultHook)
|
|
254
|
+
.onSecondCall()
|
|
255
|
+
.resolves(mockExpandedRequiredHook);
|
|
256
|
+
// ACT
|
|
257
|
+
const result = await coreReader.deriveCoreConfig(mockMailboxAddress);
|
|
258
|
+
// ASSERT
|
|
259
|
+
expect(result.owner).to.equal(mockOwner);
|
|
260
|
+
expect(result.defaultIsm).to.be.an('object');
|
|
261
|
+
expect(result.defaultHook).to.be.an('object');
|
|
262
|
+
expect(result.requiredHook).to.be.an('object');
|
|
263
|
+
expect(result.contractVersion).to.equal(mockContractVersion);
|
|
264
|
+
sinon.assert.calledOnce(readMailboxStub);
|
|
265
|
+
sinon.assert.calledOnce(mockIsmReader.read);
|
|
266
|
+
expect(mockHookReader.read.callCount).to.equal(2);
|
|
267
|
+
});
|
|
268
|
+
it('should propagate read errors', async () => {
|
|
269
|
+
// ARRANGE
|
|
270
|
+
const error = new Error('Mailbox read failed');
|
|
271
|
+
readMailboxStub.rejects(error);
|
|
272
|
+
// ACT & ASSERT
|
|
273
|
+
await expect(coreReader.deriveCoreConfig(mockMailboxAddress)).to.be.rejectedWith('Mailbox read failed');
|
|
274
|
+
});
|
|
275
|
+
it('should return ZERO_ADDRESS_HEX_32 for zero-address ISM/hooks', async () => {
|
|
276
|
+
// ARRANGE
|
|
277
|
+
const zeroAddressMailbox = {
|
|
278
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
279
|
+
config: {
|
|
280
|
+
owner: mockOwner,
|
|
281
|
+
defaultIsm: {
|
|
282
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
283
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
284
|
+
},
|
|
285
|
+
defaultHook: {
|
|
286
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
287
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
288
|
+
},
|
|
289
|
+
requiredHook: {
|
|
290
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
291
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
deployed: { address: mockMailboxAddress, domainId: mockDomainId },
|
|
295
|
+
};
|
|
296
|
+
readMailboxStub.resolves(zeroAddressMailbox);
|
|
297
|
+
// ACT
|
|
298
|
+
const result = await coreReader.deriveCoreConfig(mockMailboxAddress);
|
|
299
|
+
// ASSERT
|
|
300
|
+
expect(result.owner).to.equal(mockOwner);
|
|
301
|
+
expect(result.defaultIsm).to.equal(ZERO_ADDRESS_HEX_32);
|
|
302
|
+
expect(result.defaultHook).to.equal(ZERO_ADDRESS_HEX_32);
|
|
303
|
+
expect(result.requiredHook).to.equal(ZERO_ADDRESS_HEX_32);
|
|
304
|
+
// Readers should NOT have been called
|
|
305
|
+
sinon.assert.notCalled(mockIsmReader.read);
|
|
306
|
+
sinon.assert.notCalled(mockHookReader.read);
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
//# 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,43 @@
|
|
|
1
|
+
import { ChainMetadataForAltVM } from '@recoillink/provider-sdk';
|
|
2
|
+
import { ISigner } from '@recoillink/provider-sdk/altvm';
|
|
3
|
+
import { ArtifactDeployed, ArtifactNew } from '@recoillink/provider-sdk/artifact';
|
|
4
|
+
import { ChainLookup } from '@recoillink/provider-sdk/chain';
|
|
5
|
+
import { DeployedMailboxAddress, DeployedMailboxArtifact, IRawMailboxArtifactManager, MailboxArtifactConfig } from '@recoillink/provider-sdk/mailbox';
|
|
6
|
+
import { AnnotatedTx, TxReceipt } from '@recoillink/provider-sdk/module';
|
|
7
|
+
import { DeployedValidatorAnnounceArtifact, IRawValidatorAnnounceArtifactManager } from '@recoillink/provider-sdk/validator-announce';
|
|
8
|
+
import { Logger } from '@recoillink/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
|
+
private getInitialHookArtifact;
|
|
27
|
+
create(artifact: ArtifactNew<MailboxArtifactConfig>): Promise<[
|
|
28
|
+
{
|
|
29
|
+
mailbox: DeployedMailboxArtifact;
|
|
30
|
+
validatorAnnounce: DeployedValidatorAnnounceArtifact | null;
|
|
31
|
+
},
|
|
32
|
+
TxReceipt[]
|
|
33
|
+
]>;
|
|
34
|
+
/**
|
|
35
|
+
* Returns mailbox update transactions for the caller to submit.
|
|
36
|
+
* Note: may perform on-chain writes as a side effect when sub-components
|
|
37
|
+
* (ISM, hooks) require fresh deployment via `create()`.
|
|
38
|
+
*/
|
|
39
|
+
update(expectedArtifact: ArtifactDeployed<MailboxArtifactConfig, DeployedMailboxAddress>): Promise<AnnotatedTx[]>;
|
|
40
|
+
private deployOrUpdateIsm;
|
|
41
|
+
private deployOrUpdateHook;
|
|
42
|
+
}
|
|
43
|
+
//# 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,EAGtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAEL,gBAAgB,EAChB,WAAW,EAMZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAc7D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EAEtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EACL,iCAAiC,EACjC,oCAAoC,EAErC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,MAAM,EAAmC,MAAM,mBAAmB,CAAC;AAK5E,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,mBAA4B,MAAM,EAAE,MAAM,CAEvC;IAEH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,YACE,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,EAS3D;IAED,OAAO,CAAC,sBAAsB;IAgBxB,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,CAqJA;IAED;;;;OAIG;IACG,MAAM,CACV,gBAAgB,EAAE,gBAAgB,CAChC,qBAAqB,EACrB,sBAAsB,CACvB,GACA,OAAO,CAAC,WAAW,EAAE,CAAC,CAkFxB;YAEa,iBAAiB;YA6BjB,kBAAkB;CAuCjC"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { ProtocolType, getProtocolProvider, } from '@recoillink/provider-sdk';
|
|
2
|
+
import { ArtifactState, isArtifactNew, isArtifactUnderived, toDeployedOrUndefined, } from '@recoillink/provider-sdk/artifact';
|
|
3
|
+
import { mergeHookArtifacts, } from '@recoillink/provider-sdk/hook';
|
|
4
|
+
import { assertIsmSupportedAsMailboxDefault, mergeIsmArtifacts, } from '@recoillink/provider-sdk/ism';
|
|
5
|
+
import { ZERO_ADDRESS_HEX_32, rootLogger } from '@recoillink/utils';
|
|
6
|
+
import { createHookWriter } from '../hook/hook-writer.js';
|
|
7
|
+
import { createIsmWriter } from '../ism/generic-ism-writer.js';
|
|
8
|
+
import { CoreArtifactReader } from './core-artifact-reader.js';
|
|
9
|
+
export function createCoreWriter(chainMetadata, chainLookup, signer) {
|
|
10
|
+
const protocolProvider = getProtocolProvider(chainMetadata.protocol);
|
|
11
|
+
const mailboxArtifactManager = protocolProvider.createMailboxArtifactManager(chainMetadata);
|
|
12
|
+
const validatorAnnounceArtifactManager = protocolProvider.createValidatorAnnounceArtifactManager(chainMetadata);
|
|
13
|
+
return new CoreWriter(mailboxArtifactManager, validatorAnnounceArtifactManager, chainMetadata, chainLookup, signer);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Orchestrates core deployment (mailbox, ISM, hooks, validator announce)
|
|
17
|
+
* using the Artifact API. Extends CoreArtifactReader for read().
|
|
18
|
+
*
|
|
19
|
+
* Does not implement ArtifactWriter<MailboxArtifactConfig, DeployedMailboxAddress>
|
|
20
|
+
* because create() returns a composite result (mailbox + validator announce) rather
|
|
21
|
+
* than a single [ArtifactDeployed, TxReceipt[]] tuple. The update() signature does
|
|
22
|
+
* conform to the standard pattern.
|
|
23
|
+
*/
|
|
24
|
+
export class CoreWriter extends CoreArtifactReader {
|
|
25
|
+
validatorAnnounceArtifactManager;
|
|
26
|
+
signer;
|
|
27
|
+
logger = rootLogger.child({
|
|
28
|
+
module: CoreWriter.name,
|
|
29
|
+
});
|
|
30
|
+
ismWriter;
|
|
31
|
+
constructor(mailboxArtifactManager, validatorAnnounceArtifactManager, chainMetadata, chainLookup, signer) {
|
|
32
|
+
super(mailboxArtifactManager, chainMetadata, chainLookup);
|
|
33
|
+
this.validatorAnnounceArtifactManager = validatorAnnounceArtifactManager;
|
|
34
|
+
this.signer = signer;
|
|
35
|
+
this.ismWriter = createIsmWriter(this.chainMetadata, this.chainLookup, this.signer);
|
|
36
|
+
}
|
|
37
|
+
getInitialHookArtifact(hookArtifact) {
|
|
38
|
+
if (this.chainMetadata.protocol === ProtocolType.Starknet &&
|
|
39
|
+
!isArtifactNew(hookArtifact)) {
|
|
40
|
+
return hookArtifact;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
44
|
+
deployed: { address: ZERO_ADDRESS_HEX_32 },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
async create(artifact) {
|
|
48
|
+
const { config } = artifact;
|
|
49
|
+
const allReceipts = [];
|
|
50
|
+
const chainName = this.chainMetadata.name;
|
|
51
|
+
assertIsmSupportedAsMailboxDefault(config.defaultIsm, `the default ISM of ${chainName}`);
|
|
52
|
+
this.logger.info(`Starting core deployment on ${chainName}`);
|
|
53
|
+
// Step 1: Deploy ISM if NEW
|
|
54
|
+
let onChainIsmArtifact;
|
|
55
|
+
if (isArtifactNew(config.defaultIsm)) {
|
|
56
|
+
const [deployed, ismReceipts] = await this.ismWriter.create(config.defaultIsm);
|
|
57
|
+
allReceipts.push(...ismReceipts);
|
|
58
|
+
onChainIsmArtifact = deployed;
|
|
59
|
+
this.logger.info(`Default ISM deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
onChainIsmArtifact = config.defaultIsm;
|
|
63
|
+
}
|
|
64
|
+
// Step 2: Create mailbox with the ISM plus temporary hook placeholders.
|
|
65
|
+
const mailboxWriter = this.mailboxArtifactManager.createWriter('mailbox', this.signer);
|
|
66
|
+
// Hooks require the mailbox address for deployment (circular dependency),
|
|
67
|
+
// so we create mailbox first, deploy hooks in Step 3, then update mailbox in Step 4.
|
|
68
|
+
// Most protocols accept zero hooks for this bootstrap step; the Starknet
|
|
69
|
+
// mailbox writer materializes a temporary noop hook when it sees zero hooks.
|
|
70
|
+
const initialMailboxArtifact = {
|
|
71
|
+
artifactState: ArtifactState.NEW,
|
|
72
|
+
config: {
|
|
73
|
+
owner: this.signer.getSignerAddress(), // Signer owns initially; transferred in Step 4
|
|
74
|
+
defaultIsm: onChainIsmArtifact,
|
|
75
|
+
defaultHook: this.getInitialHookArtifact(config.defaultHook),
|
|
76
|
+
requiredHook: this.getInitialHookArtifact(config.requiredHook),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const [deployedMailbox, mailboxReceipts] = await mailboxWriter.create(initialMailboxArtifact);
|
|
80
|
+
allReceipts.push(...mailboxReceipts);
|
|
81
|
+
const mailboxAddress = deployedMailbox.deployed.address;
|
|
82
|
+
this.logger.info(`Mailbox deployed at ${mailboxAddress} on ${chainName}`);
|
|
83
|
+
const hookWriter = createHookWriter(this.chainMetadata, this.chainLookup, this.signer, { mailbox: mailboxAddress });
|
|
84
|
+
// Step 3: Deploy hooks if NEW (hooks need mailbox address)
|
|
85
|
+
let onChainDefaultHookArtifact;
|
|
86
|
+
if (isArtifactNew(config.defaultHook)) {
|
|
87
|
+
const [deployed, hookReceipts] = await hookWriter.create(config.defaultHook);
|
|
88
|
+
allReceipts.push(...hookReceipts);
|
|
89
|
+
onChainDefaultHookArtifact = deployed;
|
|
90
|
+
this.logger.info(`Default hook deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
onChainDefaultHookArtifact = config.defaultHook;
|
|
94
|
+
}
|
|
95
|
+
let onChainRequiredHookArtifact;
|
|
96
|
+
if (isArtifactNew(config.requiredHook)) {
|
|
97
|
+
const [deployed, hookReceipts] = await hookWriter.create(config.requiredHook);
|
|
98
|
+
allReceipts.push(...hookReceipts);
|
|
99
|
+
onChainRequiredHookArtifact = deployed;
|
|
100
|
+
this.logger.info(`Required hook deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
onChainRequiredHookArtifact = config.requiredHook;
|
|
104
|
+
}
|
|
105
|
+
// Step 4: Update mailbox with hooks + transfer owner
|
|
106
|
+
const updatedMailboxArtifact = {
|
|
107
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
108
|
+
config: {
|
|
109
|
+
owner: config.owner,
|
|
110
|
+
defaultIsm: onChainIsmArtifact,
|
|
111
|
+
defaultHook: onChainDefaultHookArtifact,
|
|
112
|
+
requiredHook: onChainRequiredHookArtifact,
|
|
113
|
+
},
|
|
114
|
+
deployed: deployedMailbox.deployed,
|
|
115
|
+
};
|
|
116
|
+
const updateTxs = await mailboxWriter.update(updatedMailboxArtifact);
|
|
117
|
+
for (const tx of updateTxs) {
|
|
118
|
+
const receipt = await this.signer.sendAndConfirmTransaction(tx);
|
|
119
|
+
allReceipts.push(receipt);
|
|
120
|
+
}
|
|
121
|
+
// Step 5: Deploy validator announce (if supported by protocol)
|
|
122
|
+
let validatorAnnounceArtifact = null;
|
|
123
|
+
if (this.validatorAnnounceArtifactManager) {
|
|
124
|
+
const vaWriter = this.validatorAnnounceArtifactManager.createWriter('validatorAnnounce', this.signer);
|
|
125
|
+
const vaArtifact = {
|
|
126
|
+
artifactState: ArtifactState.NEW,
|
|
127
|
+
config: { mailboxAddress },
|
|
128
|
+
};
|
|
129
|
+
const [deployed, vaReceipts] = await vaWriter.create(vaArtifact);
|
|
130
|
+
allReceipts.push(...vaReceipts);
|
|
131
|
+
validatorAnnounceArtifact = deployed;
|
|
132
|
+
this.logger.info(`Validator announce deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.logger.info(`Validator announce not supported by protocol for ${chainName}`);
|
|
136
|
+
}
|
|
137
|
+
this.logger.info(`Core deployment complete on ${chainName}`);
|
|
138
|
+
return [
|
|
139
|
+
{
|
|
140
|
+
mailbox: updatedMailboxArtifact,
|
|
141
|
+
validatorAnnounce: validatorAnnounceArtifact,
|
|
142
|
+
},
|
|
143
|
+
allReceipts,
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Returns mailbox update transactions for the caller to submit.
|
|
148
|
+
* Note: may perform on-chain writes as a side effect when sub-components
|
|
149
|
+
* (ISM, hooks) require fresh deployment via `create()`.
|
|
150
|
+
*/
|
|
151
|
+
async update(expectedArtifact) {
|
|
152
|
+
const { config: expectedConfig, deployed } = expectedArtifact;
|
|
153
|
+
const { address: mailboxAddress } = deployed;
|
|
154
|
+
const updateTxs = [];
|
|
155
|
+
assertIsmSupportedAsMailboxDefault(expectedConfig.defaultIsm, `the default ISM of ${this.chainMetadata.name}`);
|
|
156
|
+
// Read actual state (fully expanded)
|
|
157
|
+
const currentArtifact = await this.read(mailboxAddress);
|
|
158
|
+
const currentConfig = currentArtifact.config;
|
|
159
|
+
// Extract current artifacts: DEPLOYED if expanded, undefined if UNDERIVED (zero-address)
|
|
160
|
+
// Throws if UNDERIVED with non-zero address (unexpected state)
|
|
161
|
+
const currentIsm = toDeployedOrUndefined(currentConfig.defaultIsm, 'defaultIsm');
|
|
162
|
+
const currentDefaultHook = toDeployedOrUndefined(currentConfig.defaultHook, 'defaultHook');
|
|
163
|
+
const currentRequiredHook = toDeployedOrUndefined(currentConfig.requiredHook, 'requiredHook');
|
|
164
|
+
// Update ISM
|
|
165
|
+
const { address: newIsmAddress, transactions: ismTxs } = await this.deployOrUpdateIsm(currentIsm, expectedConfig.defaultIsm);
|
|
166
|
+
updateTxs.push(...ismTxs);
|
|
167
|
+
// Update default hook
|
|
168
|
+
const { address: newDefaultHookAddress, transactions: defaultHookTxs } = await this.deployOrUpdateHook(currentDefaultHook, expectedConfig.defaultHook, mailboxAddress);
|
|
169
|
+
updateTxs.push(...defaultHookTxs);
|
|
170
|
+
// Update required hook
|
|
171
|
+
const { address: newRequiredHookAddress, transactions: requiredHookTxs } = await this.deployOrUpdateHook(currentRequiredHook, expectedConfig.requiredHook, mailboxAddress);
|
|
172
|
+
updateTxs.push(...requiredHookTxs);
|
|
173
|
+
const mailboxWriter = this.mailboxArtifactManager.createWriter('mailbox', this.signer);
|
|
174
|
+
const updatedMailboxArtifact = {
|
|
175
|
+
artifactState: ArtifactState.DEPLOYED,
|
|
176
|
+
config: {
|
|
177
|
+
owner: expectedConfig.owner,
|
|
178
|
+
defaultIsm: {
|
|
179
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
180
|
+
deployed: { address: newIsmAddress },
|
|
181
|
+
},
|
|
182
|
+
defaultHook: {
|
|
183
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
184
|
+
deployed: { address: newDefaultHookAddress },
|
|
185
|
+
},
|
|
186
|
+
requiredHook: {
|
|
187
|
+
artifactState: ArtifactState.UNDERIVED,
|
|
188
|
+
deployed: { address: newRequiredHookAddress },
|
|
189
|
+
},
|
|
190
|
+
contractVersion: expectedConfig.contractVersion,
|
|
191
|
+
},
|
|
192
|
+
deployed: currentArtifact.deployed,
|
|
193
|
+
};
|
|
194
|
+
const mailboxUpdateTxs = await mailboxWriter.update(updatedMailboxArtifact);
|
|
195
|
+
updateTxs.push(...mailboxUpdateTxs);
|
|
196
|
+
return updateTxs;
|
|
197
|
+
}
|
|
198
|
+
async deployOrUpdateIsm(currentIsmArtifact, expectedIsm) {
|
|
199
|
+
const chainName = this.chainMetadata.name;
|
|
200
|
+
// If expected is UNDERIVED (just an address reference), use as-is
|
|
201
|
+
if (isArtifactUnderived(expectedIsm)) {
|
|
202
|
+
return { address: expectedIsm.deployed.address, transactions: [] };
|
|
203
|
+
}
|
|
204
|
+
// Merge current with expected (preserves DEPLOYED state for unchanged nested ISMs)
|
|
205
|
+
const mergedArtifact = mergeIsmArtifacts(currentIsmArtifact, expectedIsm);
|
|
206
|
+
if (isArtifactNew(mergedArtifact)) {
|
|
207
|
+
const [deployed] = await this.ismWriter.create(mergedArtifact);
|
|
208
|
+
this.logger.info(`ISM deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
209
|
+
return { address: deployed.deployed.address, transactions: [] };
|
|
210
|
+
}
|
|
211
|
+
const updateTxs = await this.ismWriter.update(mergedArtifact);
|
|
212
|
+
return {
|
|
213
|
+
address: mergedArtifact.deployed.address,
|
|
214
|
+
transactions: updateTxs,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
async deployOrUpdateHook(currentHookArtifact, expectedHook, mailboxAddress) {
|
|
218
|
+
const chainName = this.chainMetadata.name;
|
|
219
|
+
// If expected is UNDERIVED (just an address reference), use as-is
|
|
220
|
+
if (isArtifactUnderived(expectedHook)) {
|
|
221
|
+
return { address: expectedHook.deployed.address, transactions: [] };
|
|
222
|
+
}
|
|
223
|
+
const hookWriter = createHookWriter(this.chainMetadata, this.chainLookup, this.signer, { mailbox: mailboxAddress });
|
|
224
|
+
// Merge current with expected
|
|
225
|
+
const mergedArtifact = mergeHookArtifacts(currentHookArtifact, expectedHook);
|
|
226
|
+
if (isArtifactNew(mergedArtifact)) {
|
|
227
|
+
const [deployed] = await hookWriter.create(mergedArtifact);
|
|
228
|
+
this.logger.info(`Hook deployed at ${deployed.deployed.address} on ${chainName}`);
|
|
229
|
+
return { address: deployed.deployed.address, transactions: [] };
|
|
230
|
+
}
|
|
231
|
+
const updateTxs = await hookWriter.update(mergedArtifact);
|
|
232
|
+
return {
|
|
233
|
+
address: mergedArtifact.deployed.address,
|
|
234
|
+
transactions: updateTxs,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=core-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-writer.js","sourceRoot":"","sources":["../../src/core/core-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-writer.test.d.ts","sourceRoot":"","sources":["../../src/core/core-writer.test.ts"],"names":[],"mappings":""}
|