@layerzerolabs/test-utils-stellar 0.2.122

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 (73) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +108 -0
  3. package/dist/4UKUSHEU.js +30 -0
  4. package/dist/4UKUSHEU.js.map +1 -0
  5. package/dist/7DZ4SVEO.js +46 -0
  6. package/dist/7DZ4SVEO.js.map +1 -0
  7. package/dist/CYINPPER.js +293 -0
  8. package/dist/CYINPPER.js.map +1 -0
  9. package/dist/DNRE4ENZ.js +56 -0
  10. package/dist/DNRE4ENZ.js.map +1 -0
  11. package/dist/GAGBEOCZ.js +25 -0
  12. package/dist/GAGBEOCZ.js.map +1 -0
  13. package/dist/PMDPSIA2.js +149 -0
  14. package/dist/PMDPSIA2.js.map +1 -0
  15. package/dist/TYAJMKGY.js +183 -0
  16. package/dist/TYAJMKGY.js.map +1 -0
  17. package/dist/VRABOZPX.js +364 -0
  18. package/dist/VRABOZPX.js.map +1 -0
  19. package/dist/VUOMXK5T.js +6 -0
  20. package/dist/VUOMXK5T.js.map +1 -0
  21. package/dist/ZWKXKZVT.js +394 -0
  22. package/dist/ZWKXKZVT.js.map +1 -0
  23. package/dist/client.d.ts +17 -0
  24. package/dist/client.d.ts.map +1 -0
  25. package/dist/client.js +4 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/deploy.d.ts +43 -0
  28. package/dist/deploy.d.ts.map +1 -0
  29. package/dist/deploy.js +4 -0
  30. package/dist/deploy.js.map +1 -0
  31. package/dist/env.d.ts +45 -0
  32. package/dist/env.d.ts.map +1 -0
  33. package/dist/env.js +5 -0
  34. package/dist/env.js.map +1 -0
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +12 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/localnet-global-setup.d.ts +7 -0
  40. package/dist/localnet-global-setup.d.ts.map +1 -0
  41. package/dist/localnet-global-setup.js +6 -0
  42. package/dist/localnet-global-setup.js.map +1 -0
  43. package/dist/localnet.d.ts +37 -0
  44. package/dist/localnet.d.ts.map +1 -0
  45. package/dist/localnet.js +5 -0
  46. package/dist/localnet.js.map +1 -0
  47. package/dist/protocol-global-setup.d.ts +58 -0
  48. package/dist/protocol-global-setup.d.ts.map +1 -0
  49. package/dist/protocol-global-setup.js +7 -0
  50. package/dist/protocol-global-setup.js.map +1 -0
  51. package/dist/scan.d.ts +59 -0
  52. package/dist/scan.d.ts.map +1 -0
  53. package/dist/scan.js +4 -0
  54. package/dist/scan.js.map +1 -0
  55. package/dist/secp256k1.d.ts +23 -0
  56. package/dist/secp256k1.d.ts.map +1 -0
  57. package/dist/secp256k1.js +4 -0
  58. package/dist/secp256k1.js.map +1 -0
  59. package/dist/utils.d.ts +54 -0
  60. package/dist/utils.d.ts.map +1 -0
  61. package/dist/utils.js +5 -0
  62. package/dist/utils.js.map +1 -0
  63. package/package.json +50 -0
  64. package/src/client.ts +37 -0
  65. package/src/deploy.ts +316 -0
  66. package/src/env.ts +104 -0
  67. package/src/index.ts +40 -0
  68. package/src/localnet-global-setup.ts +30 -0
  69. package/src/localnet.ts +406 -0
  70. package/src/protocol-global-setup.ts +747 -0
  71. package/src/scan.ts +255 -0
  72. package/src/secp256k1.ts +59 -0
  73. package/src/utils.ts +642 -0
@@ -0,0 +1,394 @@
1
+ import { createClient } from './GAGBEOCZ.js';
2
+ import { startStellarLocalnet, stopStellarLocalnet } from './CYINPPER.js';
3
+ import { uploadWasm, deployContract } from './TYAJMKGY.js';
4
+ import { __name } from './VUOMXK5T.js';
5
+ import { rpc } from '@stellar/stellar-sdk';
6
+ import { readFileSync } from 'fs';
7
+ import path from 'path';
8
+
9
+ function getProtocolClientConstructor(client, moduleName) {
10
+ if (typeof client !== "function") {
11
+ throw new TypeError(`${moduleName}.Client must be a generated contract client constructor`);
12
+ }
13
+ return client;
14
+ }
15
+ __name(getProtocolClientConstructor, "getProtocolClientConstructor");
16
+ function getDeployableProtocolClient(client, moduleName) {
17
+ if (typeof client !== "function" || !("deploy" in client) || typeof client.deploy !== "function") {
18
+ throw new TypeError(`${moduleName}.Client must expose a deploy method`);
19
+ }
20
+ return client;
21
+ }
22
+ __name(getDeployableProtocolClient, "getDeployableProtocolClient");
23
+ function createProtocolClient(env, client, contractId, moduleName) {
24
+ return createClient(env, getProtocolClientConstructor(client, moduleName), contractId);
25
+ }
26
+ __name(createProtocolClient, "createProtocolClient");
27
+ async function uploadAllWasms(env, wasmDir) {
28
+ const server = new rpc.Server(env.RPC_URL, {
29
+ allowHttp: true
30
+ });
31
+ const wasmFiles = {
32
+ endpoint: "endpoint_v2.wasm",
33
+ treasury: "treasury.wasm",
34
+ uln302: "uln302.wasm",
35
+ sml: "simple_message_lib.wasm",
36
+ priceFeed: "price_feed.wasm",
37
+ executorFeeLib: "executor_fee_lib.wasm",
38
+ dvnFeeLib: "dvn_fee_lib.wasm",
39
+ dvn: "dvn.wasm",
40
+ executorHelper: "executor_helper.wasm",
41
+ executor: "executor.wasm"
42
+ };
43
+ const hashes = {};
44
+ for (const [name, file] of Object.entries(wasmFiles)) {
45
+ const wasmBuffer = readFileSync(path.join(wasmDir, file));
46
+ console.log(`\u{1F4E4} Uploading ${name} WASM (${(wasmBuffer.length / 1024).toFixed(1)} KB)...`);
47
+ hashes[name] = await uploadWasm(env, wasmBuffer, env.DEFAULT_DEPLOYER, server);
48
+ }
49
+ return hashes;
50
+ }
51
+ __name(uploadAllWasms, "uploadAllWasms");
52
+ async function deployChainContracts(env, protocol, eid, chainLabel, deployer, wasmDir, wasmHashes) {
53
+ const addresses = {
54
+ eid,
55
+ endpointV2: "",
56
+ uln302: "",
57
+ sml: "",
58
+ treasury: "",
59
+ executor: "",
60
+ executorHelper: "",
61
+ executorFeeLib: "",
62
+ priceFeed: "",
63
+ dvnFeeLib: "",
64
+ dvn: ""
65
+ };
66
+ console.log(`\u{1F680} [${chainLabel}] Deploying Endpoint (EID: ${eid})...`);
67
+ const deployedEndpoint = await deployContract(env, getDeployableProtocolClient(protocol.endpoint.Client, "endpoint"), path.join(wasmDir, "endpoint_v2.wasm"), {
68
+ eid,
69
+ owner: env.DEFAULT_DEPLOYER.publicKey(),
70
+ native_token: env.NATIVE_TOKEN_ADDRESS
71
+ }, deployer, {
72
+ wasmHash: wasmHashes.endpoint
73
+ });
74
+ addresses.endpointV2 = deployedEndpoint.options.contractId;
75
+ console.log(`\u2705 [${chainLabel}] Endpoint deployed:`, addresses.endpointV2);
76
+ console.log(`\u{1F680} [${chainLabel}] Deploying Treasury...`);
77
+ const deployedTreasury = await deployContract(env, getDeployableProtocolClient(protocol.treasury.Client, "treasury"), path.join(wasmDir, "treasury.wasm"), {
78
+ owner: env.DEFAULT_DEPLOYER.publicKey()
79
+ }, deployer, {
80
+ wasmHash: wasmHashes.treasury
81
+ });
82
+ addresses.treasury = deployedTreasury.options.contractId;
83
+ console.log(`\u2705 [${chainLabel}] Treasury deployed:`, addresses.treasury);
84
+ console.log(`\u{1F680} [${chainLabel}] Deploying ULN302...`);
85
+ const deployedUln302 = await deployContract(env, getDeployableProtocolClient(protocol.uln302.Client, "uln302"), path.join(wasmDir, "uln302.wasm"), {
86
+ owner: env.DEFAULT_DEPLOYER.publicKey(),
87
+ endpoint: addresses.endpointV2,
88
+ treasury: addresses.treasury
89
+ }, deployer, {
90
+ wasmHash: wasmHashes.uln302
91
+ });
92
+ addresses.uln302 = deployedUln302.options.contractId;
93
+ console.log(`\u2705 [${chainLabel}] ULN302 deployed:`, addresses.uln302);
94
+ console.log(`\u{1F680} [${chainLabel}] Deploying SimpleMessageLib...`);
95
+ const deployedSml = await deployContract(env, getDeployableProtocolClient(protocol.sml.Client, "sml"), path.join(wasmDir, "simple_message_lib.wasm"), {
96
+ owner: env.DEFAULT_DEPLOYER.publicKey(),
97
+ endpoint: addresses.endpointV2,
98
+ fee_recipient: env.DEFAULT_DEPLOYER.publicKey()
99
+ }, deployer, {
100
+ wasmHash: wasmHashes.sml
101
+ });
102
+ addresses.sml = deployedSml.options.contractId;
103
+ console.log(`\u2705 [${chainLabel}] SimpleMessageLib deployed:`, addresses.sml);
104
+ console.log(`\u{1F680} [${chainLabel}] Deploying Price Feed...`);
105
+ const deployedPriceFeed = await deployContract(env, getDeployableProtocolClient(protocol.priceFeed.Client, "priceFeed"), path.join(wasmDir, "price_feed.wasm"), {
106
+ owner: env.DEFAULT_DEPLOYER.publicKey(),
107
+ price_updater: env.DEFAULT_DEPLOYER.publicKey()
108
+ }, deployer, {
109
+ wasmHash: wasmHashes.priceFeed
110
+ });
111
+ addresses.priceFeed = deployedPriceFeed.options.contractId;
112
+ console.log(`\u2705 [${chainLabel}] Price Feed deployed:`, addresses.priceFeed);
113
+ console.log(`\u{1F680} [${chainLabel}] Deploying Executor Fee Lib...`);
114
+ const deployedExecutorFeeLib = await deployContract(env, getDeployableProtocolClient(protocol.executorFeeLib.Client, "executorFeeLib"), path.join(wasmDir, "executor_fee_lib.wasm"), {
115
+ owner: env.DEFAULT_DEPLOYER.publicKey()
116
+ }, deployer, {
117
+ wasmHash: wasmHashes.executorFeeLib
118
+ });
119
+ addresses.executorFeeLib = deployedExecutorFeeLib.options.contractId;
120
+ console.log(`\u2705 [${chainLabel}] Executor Fee Lib deployed:`, addresses.executorFeeLib);
121
+ console.log(`\u{1F680} [${chainLabel}] Deploying DVN Fee Lib...`);
122
+ const deployedDvnFeeLib = await deployContract(env, getDeployableProtocolClient(protocol.dvnFeeLib.Client, "dvnFeeLib"), path.join(wasmDir, "dvn_fee_lib.wasm"), {
123
+ owner: env.DEFAULT_DEPLOYER.publicKey()
124
+ }, deployer, {
125
+ wasmHash: wasmHashes.dvnFeeLib
126
+ });
127
+ addresses.dvnFeeLib = deployedDvnFeeLib.options.contractId;
128
+ console.log(`\u2705 [${chainLabel}] DVN Fee Lib deployed:`, addresses.dvnFeeLib);
129
+ console.log(`\u{1F680} [${chainLabel}] Deploying DVN...`);
130
+ const deployedDvn = await deployContract(env, getDeployableProtocolClient(protocol.dvn.Client, "dvn"), path.join(wasmDir, "dvn.wasm"), {
131
+ vid: env.DVN_VID,
132
+ signers: [
133
+ env.DVN_SIGNER.ethAddress
134
+ ],
135
+ threshold: 1,
136
+ admins: [
137
+ env.DEFAULT_DEPLOYER.publicKey()
138
+ ],
139
+ supported_msglibs: [
140
+ addresses.uln302
141
+ ],
142
+ price_feed: addresses.priceFeed,
143
+ default_multiplier_bps: 1e4,
144
+ worker_fee_lib: addresses.dvnFeeLib,
145
+ deposit_address: env.DEFAULT_DEPLOYER.publicKey()
146
+ }, deployer, {
147
+ wasmHash: wasmHashes.dvn
148
+ });
149
+ addresses.dvn = deployedDvn.options.contractId;
150
+ console.log(`\u2705 [${chainLabel}] DVN deployed:`, addresses.dvn);
151
+ console.log(`\u{1F680} [${chainLabel}] Deploying Executor Helper...`);
152
+ const deployedExecutorHelper = await deployContract(env, getDeployableProtocolClient(protocol.executorHelper.Client, "executorHelper"), path.join(wasmDir, "executor_helper.wasm"), void 0, deployer, {
153
+ wasmHash: wasmHashes.executorHelper
154
+ });
155
+ addresses.executorHelper = deployedExecutorHelper.options.contractId;
156
+ console.log(`\u2705 [${chainLabel}] Executor Helper deployed:`, addresses.executorHelper);
157
+ console.log(`\u{1F680} [${chainLabel}] Deploying Executor...`);
158
+ const deployedExecutor = await deployContract(env, getDeployableProtocolClient(protocol.executor.Client, "executor"), path.join(wasmDir, "executor.wasm"), {
159
+ owner: env.DEFAULT_DEPLOYER.publicKey(),
160
+ endpoint: addresses.endpointV2,
161
+ admins: [
162
+ env.EXECUTOR_ADMIN.publicKey(),
163
+ env.DEFAULT_DEPLOYER.publicKey()
164
+ ],
165
+ message_libs: [
166
+ addresses.uln302,
167
+ addresses.sml
168
+ ],
169
+ price_feed: addresses.priceFeed,
170
+ default_multiplier_bps: 1e4,
171
+ worker_fee_lib: addresses.executorFeeLib,
172
+ deposit_address: env.DEFAULT_DEPLOYER.publicKey()
173
+ }, deployer, {
174
+ wasmHash: wasmHashes.executor
175
+ });
176
+ addresses.executor = deployedExecutor.options.contractId;
177
+ console.log(`\u2705 [${chainLabel}] Executor deployed:`, addresses.executor);
178
+ return addresses;
179
+ }
180
+ __name(deployChainContracts, "deployChainContracts");
181
+ async function initChainClients(env, protocol, addresses, chainLabel) {
182
+ console.log(`\u{1F680} [${chainLabel}] Registering Executor Helper with Executor...`);
183
+ const executorClient = createProtocolClient(env, protocol.executor.Client, addresses.executor, "executor");
184
+ await (await executorClient.set_executor_helper({
185
+ helper: addresses.executorHelper,
186
+ allowed_functions: [
187
+ "execute",
188
+ "compose"
189
+ ]
190
+ })).signAndSend();
191
+ console.log(`\u2705 [${chainLabel}] Executor Helper registered`);
192
+ const clients = {
193
+ endpointClient: createProtocolClient(env, protocol.endpoint.Client, addresses.endpointV2, "endpoint"),
194
+ uln302Client: createProtocolClient(env, protocol.uln302.Client, addresses.uln302, "uln302"),
195
+ smlClient: createProtocolClient(env, protocol.sml.Client, addresses.sml, "sml"),
196
+ treasuryClient: createProtocolClient(env, protocol.treasury.Client, addresses.treasury, "treasury"),
197
+ executorClient,
198
+ executorHelperClient: createProtocolClient(env, protocol.executorHelper.Client, addresses.executorHelper, "executorHelper"),
199
+ executorFeeLibClient: createProtocolClient(env, protocol.executorFeeLib.Client, addresses.executorFeeLib, "executorFeeLib"),
200
+ priceFeedClient: createProtocolClient(env, protocol.priceFeed.Client, addresses.priceFeed, "priceFeed"),
201
+ dvnFeeLibClient: createProtocolClient(env, protocol.dvnFeeLib.Client, addresses.dvnFeeLib, "dvnFeeLib"),
202
+ dvnClient: createProtocolClient(env, protocol.dvn.Client, addresses.dvn, "dvn")
203
+ };
204
+ return {
205
+ addresses,
206
+ clients
207
+ };
208
+ }
209
+ __name(initChainClients, "initChainClients");
210
+ async function wireChainContracts(env, chain, otherChain, chainLabel) {
211
+ const { addresses, clients } = chain;
212
+ const { endpointClient, uln302Client, priceFeedClient, executorClient, dvnClient } = clients;
213
+ const thisEid = addresses.eid;
214
+ const otherEid = otherChain.addresses.eid;
215
+ console.log(`
216
+ \u{1F517} [${chainLabel}] Wiring protocol contracts (EID: ${thisEid} \u2194 ${otherEid})...`);
217
+ await (await endpointClient.register_library({
218
+ new_lib: addresses.uln302
219
+ })).signAndSend();
220
+ await (await endpointClient.register_library({
221
+ new_lib: addresses.sml
222
+ })).signAndSend();
223
+ console.log(`\u2705 [${chainLabel}] Libraries registered (ULN302 + SML)`);
224
+ await (await endpointClient.set_zro({
225
+ zro: env.ZRO_TOKEN_ADDRESS
226
+ })).signAndSend();
227
+ console.log(`\u2705 [${chainLabel}] ZRO token set`);
228
+ await (await uln302Client.set_default_executor_configs({
229
+ params: [
230
+ {
231
+ dst_eid: otherEid,
232
+ config: {
233
+ executor: addresses.executor,
234
+ max_message_size: 1e4
235
+ }
236
+ }
237
+ ]
238
+ })).signAndSend();
239
+ console.log(`\u2705 [${chainLabel}] ULN302 executor config set for dst_eid=${otherEid}`);
240
+ await (await uln302Client.set_default_send_uln_configs({
241
+ params: [
242
+ {
243
+ eid: otherEid,
244
+ config: {
245
+ confirmations: 1n,
246
+ required_dvns: [
247
+ addresses.dvn
248
+ ],
249
+ optional_dvns: [],
250
+ optional_dvn_threshold: 0
251
+ }
252
+ }
253
+ ]
254
+ })).signAndSend();
255
+ console.log(`\u2705 [${chainLabel}] ULN302 send config set for eid=${otherEid} (DVN: ${addresses.dvn})`);
256
+ await (await uln302Client.set_default_receive_uln_configs({
257
+ params: [
258
+ {
259
+ eid: otherEid,
260
+ config: {
261
+ confirmations: 1n,
262
+ required_dvns: [
263
+ addresses.dvn
264
+ ],
265
+ optional_dvns: [],
266
+ optional_dvn_threshold: 0
267
+ }
268
+ }
269
+ ]
270
+ })).signAndSend();
271
+ console.log(`\u2705 [${chainLabel}] ULN302 receive config set for eid=${otherEid} (DVN: ${addresses.dvn})`);
272
+ await (await endpointClient.set_default_send_library({
273
+ dst_eid: otherEid,
274
+ new_lib: addresses.uln302
275
+ })).signAndSend();
276
+ await (await endpointClient.set_default_receive_library({
277
+ src_eid: otherEid,
278
+ new_lib: addresses.uln302,
279
+ grace_period: 0n
280
+ })).signAndSend();
281
+ console.log(`\u2705 [${chainLabel}] Default libraries set to ULN302 for eid=${otherEid}`);
282
+ await (await priceFeedClient.set_price_ratio_denominator({
283
+ denominator: 100000000000000000000n
284
+ })).signAndSend();
285
+ await (await priceFeedClient.set_native_token_price_usd({
286
+ price_updater: env.DEFAULT_DEPLOYER.publicKey(),
287
+ native_token_price_usd: 1000000000000000000n
288
+ })).signAndSend();
289
+ const NORMALIZED_OTHER_EID = otherEid % 3e4;
290
+ await (await priceFeedClient.set_price({
291
+ price_updater: env.DEFAULT_DEPLOYER.publicKey(),
292
+ prices: [
293
+ {
294
+ eid: NORMALIZED_OTHER_EID,
295
+ price: {
296
+ gas_per_byte: 1,
297
+ gas_price_in_unit: 1n,
298
+ price_ratio: 100000000000000000000n
299
+ }
300
+ }
301
+ ]
302
+ })).signAndSend();
303
+ console.log(`\u2705 [${chainLabel}] Price Feed configured for eid=${otherEid}`);
304
+ await (await executorClient.set_dst_config({
305
+ admin: env.DEFAULT_DEPLOYER.publicKey(),
306
+ params: [
307
+ {
308
+ dst_eid: otherEid,
309
+ dst_config: {
310
+ floor_margin_usd: 0n,
311
+ lz_compose_base_gas: 50000n,
312
+ lz_receive_base_gas: 100000n,
313
+ multiplier_bps: 1e4,
314
+ native_cap: 1000000000000n
315
+ }
316
+ }
317
+ ]
318
+ })).signAndSend();
319
+ console.log(`\u2705 [${chainLabel}] Executor configured for dst_eid=${otherEid}`);
320
+ await (await dvnClient.set_dst_config({
321
+ admin: env.DEFAULT_DEPLOYER.publicKey(),
322
+ params: [
323
+ {
324
+ dst_eid: otherEid,
325
+ config: {
326
+ floor_margin_usd: 0n,
327
+ gas: 100000n,
328
+ multiplier_bps: 1e4
329
+ }
330
+ }
331
+ ]
332
+ })).signAndSend();
333
+ console.log(`\u2705 [${chainLabel}] DVN configured for dst_eid=${otherEid}`);
334
+ console.log(`\u{1F389} [${chainLabel}] Protocol wiring complete!`);
335
+ }
336
+ __name(wireChainContracts, "wireChainContracts");
337
+ function createProtocolStackGlobalSetup(env, options) {
338
+ return /* @__PURE__ */ __name(async function globalSetup({ provide }) {
339
+ console.log("\n========================================");
340
+ console.log("\u{1F310} GLOBAL SETUP: Starting Stellar Localnet");
341
+ console.log("========================================\n");
342
+ await startStellarLocalnet({
343
+ env
344
+ });
345
+ try {
346
+ const wasmDir = typeof options.wasmDir === "function" ? await options.wasmDir() : options.wasmDir;
347
+ console.log("\n========================================");
348
+ console.log("\u{1F4E4} GLOBAL SETUP: Uploading WASM (once)");
349
+ console.log("========================================\n");
350
+ const wasmHashes = await uploadAllWasms(env, wasmDir);
351
+ console.log("\n========================================");
352
+ console.log("\u{1F4E6} GLOBAL SETUP: Deploying Protocol Contracts (Two Chains in Parallel)");
353
+ console.log("========================================\n");
354
+ const { protocol } = options;
355
+ const [addressesA, addressesB] = await Promise.all([
356
+ deployChainContracts(env, protocol, env.EID_A, "Chain A", env.DEFAULT_DEPLOYER, wasmDir, wasmHashes),
357
+ deployChainContracts(env, protocol, env.EID_B, "Chain B", env.CHAIN_B_DEPLOYER, wasmDir, wasmHashes)
358
+ ]);
359
+ const chainA = await initChainClients(env, protocol, addressesA, "Chain A");
360
+ const chainB = await initChainClients(env, protocol, addressesB, "Chain B");
361
+ console.log("\n========================================");
362
+ console.log("\u{1F517} GLOBAL SETUP: Wiring Protocol Contracts (Cross-Chain)");
363
+ console.log("========================================\n");
364
+ await wireChainContracts(env, chainA, chainB, "Chain A");
365
+ await wireChainContracts(env, chainB, chainA, "Chain B");
366
+ provide("chainA", chainA.addresses);
367
+ provide("chainB", chainB.addresses);
368
+ console.log("\n\u2705 Chain addresses provided to tests (in-memory)");
369
+ console.log(" Chain A (EID " + env.EID_A + "):", chainA.addresses.endpointV2);
370
+ console.log(" Chain B (EID " + env.EID_B + "):", chainB.addresses.endpointV2);
371
+ console.log("\n========================================");
372
+ console.log("\u2705 GLOBAL SETUP COMPLETE (Two-Chain Cross-Chain Ready)");
373
+ console.log("========================================\n");
374
+ } catch (error) {
375
+ await stopStellarLocalnet({
376
+ env
377
+ });
378
+ throw error;
379
+ }
380
+ return async () => {
381
+ console.log("\n========================================");
382
+ console.log("\u{1F6D1} GLOBAL TEARDOWN: Stopping Stellar Localnet");
383
+ console.log("========================================\n");
384
+ await stopStellarLocalnet({
385
+ env
386
+ });
387
+ };
388
+ }, "globalSetup");
389
+ }
390
+ __name(createProtocolStackGlobalSetup, "createProtocolStackGlobalSetup");
391
+
392
+ export { createProtocolStackGlobalSetup };
393
+ //# sourceMappingURL=ZWKXKZVT.js.map
394
+ //# sourceMappingURL=ZWKXKZVT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/protocol-global-setup.ts"],"names":["getProtocolClientConstructor","client","moduleName","TypeError","getDeployableProtocolClient","deploy","createProtocolClient","env","contractId","createClient","uploadAllWasms","wasmDir","server","rpc","Server","RPC_URL","allowHttp","wasmFiles","endpoint","treasury","uln302","sml","priceFeed","executorFeeLib","dvnFeeLib","dvn","executorHelper","executor","hashes","name","file","Object","entries","wasmBuffer","readFileSync","path","join","console","log","length","toFixed","uploadWasm","DEFAULT_DEPLOYER","deployChainContracts","protocol","eid","chainLabel","deployer","wasmHashes","addresses","endpointV2","deployedEndpoint","deployContract","Client","owner","publicKey","native_token","NATIVE_TOKEN_ADDRESS","wasmHash","options","deployedTreasury","deployedUln302","deployedSml","fee_recipient","deployedPriceFeed","price_updater","deployedExecutorFeeLib","deployedDvnFeeLib","deployedDvn","vid","DVN_VID","signers","DVN_SIGNER","ethAddress","threshold","admins","supported_msglibs","price_feed","default_multiplier_bps","worker_fee_lib","deposit_address","deployedExecutorHelper","undefined","deployedExecutor","EXECUTOR_ADMIN","message_libs","initChainClients","executorClient","set_executor_helper","helper","allowed_functions","signAndSend","clients","endpointClient","uln302Client","smlClient","treasuryClient","executorHelperClient","executorFeeLibClient","priceFeedClient","dvnFeeLibClient","dvnClient","wireChainContracts","chain","otherChain","thisEid","otherEid","register_library","new_lib","set_zro","zro","ZRO_TOKEN_ADDRESS","set_default_executor_configs","params","dst_eid","config","max_message_size","set_default_send_uln_configs","confirmations","required_dvns","optional_dvns","optional_dvn_threshold","set_default_receive_uln_configs","set_default_send_library","set_default_receive_library","src_eid","grace_period","set_price_ratio_denominator","denominator","set_native_token_price_usd","native_token_price_usd","NORMALIZED_OTHER_EID","set_price","prices","price","gas_per_byte","gas_price_in_unit","price_ratio","set_dst_config","admin","dst_config","floor_margin_usd","lz_compose_base_gas","lz_receive_base_gas","multiplier_bps","native_cap","gas","createProtocolStackGlobalSetup","globalSetup","provide","startStellarLocalnet","addressesA","addressesB","Promise","all","EID_A","EID_B","CHAIN_B_DEPLOYER","chainA","chainB","error","stopStellarLocalnet"],"mappings":"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","file":"ZWKXKZVT.js","sourcesContent":["import type { Keypair } from '@stellar/stellar-sdk';\nimport { rpc } from '@stellar/stellar-sdk';\nimport { readFileSync } from 'fs';\nimport path from 'path';\n\nimport { createClient } from './client.js';\nimport { type DeployableContractClient, deployContract, uploadWasm } from './deploy.js';\nimport type { StellarTestEnv } from './env.js';\nimport { startStellarLocalnet, stopStellarLocalnet } from './localnet.js';\n\n/** Vitest globalSetup context subset (avoids a hard vitest type dependency in src/). */\nexport type ProtocolGlobalSetupContext = {\n provide: (key: 'chainA' | 'chainB', value: ChainAddresses) => void;\n};\n\ntype SigningTransaction = {\n signAndSend: () => Promise<unknown>;\n};\n\n/**\n * Generated Soroban clients expose asynchronous methods that construct a signable transaction.\n * Their method names and argument types remain owned by the generated SDK.\n */\ntype ProtocolClient = Record<string, (args: object) => Promise<SigningTransaction>>;\n\ntype ProtocolClientConstructor<TClient extends ProtocolClient> = new (options: {\n contractId: string;\n publicKey: string;\n signTransaction: (tx: string) => Promise<{ signedTxXdr: string; signerAddress: string }>;\n rpcUrl: string;\n networkPassphrase: string;\n allowHttp: boolean;\n}) => TClient;\n\nexport interface ProtocolContractModule {\n /** The generated SDK Client constructor. Validated at the adapter boundary before use. */\n Client: unknown;\n}\n\n/**\n * Protocol contract modules from `@layerzerolabs/lz-v2-stellar-sdk`.\n * Injected by consumers to avoid a workspace cycle (test-utils ↔ sdk).\n */\nexport interface ProtocolStackModules {\n endpoint: ProtocolContractModule;\n treasury: ProtocolContractModule;\n uln302: ProtocolContractModule;\n sml: ProtocolContractModule;\n priceFeed: ProtocolContractModule;\n executorFeeLib: ProtocolContractModule;\n dvnFeeLib: ProtocolContractModule;\n dvn: ProtocolContractModule;\n executorHelper: ProtocolContractModule;\n executor: ProtocolContractModule;\n}\n\n/**\n * Addresses for a single chain's protocol contracts\n */\nexport interface ChainAddresses {\n eid: number;\n endpointV2: string;\n uln302: string;\n sml: string;\n treasury: string;\n executor: string;\n executorHelper: string;\n executorFeeLib: string;\n priceFeed: string;\n dvnFeeLib: string;\n dvn: string;\n}\n\n/**\n * Clients for a single chain's protocol contracts\n */\ninterface ChainClients {\n endpointClient: ProtocolClient;\n uln302Client: ProtocolClient;\n smlClient: ProtocolClient;\n treasuryClient: ProtocolClient;\n executorClient: ProtocolClient;\n executorHelperClient: ProtocolClient;\n executorFeeLibClient: ProtocolClient;\n priceFeedClient: ProtocolClient;\n dvnFeeLibClient: ProtocolClient;\n dvnClient: ProtocolClient;\n}\n\n/**\n * Complete chain setup with addresses and clients\n */\ninterface ChainSetup {\n addresses: ChainAddresses;\n clients: ChainClients;\n}\n\ninterface WasmHashes {\n endpoint: string;\n treasury: string;\n uln302: string;\n sml: string;\n priceFeed: string;\n executorFeeLib: string;\n dvnFeeLib: string;\n dvn: string;\n executorHelper: string;\n executor: string;\n}\n\nfunction getProtocolClientConstructor<TClient extends ProtocolClient>(\n client: unknown,\n moduleName: string,\n): ProtocolClientConstructor<TClient> {\n if (typeof client !== 'function') {\n throw new TypeError(`${moduleName}.Client must be a generated contract client constructor`);\n }\n return client as ProtocolClientConstructor<TClient>;\n}\n\nfunction getDeployableProtocolClient<TClient extends { options: { contractId: string } }>(\n client: unknown,\n moduleName: string,\n): DeployableContractClient<TClient> {\n if (\n typeof client !== 'function' ||\n !('deploy' in client) ||\n typeof client.deploy !== 'function'\n ) {\n throw new TypeError(`${moduleName}.Client must expose a deploy method`);\n }\n return client as DeployableContractClient<TClient>;\n}\n\nfunction createProtocolClient(\n env: StellarTestEnv,\n client: unknown,\n contractId: string,\n moduleName: string,\n): ProtocolClient {\n return createClient(\n env,\n getProtocolClientConstructor<ProtocolClient>(client, moduleName),\n contractId,\n );\n}\n\n/**\n * Upload all protocol WASM files once and return their hashes.\n */\nasync function uploadAllWasms(env: StellarTestEnv, wasmDir: string): Promise<WasmHashes> {\n const server = new rpc.Server(env.RPC_URL, { allowHttp: true });\n\n const wasmFiles = {\n endpoint: 'endpoint_v2.wasm',\n treasury: 'treasury.wasm',\n uln302: 'uln302.wasm',\n sml: 'simple_message_lib.wasm',\n priceFeed: 'price_feed.wasm',\n executorFeeLib: 'executor_fee_lib.wasm',\n dvnFeeLib: 'dvn_fee_lib.wasm',\n dvn: 'dvn.wasm',\n executorHelper: 'executor_helper.wasm',\n executor: 'executor.wasm',\n };\n\n const hashes: Record<string, string> = {};\n for (const [name, file] of Object.entries(wasmFiles)) {\n const wasmBuffer = readFileSync(path.join(wasmDir, file));\n console.log(`📤 Uploading ${name} WASM (${(wasmBuffer.length / 1024).toFixed(1)} KB)...`);\n hashes[name] = await uploadWasm(env, wasmBuffer, env.DEFAULT_DEPLOYER, server);\n }\n\n return hashes as unknown as WasmHashes;\n}\n\n/**\n * Deploy all protocol contracts for a single chain using pre-uploaded WASM hashes.\n * The deployer pays gas; contract ownership is always DEFAULT_DEPLOYER.\n */\nasync function deployChainContracts(\n env: StellarTestEnv,\n protocol: ProtocolStackModules,\n eid: number,\n chainLabel: string,\n deployer: Keypair,\n wasmDir: string,\n wasmHashes: WasmHashes,\n): Promise<ChainAddresses> {\n const addresses: ChainAddresses = {\n eid,\n endpointV2: '',\n uln302: '',\n sml: '',\n treasury: '',\n executor: '',\n executorHelper: '',\n executorFeeLib: '',\n priceFeed: '',\n dvnFeeLib: '',\n dvn: '',\n };\n\n // 1. Deploy Endpoint\n console.log(`🚀 [${chainLabel}] Deploying Endpoint (EID: ${eid})...`);\n const deployedEndpoint = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.endpoint.Client, 'endpoint'),\n path.join(wasmDir, 'endpoint_v2.wasm'),\n {\n eid,\n owner: env.DEFAULT_DEPLOYER.publicKey(),\n native_token: env.NATIVE_TOKEN_ADDRESS,\n },\n deployer,\n { wasmHash: wasmHashes.endpoint },\n );\n addresses.endpointV2 = deployedEndpoint.options.contractId;\n console.log(`✅ [${chainLabel}] Endpoint deployed:`, addresses.endpointV2);\n\n // 2. Deploy Treasury\n console.log(`🚀 [${chainLabel}] Deploying Treasury...`);\n const deployedTreasury = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.treasury.Client, 'treasury'),\n path.join(wasmDir, 'treasury.wasm'),\n { owner: env.DEFAULT_DEPLOYER.publicKey() },\n deployer,\n { wasmHash: wasmHashes.treasury },\n );\n addresses.treasury = deployedTreasury.options.contractId;\n console.log(`✅ [${chainLabel}] Treasury deployed:`, addresses.treasury);\n\n // 3. Deploy ULN302\n console.log(`🚀 [${chainLabel}] Deploying ULN302...`);\n const deployedUln302 = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.uln302.Client, 'uln302'),\n path.join(wasmDir, 'uln302.wasm'),\n {\n owner: env.DEFAULT_DEPLOYER.publicKey(),\n endpoint: addresses.endpointV2,\n treasury: addresses.treasury,\n },\n deployer,\n { wasmHash: wasmHashes.uln302 },\n );\n addresses.uln302 = deployedUln302.options.contractId;\n console.log(`✅ [${chainLabel}] ULN302 deployed:`, addresses.uln302);\n\n // 4. Deploy SML (SimpleMessageLib)\n console.log(`🚀 [${chainLabel}] Deploying SimpleMessageLib...`);\n const deployedSml = await deployContract<ProtocolClient & { options: { contractId: string } }>(\n env,\n getDeployableProtocolClient(protocol.sml.Client, 'sml'),\n path.join(wasmDir, 'simple_message_lib.wasm'),\n {\n owner: env.DEFAULT_DEPLOYER.publicKey(),\n endpoint: addresses.endpointV2,\n fee_recipient: env.DEFAULT_DEPLOYER.publicKey(),\n },\n deployer,\n { wasmHash: wasmHashes.sml },\n );\n addresses.sml = deployedSml.options.contractId;\n console.log(`✅ [${chainLabel}] SimpleMessageLib deployed:`, addresses.sml);\n\n // 5. Deploy Price Feed\n console.log(`🚀 [${chainLabel}] Deploying Price Feed...`);\n const deployedPriceFeed = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.priceFeed.Client, 'priceFeed'),\n path.join(wasmDir, 'price_feed.wasm'),\n {\n owner: env.DEFAULT_DEPLOYER.publicKey(),\n price_updater: env.DEFAULT_DEPLOYER.publicKey(),\n },\n deployer,\n { wasmHash: wasmHashes.priceFeed },\n );\n addresses.priceFeed = deployedPriceFeed.options.contractId;\n console.log(`✅ [${chainLabel}] Price Feed deployed:`, addresses.priceFeed);\n\n // 6. Deploy Executor Fee Lib\n console.log(`🚀 [${chainLabel}] Deploying Executor Fee Lib...`);\n const deployedExecutorFeeLib = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.executorFeeLib.Client, 'executorFeeLib'),\n path.join(wasmDir, 'executor_fee_lib.wasm'),\n { owner: env.DEFAULT_DEPLOYER.publicKey() },\n deployer,\n { wasmHash: wasmHashes.executorFeeLib },\n );\n addresses.executorFeeLib = deployedExecutorFeeLib.options.contractId;\n console.log(`✅ [${chainLabel}] Executor Fee Lib deployed:`, addresses.executorFeeLib);\n\n // 7. Deploy DVN Fee Lib\n console.log(`🚀 [${chainLabel}] Deploying DVN Fee Lib...`);\n const deployedDvnFeeLib = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.dvnFeeLib.Client, 'dvnFeeLib'),\n path.join(wasmDir, 'dvn_fee_lib.wasm'),\n { owner: env.DEFAULT_DEPLOYER.publicKey() },\n deployer,\n { wasmHash: wasmHashes.dvnFeeLib },\n );\n addresses.dvnFeeLib = deployedDvnFeeLib.options.contractId;\n console.log(`✅ [${chainLabel}] DVN Fee Lib deployed:`, addresses.dvnFeeLib);\n\n // 8. Deploy DVN (same signer for both chains)\n console.log(`🚀 [${chainLabel}] Deploying DVN...`);\n const deployedDvn = await deployContract<ProtocolClient & { options: { contractId: string } }>(\n env,\n getDeployableProtocolClient(protocol.dvn.Client, 'dvn'),\n path.join(wasmDir, 'dvn.wasm'),\n {\n vid: env.DVN_VID,\n signers: [env.DVN_SIGNER.ethAddress],\n threshold: 1,\n admins: [env.DEFAULT_DEPLOYER.publicKey()],\n supported_msglibs: [addresses.uln302],\n price_feed: addresses.priceFeed,\n default_multiplier_bps: 10000,\n worker_fee_lib: addresses.dvnFeeLib,\n deposit_address: env.DEFAULT_DEPLOYER.publicKey(),\n },\n deployer,\n { wasmHash: wasmHashes.dvn },\n );\n addresses.dvn = deployedDvn.options.contractId;\n console.log(`✅ [${chainLabel}] DVN deployed:`, addresses.dvn);\n\n // 9. Deploy Executor Helper\n console.log(`🚀 [${chainLabel}] Deploying Executor Helper...`);\n const deployedExecutorHelper = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.executorHelper.Client, 'executorHelper'),\n path.join(wasmDir, 'executor_helper.wasm'),\n undefined,\n deployer,\n { wasmHash: wasmHashes.executorHelper },\n );\n addresses.executorHelper = deployedExecutorHelper.options.contractId;\n console.log(`✅ [${chainLabel}] Executor Helper deployed:`, addresses.executorHelper);\n\n // 10. Deploy Executor (supports both ULN302 and SML)\n console.log(`🚀 [${chainLabel}] Deploying Executor...`);\n const deployedExecutor = await deployContract<\n ProtocolClient & { options: { contractId: string } }\n >(\n env,\n getDeployableProtocolClient(protocol.executor.Client, 'executor'),\n path.join(wasmDir, 'executor.wasm'),\n {\n owner: env.DEFAULT_DEPLOYER.publicKey(),\n endpoint: addresses.endpointV2,\n admins: [env.EXECUTOR_ADMIN.publicKey(), env.DEFAULT_DEPLOYER.publicKey()],\n message_libs: [addresses.uln302, addresses.sml],\n price_feed: addresses.priceFeed,\n default_multiplier_bps: 10000,\n worker_fee_lib: addresses.executorFeeLib,\n deposit_address: env.DEFAULT_DEPLOYER.publicKey(),\n },\n deployer,\n { wasmHash: wasmHashes.executor },\n );\n addresses.executor = deployedExecutor.options.contractId;\n console.log(`✅ [${chainLabel}] Executor deployed:`, addresses.executor);\n\n return addresses;\n}\n\n/**\n * Register executor helper and create owner-signed clients for a chain.\n * Must be called sequentially (uses DEFAULT_DEPLOYER for signing).\n */\nasync function initChainClients(\n env: StellarTestEnv,\n protocol: ProtocolStackModules,\n addresses: ChainAddresses,\n chainLabel: string,\n): Promise<ChainSetup> {\n // Register Executor Helper with Executor (needs owner-signed client)\n console.log(`🚀 [${chainLabel}] Registering Executor Helper with Executor...`);\n const executorClient = createProtocolClient(\n env,\n protocol.executor.Client,\n addresses.executor,\n 'executor',\n );\n await (\n await executorClient.set_executor_helper({\n helper: addresses.executorHelper,\n allowed_functions: ['execute', 'compose'],\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] Executor Helper registered`);\n\n const clients: ChainClients = {\n endpointClient: createProtocolClient(\n env,\n protocol.endpoint.Client,\n addresses.endpointV2,\n 'endpoint',\n ),\n uln302Client: createProtocolClient(env, protocol.uln302.Client, addresses.uln302, 'uln302'),\n smlClient: createProtocolClient(env, protocol.sml.Client, addresses.sml, 'sml'),\n treasuryClient: createProtocolClient(\n env,\n protocol.treasury.Client,\n addresses.treasury,\n 'treasury',\n ),\n executorClient,\n executorHelperClient: createProtocolClient(\n env,\n protocol.executorHelper.Client,\n addresses.executorHelper,\n 'executorHelper',\n ),\n executorFeeLibClient: createProtocolClient(\n env,\n protocol.executorFeeLib.Client,\n addresses.executorFeeLib,\n 'executorFeeLib',\n ),\n priceFeedClient: createProtocolClient(\n env,\n protocol.priceFeed.Client,\n addresses.priceFeed,\n 'priceFeed',\n ),\n dvnFeeLibClient: createProtocolClient(\n env,\n protocol.dvnFeeLib.Client,\n addresses.dvnFeeLib,\n 'dvnFeeLib',\n ),\n dvnClient: createProtocolClient(env, protocol.dvn.Client, addresses.dvn, 'dvn'),\n };\n\n return { addresses, clients };\n}\n\n/**\n * Wire a single chain's protocol contracts for cross-chain communication\n *\n * @param chain - The chain to wire (this chain)\n * @param otherChain - The other chain (for cross-references)\n * @param chainLabel - Label for logging\n */\nasync function wireChainContracts(\n env: StellarTestEnv,\n chain: ChainSetup,\n otherChain: ChainSetup,\n chainLabel: string,\n): Promise<void> {\n const { addresses, clients } = chain;\n const { endpointClient, uln302Client, priceFeedClient, executorClient, dvnClient } = clients;\n\n const thisEid = addresses.eid;\n const otherEid = otherChain.addresses.eid;\n\n console.log(\n `\\n🔗 [${chainLabel}] Wiring protocol contracts (EID: ${thisEid} ↔ ${otherEid})...`,\n );\n\n // Register libraries\n await (await endpointClient.register_library({ new_lib: addresses.uln302 })).signAndSend();\n await (await endpointClient.register_library({ new_lib: addresses.sml })).signAndSend();\n console.log(`✅ [${chainLabel}] Libraries registered (ULN302 + SML)`);\n\n // Set ZRO token\n await (await endpointClient.set_zro({ zro: env.ZRO_TOKEN_ADDRESS })).signAndSend();\n console.log(`✅ [${chainLabel}] ZRO token set`);\n\n // ========================================================================\n // Configure for SENDING to the other chain (dst_eid = otherEid)\n // ========================================================================\n\n // ULN302 executor config for sending to other chain\n await (\n await uln302Client.set_default_executor_configs({\n params: [\n {\n dst_eid: otherEid,\n config: { executor: addresses.executor, max_message_size: 10000 },\n },\n ],\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] ULN302 executor config set for dst_eid=${otherEid}`);\n\n // ULN302 send config: when sending to otherEid, use THIS chain's DVN for fee quoting\n // (The DVN needs dst_config for the destination EID to calculate fees)\n await (\n await uln302Client.set_default_send_uln_configs({\n params: [\n {\n eid: otherEid,\n config: {\n confirmations: 1n,\n required_dvns: [addresses.dvn], // THIS chain's DVN (has dst_config for otherEid)\n optional_dvns: [],\n optional_dvn_threshold: 0,\n },\n },\n ],\n })\n ).signAndSend();\n console.log(\n `✅ [${chainLabel}] ULN302 send config set for eid=${otherEid} (DVN: ${addresses.dvn})`,\n );\n\n // ========================================================================\n // Configure for RECEIVING from the other chain (src_eid = otherEid)\n // ========================================================================\n\n // ULN302 receive config: when receiving from otherEid, THIS chain's DVN verifies\n await (\n await uln302Client.set_default_receive_uln_configs({\n params: [\n {\n eid: otherEid,\n config: {\n confirmations: 1n,\n required_dvns: [addresses.dvn], // THIS chain's DVN verifies incoming\n optional_dvns: [],\n optional_dvn_threshold: 0,\n },\n },\n ],\n })\n ).signAndSend();\n console.log(\n `✅ [${chainLabel}] ULN302 receive config set for eid=${otherEid} (DVN: ${addresses.dvn})`,\n );\n\n // Set default send/receive libraries for the other chain\n await (\n await endpointClient.set_default_send_library({\n dst_eid: otherEid,\n new_lib: addresses.uln302,\n })\n ).signAndSend();\n await (\n await endpointClient.set_default_receive_library({\n src_eid: otherEid,\n new_lib: addresses.uln302,\n grace_period: 0n,\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] Default libraries set to ULN302 for eid=${otherEid}`);\n\n // ========================================================================\n // Configure Price Feed for both chains\n // ========================================================================\n\n await (\n await priceFeedClient.set_price_ratio_denominator({ denominator: 100000000000000000000n })\n ).signAndSend();\n await (\n await priceFeedClient.set_native_token_price_usd({\n price_updater: env.DEFAULT_DEPLOYER.publicKey(),\n native_token_price_usd: 1000000000000000000n,\n })\n ).signAndSend();\n\n // Set prices for the other chain\n const NORMALIZED_OTHER_EID = otherEid % 30000;\n await (\n await priceFeedClient.set_price({\n price_updater: env.DEFAULT_DEPLOYER.publicKey(),\n prices: [\n {\n eid: NORMALIZED_OTHER_EID,\n price: {\n gas_per_byte: 1,\n gas_price_in_unit: 1n,\n price_ratio: 100000000000000000000n,\n },\n },\n ],\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] Price Feed configured for eid=${otherEid}`);\n\n // ========================================================================\n // Configure Executor for sending to other chain\n // ========================================================================\n\n await (\n await executorClient.set_dst_config({\n admin: env.DEFAULT_DEPLOYER.publicKey(),\n params: [\n {\n dst_eid: otherEid,\n dst_config: {\n floor_margin_usd: 0n,\n lz_compose_base_gas: 50000n,\n lz_receive_base_gas: 100000n,\n multiplier_bps: 10000,\n native_cap: 1000000000000n,\n },\n },\n ],\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] Executor configured for dst_eid=${otherEid}`);\n\n // ========================================================================\n // Configure DVN for verifying packets going to other chain\n // ========================================================================\n\n await (\n await dvnClient.set_dst_config({\n admin: env.DEFAULT_DEPLOYER.publicKey(),\n params: [\n {\n dst_eid: otherEid,\n config: {\n floor_margin_usd: 0n,\n gas: 100000n,\n multiplier_bps: 10000,\n },\n },\n ],\n })\n ).signAndSend();\n console.log(`✅ [${chainLabel}] DVN configured for dst_eid=${otherEid}`);\n\n console.log(`🎉 [${chainLabel}] Protocol wiring complete!`);\n}\n\nexport interface ProtocolStackGlobalSetupOptions {\n /**\n * Directory containing protocol WASM artifacts, or an async resolver.\n * Consumers typically resolve via getFullyQualifiedRepoRootPath.\n */\n wasmDir: string | (() => string | Promise<string>);\n /**\n * Protocol contract modules from `@layerzerolabs/lz-v2-stellar-sdk`.\n * Passed by the consumer to avoid a workspace dependency cycle.\n */\n protocol: ProtocolStackModules;\n}\n\n/**\n * Returns a Vitest globalSetup that deploys two protocol stacks and wires them.\n */\nexport function createProtocolStackGlobalSetup(\n env: StellarTestEnv,\n options: ProtocolStackGlobalSetupOptions,\n): (ctx: ProtocolGlobalSetupContext) => Promise<() => Promise<void>> {\n return async function globalSetup({\n provide,\n }: ProtocolGlobalSetupContext): Promise<() => Promise<void>> {\n console.log('\\n========================================');\n console.log('🌐 GLOBAL SETUP: Starting Stellar Localnet');\n console.log('========================================\\n');\n\n await startStellarLocalnet({ env });\n\n try {\n const wasmDir =\n typeof options.wasmDir === 'function' ? await options.wasmDir() : options.wasmDir;\n\n console.log('\\n========================================');\n console.log('📤 GLOBAL SETUP: Uploading WASM (once)');\n console.log('========================================\\n');\n\n const wasmHashes = await uploadAllWasms(env, wasmDir);\n\n console.log('\\n========================================');\n console.log('📦 GLOBAL SETUP: Deploying Protocol Contracts (Two Chains in Parallel)');\n console.log('========================================\\n');\n\n const { protocol } = options;\n\n const [addressesA, addressesB] = await Promise.all([\n deployChainContracts(\n env,\n protocol,\n env.EID_A,\n 'Chain A',\n env.DEFAULT_DEPLOYER,\n wasmDir,\n wasmHashes,\n ),\n deployChainContracts(\n env,\n protocol,\n env.EID_B,\n 'Chain B',\n env.CHAIN_B_DEPLOYER,\n wasmDir,\n wasmHashes,\n ),\n ]);\n\n const chainA = await initChainClients(env, protocol, addressesA, 'Chain A');\n const chainB = await initChainClients(env, protocol, addressesB, 'Chain B');\n\n console.log('\\n========================================');\n console.log('🔗 GLOBAL SETUP: Wiring Protocol Contracts (Cross-Chain)');\n console.log('========================================\\n');\n\n await wireChainContracts(env, chainA, chainB, 'Chain A');\n await wireChainContracts(env, chainB, chainA, 'Chain B');\n\n provide('chainA', chainA.addresses);\n provide('chainB', chainB.addresses);\n console.log('\\n✅ Chain addresses provided to tests (in-memory)');\n console.log(' Chain A (EID ' + env.EID_A + '):', chainA.addresses.endpointV2);\n console.log(' Chain B (EID ' + env.EID_B + '):', chainB.addresses.endpointV2);\n\n console.log('\\n========================================');\n console.log('✅ GLOBAL SETUP COMPLETE (Two-Chain Cross-Chain Ready)');\n console.log('========================================\\n');\n } catch (error) {\n await stopStellarLocalnet({ env });\n throw error;\n }\n\n return async () => {\n console.log('\\n========================================');\n console.log('🛑 GLOBAL TEARDOWN: Stopping Stellar Localnet');\n console.log('========================================\\n');\n\n await stopStellarLocalnet({ env });\n };\n };\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { Keypair } from '@stellar/stellar-sdk';
2
+ import type { StellarTestEnv } from './env.js';
3
+ /**
4
+ * Create a Soroban contract client with DEFAULT_DEPLOYER as signer.
5
+ */
6
+ export declare function createClient<T>(env: StellarTestEnv, ClientClass: new (options: {
7
+ contractId: string;
8
+ publicKey: string;
9
+ signTransaction: (tx: string) => Promise<{
10
+ signedTxXdr: string;
11
+ signerAddress: string;
12
+ }>;
13
+ rpcUrl: string;
14
+ networkPassphrase: string;
15
+ allowHttp: boolean;
16
+ }) => T, contractId: string, signer?: Keypair): T;
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC1B,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,KAAK,OAAO,EAAE;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzF,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACtB,KAAK,CAAC,EACP,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAA8B,GACvC,CAAC,CAgBH"}
package/dist/client.js ADDED
@@ -0,0 +1,4 @@
1
+ export { createClient } from './GAGBEOCZ.js';
2
+ import './VUOMXK5T.js';
3
+ //# sourceMappingURL=client.js.map
4
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"client.js"}
@@ -0,0 +1,43 @@
1
+ import type { Keypair } from '@stellar/stellar-sdk';
2
+ import { Asset, rpc } from '@stellar/stellar-sdk';
3
+ import type { StellarTestEnv } from './env.js';
4
+ export interface DeployableContractClient<T extends {
5
+ options: {
6
+ contractId: string;
7
+ };
8
+ }> {
9
+ deploy: (argsOrOptions: unknown, options?: unknown) => Promise<{
10
+ signAndSend: () => Promise<{
11
+ result: T;
12
+ }>;
13
+ }>;
14
+ }
15
+ export declare function uploadWasm(env: StellarTestEnv, wasmBuffer: Buffer, keypair: Keypair, server: rpc.Server): Promise<string>;
16
+ /**
17
+ * Generic contract deployment helper that works with any contract Client
18
+ *
19
+ * @param ClientClass - The contract Client class (e.g., EndpointClient, SMLClient)
20
+ * @param wasmFilePath - Path to the compiled WASM file
21
+ * @param constructorArgs - Arguments for the contract's constructor
22
+ * @param deployer - The keypair that will deploy the contract
23
+ * @param options - Optional deployment options (salt, fee, timeout, etc.)
24
+ * @returns The deployed contract's Client instance with the contractId
25
+ */
26
+ export declare function deployContract<T extends {
27
+ options: {
28
+ contractId: string;
29
+ };
30
+ }>(env: StellarTestEnv, ClientClass: DeployableContractClient<T>, wasmFilePath: string, constructorArgs: unknown, deployer: Keypair, options?: {
31
+ salt?: Buffer;
32
+ wasmHash?: string;
33
+ rpcUrl?: string;
34
+ networkPassphrase?: string;
35
+ allowHttp?: boolean;
36
+ }): Promise<T>;
37
+ export declare function deployNativeSac(env: StellarTestEnv): Promise<void>;
38
+ export declare function deployZroToken(env: StellarTestEnv): Promise<void>;
39
+ /**
40
+ * Deploy SAC for a custom asset using TypeScript
41
+ */
42
+ export declare function deployAssetSac(env: StellarTestEnv, asset: Asset): Promise<string>;
43
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../src/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACH,KAAK,EAIL,GAAG,EAGN,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;IACnF,MAAM,EAAE,CACJ,aAAa,EAAE,OAAO,EACtB,OAAO,CAAC,EAAE,OAAO,KAChB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC;YAAE,MAAM,EAAE,CAAC,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC/D;AAgED,wBAAsB,UAAU,CAC5B,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,GAAG,CAAC,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EAC9E,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,OAAO,EACxB,QAAQ,EAAE,OAAO,EACjB,OAAO,GAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;CAClB,GACP,OAAO,CAAC,CAAC,CAAC,CA0DZ;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CvE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CA8CvF"}
package/dist/deploy.js ADDED
@@ -0,0 +1,4 @@
1
+ export { deployAssetSac, deployContract, deployNativeSac, deployZroToken, uploadWasm } from './TYAJMKGY.js';
2
+ import './VUOMXK5T.js';
3
+ //# sourceMappingURL=deploy.js.map
4
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"deploy.js"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { Asset, Keypair, Networks } from '@stellar/stellar-sdk';
2
+ import { Secp256k1KeyPair } from './secp256k1.js';
3
+ export interface CreateStellarTestEnvOptions {
4
+ /** Docker container name — must be unique when suites run concurrently. */
5
+ containerName: string;
6
+ /** Host port mapped to the localnet container's RPC port. */
7
+ hostPort: number;
8
+ /**
9
+ * Optional localnet image override. Defaults to the versioned LayerZero ECR snapshot.
10
+ * Useful for testing a locally built image without changing the shared default.
11
+ */
12
+ dockerImage?: string;
13
+ }
14
+ /**
15
+ * Shared Stellar E2E constants (RPC URL, keys, EIDs, token addresses).
16
+ * Constructed from containerName/hostPort so concurrent suites do not collide.
17
+ */
18
+ export interface StellarTestEnv {
19
+ CONTAINER_NAME: string;
20
+ HOST_PORT: number;
21
+ /** Optional localnet Docker image override. */
22
+ DOCKER_IMAGE?: string;
23
+ RPC_URL: string;
24
+ NETWORK_PASSPHRASE: typeof Networks.STANDALONE;
25
+ JUNK_WALLET: Keypair;
26
+ DEFAULT_DEPLOYER: Keypair;
27
+ ZRO_DISTRIBUTOR: Keypair;
28
+ EXECUTOR_ADMIN: Keypair;
29
+ CHAIN_B_DEPLOYER: Keypair;
30
+ DVN_SIGNER: Secp256k1KeyPair;
31
+ DVN_VID: number;
32
+ EID_A: number;
33
+ EID_B: number;
34
+ /** Legacy single EID (alias of EID_A). */
35
+ EID: number;
36
+ NATIVE_TOKEN_ADDRESS: string;
37
+ ZRO_ASSET: Asset;
38
+ ZRO_TOKEN_ADDRESS: string;
39
+ MSG_TYPE_VANILLA: number;
40
+ MSG_TYPE_COMPOSED: number;
41
+ MSG_TYPE_ABA: number;
42
+ MSG_TYPE_COMPOSED_ABA: number;
43
+ }
44
+ export declare function createStellarTestEnv(options: CreateStellarTestEnvOptions): StellarTestEnv;
45
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,2BAA2B;IACxC,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,CAwDzF"}
package/dist/env.js ADDED
@@ -0,0 +1,5 @@
1
+ export { createStellarTestEnv } from './7DZ4SVEO.js';
2
+ import './DNRE4ENZ.js';
3
+ import './VUOMXK5T.js';
4
+ //# sourceMappingURL=env.js.map
5
+ //# sourceMappingURL=env.js.map