@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.
Files changed (103) hide show
  1. package/LICENSE.md +193 -0
  2. package/dist/AltVMFileSubmitter.d.ts +12 -0
  3. package/dist/AltVMFileSubmitter.d.ts.map +1 -0
  4. package/dist/AltVMFileSubmitter.js +35 -0
  5. package/dist/AltVMFileSubmitter.js.map +1 -0
  6. package/dist/AltVMFileSubmitter.test.d.ts +2 -0
  7. package/dist/AltVMFileSubmitter.test.d.ts.map +1 -0
  8. package/dist/AltVMFileSubmitter.test.js +46 -0
  9. package/dist/AltVMFileSubmitter.test.js.map +1 -0
  10. package/dist/AltVMJsonRpcSubmitter.d.ts +2 -0
  11. package/dist/AltVMJsonRpcSubmitter.d.ts.map +1 -0
  12. package/dist/AltVMJsonRpcSubmitter.js +2 -0
  13. package/dist/AltVMJsonRpcSubmitter.js.map +1 -0
  14. package/dist/core/core-artifact-reader.d.ts +67 -0
  15. package/dist/core/core-artifact-reader.d.ts.map +1 -0
  16. package/dist/core/core-artifact-reader.js +118 -0
  17. package/dist/core/core-artifact-reader.js.map +1 -0
  18. package/dist/core/core-artifact-reader.test.d.ts +2 -0
  19. package/dist/core/core-artifact-reader.test.d.ts.map +1 -0
  20. package/dist/core/core-artifact-reader.test.js +310 -0
  21. package/dist/core/core-artifact-reader.test.js.map +1 -0
  22. package/dist/core/core-writer.d.ts +43 -0
  23. package/dist/core/core-writer.d.ts.map +1 -0
  24. package/dist/core/core-writer.js +238 -0
  25. package/dist/core/core-writer.js.map +1 -0
  26. package/dist/core/core-writer.test.d.ts +2 -0
  27. package/dist/core/core-writer.test.d.ts.map +1 -0
  28. package/dist/core/core-writer.test.js +1315 -0
  29. package/dist/core/core-writer.test.js.map +1 -0
  30. package/dist/fee/fee-reader.d.ts +25 -0
  31. package/dist/fee/fee-reader.d.ts.map +1 -0
  32. package/dist/fee/fee-reader.js +35 -0
  33. package/dist/fee/fee-reader.js.map +1 -0
  34. package/dist/fee/fee-writer.d.ts +31 -0
  35. package/dist/fee/fee-writer.d.ts.map +1 -0
  36. package/dist/fee/fee-writer.js +45 -0
  37. package/dist/fee/fee-writer.js.map +1 -0
  38. package/dist/hook/hook-reader.d.ts +41 -0
  39. package/dist/hook/hook-reader.d.ts.map +1 -0
  40. package/dist/hook/hook-reader.js +52 -0
  41. package/dist/hook/hook-reader.js.map +1 -0
  42. package/dist/hook/hook-writer.d.ts +101 -0
  43. package/dist/hook/hook-writer.d.ts.map +1 -0
  44. package/dist/hook/hook-writer.js +140 -0
  45. package/dist/hook/hook-writer.js.map +1 -0
  46. package/dist/hook/hook-writer.test.d.ts +2 -0
  47. package/dist/hook/hook-writer.test.d.ts.map +1 -0
  48. package/dist/hook/hook-writer.test.js +70 -0
  49. package/dist/hook/hook-writer.test.js.map +1 -0
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +17 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/ism/generic-ism-context.test.d.ts +2 -0
  55. package/dist/ism/generic-ism-context.test.d.ts.map +1 -0
  56. package/dist/ism/generic-ism-context.test.js +112 -0
  57. package/dist/ism/generic-ism-context.test.js.map +1 -0
  58. package/dist/ism/generic-ism-writer.d.ts +62 -0
  59. package/dist/ism/generic-ism-writer.d.ts.map +1 -0
  60. package/dist/ism/generic-ism-writer.js +100 -0
  61. package/dist/ism/generic-ism-writer.js.map +1 -0
  62. package/dist/ism/generic-ism.d.ts +43 -0
  63. package/dist/ism/generic-ism.d.ts.map +1 -0
  64. package/dist/ism/generic-ism.js +105 -0
  65. package/dist/ism/generic-ism.js.map +1 -0
  66. package/dist/ism/generic-ism.test.d.ts +2 -0
  67. package/dist/ism/generic-ism.test.d.ts.map +1 -0
  68. package/dist/ism/generic-ism.test.js +145 -0
  69. package/dist/ism/generic-ism.test.js.map +1 -0
  70. package/dist/ism/routing-ism.d.ts +21 -0
  71. package/dist/ism/routing-ism.d.ts.map +1 -0
  72. package/dist/ism/routing-ism.js +149 -0
  73. package/dist/ism/routing-ism.js.map +1 -0
  74. package/dist/protocol.d.ts +3 -0
  75. package/dist/protocol.d.ts.map +1 -0
  76. package/dist/protocol.js +38 -0
  77. package/dist/protocol.js.map +1 -0
  78. package/dist/protocol.test.d.ts +2 -0
  79. package/dist/protocol.test.d.ts.map +1 -0
  80. package/dist/protocol.test.js +14 -0
  81. package/dist/protocol.test.js.map +1 -0
  82. package/dist/utils/validation.d.ts +46 -0
  83. package/dist/utils/validation.d.ts.map +1 -0
  84. package/dist/utils/validation.js +132 -0
  85. package/dist/utils/validation.js.map +1 -0
  86. package/dist/utils/validation.test.d.ts +2 -0
  87. package/dist/utils/validation.test.d.ts.map +1 -0
  88. package/dist/utils/validation.test.js +160 -0
  89. package/dist/utils/validation.test.js.map +1 -0
  90. package/dist/warp/warp-reader.d.ts +57 -0
  91. package/dist/warp/warp-reader.d.ts.map +1 -0
  92. package/dist/warp/warp-reader.js +135 -0
  93. package/dist/warp/warp-reader.js.map +1 -0
  94. package/dist/warp/warp-writer.d.ts +67 -0
  95. package/dist/warp/warp-writer.d.ts.map +1 -0
  96. package/dist/warp/warp-writer.js +381 -0
  97. package/dist/warp/warp-writer.js.map +1 -0
  98. package/dist/warp/warp-writer.test.d.ts +2 -0
  99. package/dist/warp/warp-writer.test.d.ts.map +1 -0
  100. package/dist/warp/warp-writer.test.js +1855 -0
  101. package/dist/warp/warp-writer.test.js.map +1 -0
  102. package/package.json +54 -3
  103. package/README.md +0 -3
@@ -0,0 +1,381 @@
1
+ import { getProtocolProvider, } from '@recoillink/provider-sdk';
2
+ import { ArtifactState, isArtifactDeployed, isArtifactNew, isArtifactUnderived, } from '@recoillink/provider-sdk/artifact';
3
+ import { mergeFeeArtifacts, withFeeAssetConfig, } from '@recoillink/provider-sdk/fee';
4
+ import { mergeHookArtifacts, } from '@recoillink/provider-sdk/hook';
5
+ import { IsmArtifactResolutionOperation, assertRateLimitedIsmRecipientsUnset, mergeIsmArtifacts, resolveIsmArtifact, } from '@recoillink/provider-sdk/ism';
6
+ import { buildFeeReadContextFromWarpArtifactConfig, resolveFeeTokenFromWarpArtifactConfig, } from '@recoillink/provider-sdk/warp';
7
+ import { addressToBytes32, assert, eqAddress, isNullish, rootLogger, } from '@recoillink/utils';
8
+ import { createFeeWriter } from '../fee/fee-writer.js';
9
+ import { createHookWriter } from '../hook/hook-writer.js';
10
+ import { createIsmWriter } from '../ism/generic-ism-writer.js';
11
+ import { WarpTokenReader } from './warp-reader.js';
12
+ function warpRouterContext(address) {
13
+ return {
14
+ address,
15
+ toBytes32: () => addressToBytes32(address).toLowerCase(),
16
+ };
17
+ }
18
+ /**
19
+ * Factory function to create a WarpTokenWriter instance.
20
+ *
21
+ * @param chainMetadata Chain metadata for the target chain
22
+ * @param chainLookup Chain lookup interface for resolving chain names and domain IDs
23
+ * @param signer Signer interface for signing transactions
24
+ * @returns A WarpTokenWriter instance
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const writer = createWarpTokenWriter(chainMetadata, chainLookup, signer);
29
+ * const [deployed, receipts] = await writer.create(warpArtifact);
30
+ * ```
31
+ */
32
+ export function createWarpTokenWriter(chainMetadata, chainLookup, signer) {
33
+ const protocolProvider = getProtocolProvider(chainMetadata.protocol);
34
+ const artifactManager = protocolProvider.createWarpArtifactManager(chainMetadata);
35
+ return new WarpTokenWriter(artifactManager, chainMetadata, chainLookup, signer);
36
+ }
37
+ /**
38
+ * WarpTokenWriter handles creation and updates of warp tokens using the Artifact API.
39
+ * It delegates to protocol-specific artifact writers for individual warp token types.
40
+ *
41
+ * Key features:
42
+ * - Extends WarpTokenReader to inherit read() functionality
43
+ * - Works with pure Artifact API (WarpArtifactConfig)
44
+ * - Handles nested ISM deployment after warp token deployment
45
+ * - Delegates to typed writers from artifact manager for specific warp token types
46
+ * - Protocol-agnostic through artifact manager abstraction
47
+ */
48
+ export class WarpTokenWriter extends WarpTokenReader {
49
+ artifactManager;
50
+ chainMetadata;
51
+ chainLookup;
52
+ signer;
53
+ ismWriter;
54
+ hookWriterFactory;
55
+ constructor(artifactManager, chainMetadata, chainLookup, signer) {
56
+ super(artifactManager, chainMetadata, chainLookup);
57
+ this.artifactManager = artifactManager;
58
+ this.chainMetadata = chainMetadata;
59
+ this.chainLookup = chainLookup;
60
+ this.signer = signer;
61
+ this.ismWriter = createIsmWriter(chainMetadata, chainLookup, signer);
62
+ this.hookWriterFactory = (mailbox) => createHookWriter(chainMetadata, chainLookup, signer, { mailbox });
63
+ }
64
+ /**
65
+ * Creates a new warp token by deploying it on-chain.
66
+ * If the warp token has a new nested ISM artifact, deploys it after the
67
+ * router so its config can use the router address.
68
+ *
69
+ * @param artifact The warp token configuration to deploy
70
+ * @returns A tuple of [deployed artifact, transaction receipts]
71
+ */
72
+ async create(artifact) {
73
+ const { config } = artifact;
74
+ const allReceipts = [];
75
+ const signerAddress = this.signer.getSignerAddress();
76
+ if (config.hook) {
77
+ assert(config.mailbox, 'Mailbox is required when hook configuration is provided');
78
+ }
79
+ const configuredIsm = config.interchainSecurityModule;
80
+ if (configuredIsm) {
81
+ assertRateLimitedIsmRecipientsUnset(configuredIsm, this.chainMetadata.name);
82
+ }
83
+ // Deploy Hook if configured as a NEW artifact
84
+ let onChainHookArtifact;
85
+ if (config.hook) {
86
+ if (!this.artifactManager.supportsHookUpdates()) {
87
+ rootLogger.warn('Hook configuration is not supported for this protocol. Hook configuration will be ignored.');
88
+ }
89
+ else {
90
+ const hookWriter = this.hookWriterFactory(config.mailbox);
91
+ if (isArtifactNew(config.hook)) {
92
+ const [deployedHook, hookReceipts] = await hookWriter.create(config.hook);
93
+ allReceipts.push(...hookReceipts);
94
+ onChainHookArtifact = deployedHook;
95
+ }
96
+ else {
97
+ onChainHookArtifact = config.hook;
98
+ }
99
+ }
100
+ }
101
+ // Keep the signer as the temporary owner while post-create configuration
102
+ // is attached. Protocol writers transfer ownership during create, which
103
+ // would otherwise prevent this signer from submitting the deferred update.
104
+ const rawArtifact = {
105
+ artifactState: ArtifactState.NEW,
106
+ config: {
107
+ ...config,
108
+ owner: signerAddress,
109
+ interchainSecurityModule: undefined,
110
+ hook: onChainHookArtifact,
111
+ fee: undefined,
112
+ },
113
+ };
114
+ const writer = this.artifactManager.createWriter(config.type, this.signer);
115
+ const [deployed, tokenReceipts] = await writer.create(rawArtifact);
116
+ allReceipts.push(...tokenReceipts);
117
+ // Deploy / resolve the ISM now that the warp address is known.
118
+ let onChainIsmArtifact;
119
+ if (configuredIsm) {
120
+ if (isArtifactUnderived(configuredIsm)) {
121
+ onChainIsmArtifact = configuredIsm;
122
+ }
123
+ else {
124
+ const resolvedIsm = resolveIsmArtifact(configuredIsm, {
125
+ operation: IsmArtifactResolutionOperation.CREATE,
126
+ warpRouter: warpRouterContext(deployed.deployed.address),
127
+ context: this.chainMetadata.name,
128
+ });
129
+ if (isArtifactNew(resolvedIsm)) {
130
+ const [deployedIsm, ismReceipts] = await this.ismWriter.create(resolvedIsm);
131
+ allReceipts.push(...ismReceipts);
132
+ onChainIsmArtifact = deployedIsm;
133
+ }
134
+ else {
135
+ onChainIsmArtifact = resolvedIsm;
136
+ }
137
+ }
138
+ }
139
+ // Deploy / resolve the fee now that the warp is on-chain and its
140
+ // settlement asset is known.
141
+ let onChainFeeArtifact;
142
+ if (config.fee) {
143
+ const feeWriter = createFeeWriter(this.chainMetadata, this.signer, {
144
+ knownRoutersPerDomain: buildFeeReadContextFromWarpArtifactConfig(deployed.config).knownRoutersPerDomain,
145
+ });
146
+ if (!feeWriter) {
147
+ rootLogger.warn('Fee programs are not supported for this protocol. Fee configuration will be ignored.');
148
+ }
149
+ else if (isArtifactNew(config.fee)) {
150
+ const feeAsset = resolveFeeTokenFromWarpArtifactConfig(deployed.config);
151
+ const feeArtifactToCreate = {
152
+ artifactState: ArtifactState.NEW,
153
+ config: withFeeAssetConfig(config.fee.config, feeAsset),
154
+ };
155
+ const [deployedFee, feeReceipts] = await feeWriter.create(feeArtifactToCreate);
156
+ allReceipts.push(...feeReceipts);
157
+ onChainFeeArtifact = deployedFee;
158
+ }
159
+ else {
160
+ onChainFeeArtifact = config.fee;
161
+ }
162
+ }
163
+ const ismToAttach = onChainIsmArtifact
164
+ ? {
165
+ artifactState: ArtifactState.UNDERIVED,
166
+ deployed: { address: onChainIsmArtifact.deployed.address },
167
+ }
168
+ : undefined;
169
+ const feeToAttach = onChainFeeArtifact
170
+ ? {
171
+ artifactState: ArtifactState.UNDERIVED,
172
+ deployed: { address: onChainFeeArtifact.deployed.address },
173
+ }
174
+ : undefined;
175
+ const hookToAttach = onChainHookArtifact
176
+ ? {
177
+ artifactState: ArtifactState.UNDERIVED,
178
+ deployed: { address: onChainHookArtifact.deployed.address },
179
+ }
180
+ : undefined;
181
+ // Attach deferred artifacts and transfer ownership through one regular
182
+ // update. Protocol writers must place their ownership transaction last.
183
+ if (onChainIsmArtifact ||
184
+ onChainFeeArtifact ||
185
+ !eqAddress(signerAddress, config.owner)) {
186
+ const attachTxs = await this.update({
187
+ artifactState: ArtifactState.DEPLOYED,
188
+ config: {
189
+ ...config,
190
+ interchainSecurityModule: ismToAttach,
191
+ hook: hookToAttach,
192
+ fee: feeToAttach,
193
+ },
194
+ deployed: deployed.deployed,
195
+ });
196
+ for (const tx of attachTxs) {
197
+ const receipt = await this.signer.sendAndConfirmTransaction(tx);
198
+ allReceipts.push(receipt);
199
+ }
200
+ }
201
+ return [
202
+ {
203
+ artifactState: ArtifactState.DEPLOYED,
204
+ config: {
205
+ ...deployed.config,
206
+ owner: config.owner,
207
+ interchainSecurityModule: onChainIsmArtifact,
208
+ hook: onChainHookArtifact,
209
+ fee: onChainFeeArtifact,
210
+ },
211
+ deployed: deployed.deployed,
212
+ },
213
+ allReceipts,
214
+ ];
215
+ }
216
+ /**
217
+ * Updates an existing warp token to match the desired configuration.
218
+ * Warp tokens are mutable - supports remote router enrollment/unenrollment,
219
+ * ISM updates, and owner changes.
220
+ *
221
+ * The protocol-specific writer will read the current on-chain state and compare
222
+ * with the expected config to generate the necessary update transactions.
223
+ *
224
+ * @param artifact The desired warp token state (must include deployed address)
225
+ * @returns Array of transactions needed to perform the update
226
+ * @throws Error if the token type cannot be changed (e.g., collateral -> synthetic)
227
+ */
228
+ async update(artifact) {
229
+ const { config, deployed } = artifact;
230
+ const expectedHook = config.hook;
231
+ if (expectedHook && !isArtifactUnderived(expectedHook)) {
232
+ assert(config.mailbox, 'Mailbox is required when hook configuration is provided');
233
+ }
234
+ // Read current on-chain state to verify token type hasn't changed
235
+ const currentArtifact = await this.read(deployed.address);
236
+ assert(currentArtifact.config.type === config.type, `Cannot change warp token type from '${currentArtifact.config.type}' to '${config.type}'. ` +
237
+ `Token type is immutable after deployment.`);
238
+ assert(isNullish(currentArtifact.config.interchainSecurityModule) ||
239
+ isArtifactDeployed(currentArtifact.config.interchainSecurityModule), `Expected Warp Reader to expand the ISM config`);
240
+ assert(isNullish(currentArtifact.config.hook) ||
241
+ isArtifactDeployed(currentArtifact.config.hook), `Expected Warp Reader to expand the Hook config`);
242
+ assert(isNullish(currentArtifact.config.fee) ||
243
+ isArtifactDeployed(currentArtifact.config.fee), `Expected Warp Reader to expand the Fee config`);
244
+ const updateTxs = [];
245
+ // Resolve ISM updates
246
+ const expectedIsm = config.interchainSecurityModule;
247
+ const currentIsm = currentArtifact.config.interchainSecurityModule;
248
+ let onChainIsmArtifact;
249
+ if (expectedIsm && !isArtifactUnderived(expectedIsm)) {
250
+ // Resolve before merging: mergeIsmArtifacts returns a compositeIsm's
251
+ // expected config verbatim, so a router-derived recipient has to be in
252
+ // place already for both the NEW and the DEPLOYED branch below.
253
+ const resolvedIsm = resolveIsmArtifact(expectedIsm, {
254
+ operation: IsmArtifactResolutionOperation.UPDATE,
255
+ warpRouter: warpRouterContext(deployed.address),
256
+ context: this.chainMetadata.name,
257
+ });
258
+ // NEW or DEPLOYED: Merge with current and decide deploy vs update
259
+ const mergedIsmConfig = mergeIsmArtifacts(currentIsm, resolvedIsm);
260
+ if (isArtifactNew(mergedIsmConfig)) {
261
+ // Deploy new ISM
262
+ const [deployed] = await this.ismWriter.create(mergedIsmConfig);
263
+ onChainIsmArtifact = {
264
+ artifactState: ArtifactState.UNDERIVED,
265
+ deployed: { address: deployed.deployed.address },
266
+ };
267
+ }
268
+ else if (isArtifactDeployed(mergedIsmConfig)) {
269
+ // DEPLOYED: update existing ISM (or reuse if unchanged)
270
+ const txs = await this.ismWriter.update(mergedIsmConfig);
271
+ updateTxs.push(...txs);
272
+ onChainIsmArtifact = {
273
+ artifactState: ArtifactState.UNDERIVED,
274
+ deployed: { address: mergedIsmConfig.deployed.address },
275
+ };
276
+ }
277
+ }
278
+ else {
279
+ onChainIsmArtifact = expectedIsm;
280
+ }
281
+ // Resolve Hook updates
282
+ const currentHook = currentArtifact.config.hook;
283
+ let onChainHookArtifact;
284
+ if (expectedHook && !isArtifactUnderived(expectedHook)) {
285
+ if (!this.artifactManager.supportsHookUpdates()) {
286
+ rootLogger.warn('Hook updates are not supported for this protocol. Hook configuration will be ignored.');
287
+ onChainHookArtifact = currentHook;
288
+ }
289
+ else {
290
+ const hookWriter = this.hookWriterFactory(config.mailbox);
291
+ // NEW or DEPLOYED: Merge with current and decide deploy vs update
292
+ const mergedHookConfig = mergeHookArtifacts(currentHook, expectedHook);
293
+ if (isArtifactNew(mergedHookConfig)) {
294
+ // Deploy new Hook
295
+ const [deployed] = await hookWriter.create(mergedHookConfig);
296
+ onChainHookArtifact = {
297
+ artifactState: ArtifactState.UNDERIVED,
298
+ deployed: { address: deployed.deployed.address },
299
+ };
300
+ }
301
+ else if (isArtifactDeployed(mergedHookConfig)) {
302
+ // DEPLOYED: update existing Hook (or reuse if unchanged)
303
+ const txs = await hookWriter.update(mergedHookConfig);
304
+ updateTxs.push(...txs);
305
+ onChainHookArtifact = {
306
+ artifactState: ArtifactState.UNDERIVED,
307
+ deployed: { address: mergedHookConfig.deployed.address },
308
+ };
309
+ }
310
+ }
311
+ }
312
+ else {
313
+ onChainHookArtifact = expectedHook;
314
+ }
315
+ // Resolve Fee updates
316
+ const expectedFee = config.fee;
317
+ const currentFee = currentArtifact.config.fee;
318
+ let onChainFeeArtifact;
319
+ if (expectedFee && !isArtifactUnderived(expectedFee)) {
320
+ const feeContext = buildFeeReadContextFromWarpArtifactConfig(config, currentArtifact.config);
321
+ const feeWriter = createFeeWriter(this.chainMetadata, this.signer, feeContext);
322
+ if (!feeWriter) {
323
+ rootLogger.warn('Fee programs are not supported for this protocol. Fee configuration will be ignored.');
324
+ onChainFeeArtifact = currentFee;
325
+ }
326
+ else {
327
+ const mergedFeeConfig = mergeFeeArtifacts(currentFee, expectedFee);
328
+ // Prefer the freshly-read warp asset (synthetic warps populate it
329
+ // post-deploy), falling back to the expected warp config when the
330
+ // current read doesn't carry one.
331
+ const feeAsset = resolveFeeTokenFromWarpArtifactConfig(currentArtifact.config) ??
332
+ resolveFeeTokenFromWarpArtifactConfig(config);
333
+ const mergedConfigWithAsset = withFeeAssetConfig(mergedFeeConfig.config, feeAsset);
334
+ if (isArtifactNew(mergedFeeConfig)) {
335
+ const feeArtifactToCreate = {
336
+ artifactState: ArtifactState.NEW,
337
+ config: mergedConfigWithAsset,
338
+ };
339
+ const [deployedFee] = await feeWriter.create(feeArtifactToCreate);
340
+ onChainFeeArtifact = {
341
+ artifactState: ArtifactState.UNDERIVED,
342
+ deployed: { address: deployedFee.deployed.address },
343
+ };
344
+ }
345
+ else if (isArtifactDeployed(mergedFeeConfig)) {
346
+ const feeArtifactToUpdate = {
347
+ artifactState: ArtifactState.DEPLOYED,
348
+ config: mergedConfigWithAsset,
349
+ deployed: mergedFeeConfig.deployed,
350
+ };
351
+ const txs = await feeWriter.update(feeArtifactToUpdate);
352
+ updateTxs.push(...txs);
353
+ onChainFeeArtifact = {
354
+ artifactState: ArtifactState.UNDERIVED,
355
+ deployed: { address: mergedFeeConfig.deployed.address },
356
+ };
357
+ }
358
+ }
359
+ }
360
+ else {
361
+ onChainFeeArtifact = expectedFee;
362
+ }
363
+ // Build raw artifact with flattened ISM, Hook, and Fee references
364
+ const rawArtifact = {
365
+ artifactState: ArtifactState.DEPLOYED,
366
+ config: {
367
+ ...config,
368
+ interchainSecurityModule: onChainIsmArtifact,
369
+ hook: onChainHookArtifact,
370
+ fee: onChainFeeArtifact,
371
+ },
372
+ deployed,
373
+ };
374
+ // Delegate to protocol-specific writer which will read current state and compare
375
+ const writer = this.artifactManager.createWriter(config.type, this.signer);
376
+ const warpUpdateTxs = await writer.update(rawArtifact);
377
+ updateTxs.push(...warpUpdateTxs);
378
+ return updateTxs;
379
+ }
380
+ }
381
+ //# sourceMappingURL=warp-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-writer.js","sourceRoot":"","sources":["../../src/warp/warp-writer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=warp-writer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warp-writer.test.d.ts","sourceRoot":"","sources":["../../src/warp/warp-writer.test.ts"],"names":[],"mappings":""}