@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,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 @@
|
|
|
1
|
+
{"version":3,"file":"warp-writer.test.d.ts","sourceRoot":"","sources":["../../src/warp/warp-writer.test.ts"],"names":[],"mappings":""}
|