@aztec/end-to-end 3.0.0-nightly.20251211 → 3.0.0-nightly.20251213

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 (60) hide show
  1. package/dest/bench/client_flows/client_flows_benchmark.d.ts +3 -3
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.js +1 -1
  4. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +4 -4
  5. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  6. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +1 -1
  7. package/dest/e2e_epochs/epochs_test.d.ts +1 -1
  8. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  9. package/dest/e2e_epochs/epochs_test.js +0 -2
  10. package/dest/e2e_fees/fees_test.d.ts +3 -3
  11. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  12. package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
  13. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  14. package/dest/e2e_p2p/inactivity_slash_test.js +3 -6
  15. package/dest/e2e_p2p/p2p_network.d.ts +4 -5
  16. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  17. package/dest/e2e_p2p/p2p_network.js +6 -8
  18. package/dest/fixtures/e2e_prover_test.d.ts +3 -3
  19. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  20. package/dest/fixtures/e2e_prover_test.js +0 -1
  21. package/dest/fixtures/setup_p2p_test.js +3 -3
  22. package/dest/fixtures/snapshot_manager.d.ts +6 -6
  23. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  24. package/dest/fixtures/snapshot_manager.js +18 -10
  25. package/dest/fixtures/utils.d.ts +9 -459
  26. package/dest/fixtures/utils.d.ts.map +1 -1
  27. package/dest/fixtures/utils.js +22 -54
  28. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  29. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  30. package/dest/fixtures/with_telemetry_utils.js +2 -2
  31. package/dest/shared/cross_chain_test_harness.js +1 -1
  32. package/dest/shared/uniswap_l1_l2.d.ts +3 -3
  33. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  34. package/dest/shared/uniswap_l1_l2.js +1 -1
  35. package/dest/spartan/tx_metrics.d.ts +39 -0
  36. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  37. package/dest/spartan/tx_metrics.js +95 -0
  38. package/dest/spartan/utils.d.ts +2 -2
  39. package/dest/spartan/utils.d.ts.map +1 -1
  40. package/dest/spartan/utils.js +2 -2
  41. package/package.json +38 -38
  42. package/src/bench/client_flows/client_flows_benchmark.ts +3 -2
  43. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +11 -7
  44. package/src/e2e_epochs/epochs_test.ts +0 -2
  45. package/src/e2e_fees/fees_test.ts +2 -2
  46. package/src/e2e_p2p/inactivity_slash_test.ts +3 -6
  47. package/src/e2e_p2p/p2p_network.ts +4 -10
  48. package/src/fixtures/e2e_prover_test.ts +3 -3
  49. package/src/fixtures/setup_p2p_test.ts +3 -3
  50. package/src/fixtures/snapshot_manager.ts +34 -16
  51. package/src/fixtures/utils.ts +50 -103
  52. package/src/fixtures/with_telemetry_utils.ts +2 -2
  53. package/src/shared/cross_chain_test_harness.ts +1 -1
  54. package/src/shared/uniswap_l1_l2.ts +4 -3
  55. package/src/spartan/tx_metrics.ts +130 -0
  56. package/src/spartan/utils.ts +2 -2
  57. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  58. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  59. package/dest/fixtures/setup_l1_contracts.js +0 -17
  60. package/src/fixtures/setup_l1_contracts.ts +0 -27
@@ -10,6 +10,7 @@ import { createBlobSinkServer } from '@aztec/blob-sink/server';
10
10
  import { createExtendedL1Client } from '@aztec/ethereum/client';
11
11
  import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
12
12
  import { deployMulticall3 } from '@aztec/ethereum/contracts';
13
+ import { deployAztecL1Contracts } from '@aztec/ethereum/deploy-aztec-l1-contracts';
13
14
  import { EthCheatCodesWithState, startAnvil } from '@aztec/ethereum/test';
14
15
  import { asyncMap } from '@aztec/foundation/async-map';
15
16
  import { SecretValue } from '@aztec/foundation/config';
@@ -18,6 +19,8 @@ import { tryRmDir } from '@aztec/foundation/fs';
18
19
  import { createLogger } from '@aztec/foundation/log';
19
20
  import { resolver, reviver } from '@aztec/foundation/serialize';
20
21
  import { TestDateProvider } from '@aztec/foundation/timer';
22
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
23
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
21
24
  import { getPXEConfig } from '@aztec/pxe/server';
22
25
  import { tryStop } from '@aztec/stdlib/interfaces/server';
23
26
  import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
@@ -34,7 +37,6 @@ import { foundry } from 'viem/chains';
34
37
  import { MNEMONIC, TEST_MAX_TX_POOL_SIZE, TEST_PEER_CHECK_INTERVAL_MS } from './fixtures.js';
35
38
  import { getACVMConfig } from './get_acvm_config.js';
36
39
  import { getBBConfig } from './get_bb_config.js';
37
- import { setupL1Contracts } from './setup_l1_contracts.js';
38
40
  import { createAndSyncProverNode, getLogger, getPrivateKeyFromIndex, getSponsoredFPCAddress } from './utils.js';
39
41
  import { getEndToEndTestTelemetryClient } from './with_telemetry_utils.js';
40
42
  export function createSnapshotManager(testName, dataPath, config = {}, deployL1ContractsArgs = {
@@ -244,13 +246,14 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
244
246
  });
245
247
  const publisherPrivKeyRaw = hdAccount.getHdKey().privateKey;
246
248
  const publisherPrivKey = publisherPrivKeyRaw === null ? null : Buffer.from(publisherPrivKeyRaw);
249
+ const publisherPrivKeyHex = `0x${publisherPrivKey.toString('hex')}`;
247
250
  const l1Client = createExtendedL1Client([
248
251
  aztecNodeConfig.l1RpcUrls[0]
249
252
  ], hdAccount, foundry);
250
253
  const validatorPrivKey = getPrivateKeyFromIndex(0);
251
254
  const proverNodePrivateKey = getPrivateKeyFromIndex(0);
252
255
  aztecNodeConfig.publisherPrivateKeys = [
253
- new SecretValue(`0x${publisherPrivKey.toString('hex')}`)
256
+ new SecretValue(publisherPrivKeyHex)
254
257
  ];
255
258
  aztecNodeConfig.validatorPrivateKeys = new SecretValue([
256
259
  `0x${validatorPrivKey.toString('hex')}`
@@ -269,7 +272,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
269
272
  const dateProvider = new TestDateProvider();
270
273
  const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls, dateProvider);
271
274
  // Deploy our L1 contracts.
272
- logger.verbose('Deploying L1 contracts...');
275
+ logger.verbose('Deploying Aztec L1 contracts...');
273
276
  if (opts.l1StartTime) {
274
277
  await ethCheatCodes.warp(opts.l1StartTime, {
275
278
  resetBlockInterval: true
@@ -278,15 +281,20 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
278
281
  const initialFundedAccounts = await generateSchnorrAccounts(numberOfInitialFundedAccounts);
279
282
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
280
283
  const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress), opts.initialAccountFeeJuice);
284
+ const vkTreeRoot = getVKTreeRoot();
281
285
  await deployMulticall3(l1Client, logger);
282
- const deployL1ContractsValues = await setupL1Contracts(aztecNodeConfig.l1RpcUrls[0], hdAccount, logger, {
286
+ // Define args, defaulted to our environment variables.
287
+ const args = {
283
288
  ...getL1ContractsConfigEnvVars(),
289
+ ...deployL1ContractsArgs,
290
+ vkTreeRoot,
284
291
  genesisArchiveRoot,
292
+ protocolContractsHash,
293
+ initialValidators: opts.initialValidators,
285
294
  feeJuicePortalInitialBalance: fundingNeeded,
286
- salt: opts.salt,
287
- ...deployL1ContractsArgs,
288
- initialValidators: opts.initialValidators
289
- });
295
+ realVerifier: false
296
+ };
297
+ const deployL1ContractsValues = await deployAztecL1Contracts(aztecNodeConfig.l1RpcUrls[0], publisherPrivKeyHex, foundry.id, args);
290
298
  aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
291
299
  aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
292
300
  const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
@@ -301,7 +309,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
301
309
  aztecNodeConfig.bbBinaryPath = bbConfig.bbBinaryPath;
302
310
  aztecNodeConfig.bbWorkingDirectory = bbConfig.bbWorkingDirectory;
303
311
  }
304
- const telemetry = getEndToEndTestTelemetryClient(opts.metricsPort);
312
+ const telemetry = await getEndToEndTestTelemetryClient(opts.metricsPort);
305
313
  // Setup blob sink service
306
314
  const blobSink = await createBlobSinkServer({
307
315
  l1ChainId: aztecNodeConfig.l1ChainId,
@@ -399,7 +407,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
399
407
  const l1Client = createExtendedL1Client(aztecNodeConfig.l1RpcUrls, mnemonicToAccount(MNEMONIC));
400
408
  const watcher = new AnvilTestWatcher(ethCheatCodes, aztecNodeConfig.l1Contracts.rollupAddress, l1Client, dateProvider);
401
409
  await watcher.start();
402
- const telemetry = initTelemetryClient(getTelemetryConfig());
410
+ const telemetry = await initTelemetryClient(getTelemetryConfig());
403
411
  const blobSink = await createBlobSinkServer({
404
412
  l1ChainId: aztecNodeConfig.l1ChainId,
405
413
  l1RpcUrls: aztecNodeConfig.l1RpcUrls,
@@ -2,16 +2,16 @@ import { type InitialAccountData } from '@aztec/accounts/testing';
2
2
  import { type AztecNodeConfig } from '@aztec/aztec-node';
3
3
  import { AztecAddress } from '@aztec/aztec.js/addresses';
4
4
  import { type ContractMethod } from '@aztec/aztec.js/contracts';
5
+ import { Fr } from '@aztec/aztec.js/fields';
5
6
  import { type Logger } from '@aztec/aztec.js/log';
6
7
  import { type AztecNode } from '@aztec/aztec.js/node';
7
8
  import type { Wallet } from '@aztec/aztec.js/wallet';
8
9
  import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
9
10
  import { type BlobSinkServer } from '@aztec/blob-sink/server';
10
- import { type DeployL1ContractsArgs, type DeployL1ContractsReturnType, type Operator } from '@aztec/ethereum/deploy-l1-contracts';
11
+ import { type DeployAztecL1ContractsReturnType, type Operator, type ZKPassportArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
11
12
  import { EthCheatCodes, startAnvil } from '@aztec/ethereum/test';
12
13
  import { BlockNumber } from '@aztec/foundation/branded-types';
13
14
  import { SecretValue } from '@aztec/foundation/config';
14
- import { Fr } from '@aztec/foundation/curves/bn254';
15
15
  import { TestDateProvider } from '@aztec/foundation/timer';
16
16
  import type { DataStoreConfig } from '@aztec/kv-store/config';
17
17
  import { MockGossipSubNetwork } from '@aztec/p2p/test-helpers';
@@ -23,456 +23,10 @@ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
23
23
  import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
24
24
  import { type TelemetryClient, type TelemetryClientConfig } from '@aztec/telemetry-client';
25
25
  import { TestWallet } from '@aztec/test-wallet/server';
26
- import { type Chain } from 'viem';
26
+ import { type Chain } from 'viem/chains';
27
27
  export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
28
28
  export { startAnvil };
29
29
  export declare const getPrivateKeyFromIndex: (index: number) => Buffer<ArrayBufferLike> | null;
30
- export declare const setupL1Contracts: (l1RpcUrls: string[], account: {
31
- address: `0x${string}`;
32
- nonceManager?: import("viem").NonceManager | undefined;
33
- sign: (parameters: {
34
- hash: `0x${string}`;
35
- }) => Promise<`0x${string}`>;
36
- signAuthorization?: ((parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>) | undefined;
37
- signMessage: ({ message }: {
38
- message: import("viem").SignableMessage;
39
- }) => Promise<`0x${string}`>;
40
- signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
41
- serializer?: serializer | undefined;
42
- } | undefined) => Promise<`0x${string}`>;
43
- signTypedData: <const typedData extends Record<string, unknown> | {
44
- [x: string]: readonly import("viem").TypedDataParameter[];
45
- [x: `address[${string}]`]: undefined;
46
- [x: `bool[${string}]`]: undefined;
47
- [x: `bytes10[${string}]`]: undefined;
48
- [x: `bytes11[${string}]`]: undefined;
49
- [x: `bytes12[${string}]`]: undefined;
50
- [x: `bytes13[${string}]`]: undefined;
51
- [x: `bytes14[${string}]`]: undefined;
52
- [x: `bytes15[${string}]`]: undefined;
53
- [x: `bytes16[${string}]`]: undefined;
54
- [x: `bytes17[${string}]`]: undefined;
55
- [x: `bytes18[${string}]`]: undefined;
56
- [x: `bytes19[${string}]`]: undefined;
57
- [x: `bytes1[${string}]`]: undefined;
58
- [x: `bytes20[${string}]`]: undefined;
59
- [x: `bytes21[${string}]`]: undefined;
60
- [x: `bytes22[${string}]`]: undefined;
61
- [x: `bytes23[${string}]`]: undefined;
62
- [x: `bytes24[${string}]`]: undefined;
63
- [x: `bytes25[${string}]`]: undefined;
64
- [x: `bytes26[${string}]`]: undefined;
65
- [x: `bytes27[${string}]`]: undefined;
66
- [x: `bytes28[${string}]`]: undefined;
67
- [x: `bytes29[${string}]`]: undefined;
68
- [x: `bytes2[${string}]`]: undefined;
69
- [x: `bytes30[${string}]`]: undefined;
70
- [x: `bytes31[${string}]`]: undefined;
71
- [x: `bytes32[${string}]`]: undefined;
72
- [x: `bytes3[${string}]`]: undefined;
73
- [x: `bytes4[${string}]`]: undefined;
74
- [x: `bytes5[${string}]`]: undefined;
75
- [x: `bytes6[${string}]`]: undefined;
76
- [x: `bytes7[${string}]`]: undefined;
77
- [x: `bytes8[${string}]`]: undefined;
78
- [x: `bytes9[${string}]`]: undefined;
79
- [x: `bytes[${string}]`]: undefined;
80
- [x: `function[${string}]`]: undefined;
81
- [x: `int104[${string}]`]: undefined;
82
- [x: `int112[${string}]`]: undefined;
83
- [x: `int120[${string}]`]: undefined;
84
- [x: `int128[${string}]`]: undefined;
85
- [x: `int136[${string}]`]: undefined;
86
- [x: `int144[${string}]`]: undefined;
87
- [x: `int152[${string}]`]: undefined;
88
- [x: `int160[${string}]`]: undefined;
89
- [x: `int168[${string}]`]: undefined;
90
- [x: `int16[${string}]`]: undefined;
91
- [x: `int176[${string}]`]: undefined;
92
- [x: `int184[${string}]`]: undefined;
93
- [x: `int192[${string}]`]: undefined;
94
- [x: `int200[${string}]`]: undefined;
95
- [x: `int208[${string}]`]: undefined;
96
- [x: `int216[${string}]`]: undefined;
97
- [x: `int224[${string}]`]: undefined;
98
- [x: `int232[${string}]`]: undefined;
99
- [x: `int240[${string}]`]: undefined;
100
- [x: `int248[${string}]`]: undefined;
101
- [x: `int24[${string}]`]: undefined;
102
- [x: `int256[${string}]`]: undefined;
103
- [x: `int32[${string}]`]: undefined;
104
- [x: `int40[${string}]`]: undefined;
105
- [x: `int48[${string}]`]: undefined;
106
- [x: `int56[${string}]`]: undefined;
107
- [x: `int64[${string}]`]: undefined;
108
- [x: `int72[${string}]`]: undefined;
109
- [x: `int80[${string}]`]: undefined;
110
- [x: `int88[${string}]`]: undefined;
111
- [x: `int8[${string}]`]: undefined;
112
- [x: `int96[${string}]`]: undefined;
113
- [x: `int[${string}]`]: undefined;
114
- [x: `string[${string}]`]: undefined;
115
- [x: `uint104[${string}]`]: undefined;
116
- [x: `uint112[${string}]`]: undefined;
117
- [x: `uint120[${string}]`]: undefined;
118
- [x: `uint128[${string}]`]: undefined;
119
- [x: `uint136[${string}]`]: undefined;
120
- [x: `uint144[${string}]`]: undefined;
121
- [x: `uint152[${string}]`]: undefined;
122
- [x: `uint160[${string}]`]: undefined;
123
- [x: `uint168[${string}]`]: undefined;
124
- [x: `uint16[${string}]`]: undefined;
125
- [x: `uint176[${string}]`]: undefined;
126
- [x: `uint184[${string}]`]: undefined;
127
- [x: `uint192[${string}]`]: undefined;
128
- [x: `uint200[${string}]`]: undefined;
129
- [x: `uint208[${string}]`]: undefined;
130
- [x: `uint216[${string}]`]: undefined;
131
- [x: `uint224[${string}]`]: undefined;
132
- [x: `uint232[${string}]`]: undefined;
133
- [x: `uint240[${string}]`]: undefined;
134
- [x: `uint248[${string}]`]: undefined;
135
- [x: `uint24[${string}]`]: undefined;
136
- [x: `uint256[${string}]`]: undefined;
137
- [x: `uint32[${string}]`]: undefined;
138
- [x: `uint40[${string}]`]: undefined;
139
- [x: `uint48[${string}]`]: undefined;
140
- [x: `uint56[${string}]`]: undefined;
141
- [x: `uint64[${string}]`]: undefined;
142
- [x: `uint72[${string}]`]: undefined;
143
- [x: `uint80[${string}]`]: undefined;
144
- [x: `uint88[${string}]`]: undefined;
145
- [x: `uint8[${string}]`]: undefined;
146
- [x: `uint96[${string}]`]: undefined;
147
- [x: `uint[${string}]`]: undefined;
148
- address?: undefined;
149
- bool?: undefined;
150
- bytes?: undefined;
151
- bytes1?: undefined;
152
- bytes10?: undefined;
153
- bytes11?: undefined;
154
- bytes12?: undefined;
155
- bytes13?: undefined;
156
- bytes14?: undefined;
157
- bytes15?: undefined;
158
- bytes16?: undefined;
159
- bytes17?: undefined;
160
- bytes18?: undefined;
161
- bytes19?: undefined;
162
- bytes2?: undefined;
163
- bytes20?: undefined;
164
- bytes21?: undefined;
165
- bytes22?: undefined;
166
- bytes23?: undefined;
167
- bytes24?: undefined;
168
- bytes25?: undefined;
169
- bytes26?: undefined;
170
- bytes27?: undefined;
171
- bytes28?: undefined;
172
- bytes29?: undefined;
173
- bytes3?: undefined;
174
- bytes30?: undefined;
175
- bytes31?: undefined;
176
- bytes32?: undefined;
177
- bytes4?: undefined;
178
- bytes5?: undefined;
179
- bytes6?: undefined;
180
- bytes7?: undefined;
181
- bytes8?: undefined;
182
- bytes9?: undefined;
183
- int104?: undefined;
184
- int112?: undefined;
185
- int120?: undefined;
186
- int128?: undefined;
187
- int136?: undefined;
188
- int144?: undefined;
189
- int152?: undefined;
190
- int16?: undefined;
191
- int160?: undefined;
192
- int168?: undefined;
193
- int176?: undefined;
194
- int184?: undefined;
195
- int192?: undefined;
196
- int200?: undefined;
197
- int208?: undefined;
198
- int216?: undefined;
199
- int224?: undefined;
200
- int232?: undefined;
201
- int24?: undefined;
202
- int240?: undefined;
203
- int248?: undefined;
204
- int256?: undefined;
205
- int32?: undefined;
206
- int40?: undefined;
207
- int48?: undefined;
208
- int56?: undefined;
209
- int64?: undefined;
210
- int72?: undefined;
211
- int8?: undefined;
212
- int80?: undefined;
213
- int88?: undefined;
214
- int96?: undefined;
215
- string?: undefined;
216
- uint104?: undefined;
217
- uint112?: undefined;
218
- uint120?: undefined;
219
- uint128?: undefined;
220
- uint136?: undefined;
221
- uint144?: undefined;
222
- uint152?: undefined;
223
- uint16?: undefined;
224
- uint160?: undefined;
225
- uint168?: undefined;
226
- uint176?: undefined;
227
- uint184?: undefined;
228
- uint192?: undefined;
229
- uint200?: undefined;
230
- uint208?: undefined;
231
- uint216?: undefined;
232
- uint224?: undefined;
233
- uint232?: undefined;
234
- uint24?: undefined;
235
- uint240?: undefined;
236
- uint248?: undefined;
237
- uint256?: undefined;
238
- uint32?: undefined;
239
- uint40?: undefined;
240
- uint48?: undefined;
241
- uint56?: undefined;
242
- uint64?: undefined;
243
- uint72?: undefined;
244
- uint8?: undefined;
245
- uint80?: undefined;
246
- uint88?: undefined;
247
- uint96?: undefined;
248
- }, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
249
- publicKey: `0x${string}`;
250
- source: "hd";
251
- type: "local";
252
- getHdKey: () => import("viem").HDKey;
253
- } | {
254
- address: `0x${string}`;
255
- nonceManager?: import("viem").NonceManager | undefined;
256
- sign: (parameters: {
257
- hash: `0x${string}`;
258
- }) => Promise<`0x${string}`>;
259
- signAuthorization: (parameters: import("viem").AuthorizationRequest) => Promise<import("viem/accounts").SignAuthorizationReturnType>;
260
- signMessage: ({ message }: {
261
- message: import("viem").SignableMessage;
262
- }) => Promise<`0x${string}`>;
263
- signTransaction: <serializer extends import("viem").SerializeTransactionFn<import("viem").TransactionSerializable> = import("viem").SerializeTransactionFn<import("viem").TransactionSerializable>, transaction extends Parameters<serializer>[0] = Parameters<serializer>[0]>(transaction: transaction, options?: {
264
- serializer?: serializer | undefined;
265
- } | undefined) => Promise<`0x${string}`>;
266
- signTypedData: <const typedData extends Record<string, unknown> | {
267
- [x: string]: readonly import("viem").TypedDataParameter[];
268
- [x: `address[${string}]`]: undefined;
269
- [x: `bool[${string}]`]: undefined;
270
- [x: `bytes10[${string}]`]: undefined;
271
- [x: `bytes11[${string}]`]: undefined;
272
- [x: `bytes12[${string}]`]: undefined;
273
- [x: `bytes13[${string}]`]: undefined;
274
- [x: `bytes14[${string}]`]: undefined;
275
- [x: `bytes15[${string}]`]: undefined;
276
- [x: `bytes16[${string}]`]: undefined;
277
- [x: `bytes17[${string}]`]: undefined;
278
- [x: `bytes18[${string}]`]: undefined;
279
- [x: `bytes19[${string}]`]: undefined;
280
- [x: `bytes1[${string}]`]: undefined;
281
- [x: `bytes20[${string}]`]: undefined;
282
- [x: `bytes21[${string}]`]: undefined;
283
- [x: `bytes22[${string}]`]: undefined;
284
- [x: `bytes23[${string}]`]: undefined;
285
- [x: `bytes24[${string}]`]: undefined;
286
- [x: `bytes25[${string}]`]: undefined;
287
- [x: `bytes26[${string}]`]: undefined;
288
- [x: `bytes27[${string}]`]: undefined;
289
- [x: `bytes28[${string}]`]: undefined;
290
- [x: `bytes29[${string}]`]: undefined;
291
- [x: `bytes2[${string}]`]: undefined;
292
- [x: `bytes30[${string}]`]: undefined;
293
- [x: `bytes31[${string}]`]: undefined;
294
- [x: `bytes32[${string}]`]: undefined;
295
- [x: `bytes3[${string}]`]: undefined;
296
- [x: `bytes4[${string}]`]: undefined;
297
- [x: `bytes5[${string}]`]: undefined;
298
- [x: `bytes6[${string}]`]: undefined;
299
- [x: `bytes7[${string}]`]: undefined;
300
- [x: `bytes8[${string}]`]: undefined;
301
- [x: `bytes9[${string}]`]: undefined;
302
- [x: `bytes[${string}]`]: undefined;
303
- [x: `function[${string}]`]: undefined;
304
- [x: `int104[${string}]`]: undefined;
305
- [x: `int112[${string}]`]: undefined;
306
- [x: `int120[${string}]`]: undefined;
307
- [x: `int128[${string}]`]: undefined;
308
- [x: `int136[${string}]`]: undefined;
309
- [x: `int144[${string}]`]: undefined;
310
- [x: `int152[${string}]`]: undefined;
311
- [x: `int160[${string}]`]: undefined;
312
- [x: `int168[${string}]`]: undefined;
313
- [x: `int16[${string}]`]: undefined;
314
- [x: `int176[${string}]`]: undefined;
315
- [x: `int184[${string}]`]: undefined;
316
- [x: `int192[${string}]`]: undefined;
317
- [x: `int200[${string}]`]: undefined;
318
- [x: `int208[${string}]`]: undefined;
319
- [x: `int216[${string}]`]: undefined;
320
- [x: `int224[${string}]`]: undefined;
321
- [x: `int232[${string}]`]: undefined;
322
- [x: `int240[${string}]`]: undefined;
323
- [x: `int248[${string}]`]: undefined;
324
- [x: `int24[${string}]`]: undefined;
325
- [x: `int256[${string}]`]: undefined;
326
- [x: `int32[${string}]`]: undefined;
327
- [x: `int40[${string}]`]: undefined;
328
- [x: `int48[${string}]`]: undefined;
329
- [x: `int56[${string}]`]: undefined;
330
- [x: `int64[${string}]`]: undefined;
331
- [x: `int72[${string}]`]: undefined;
332
- [x: `int80[${string}]`]: undefined;
333
- [x: `int88[${string}]`]: undefined;
334
- [x: `int8[${string}]`]: undefined;
335
- [x: `int96[${string}]`]: undefined;
336
- [x: `int[${string}]`]: undefined;
337
- [x: `string[${string}]`]: undefined;
338
- [x: `uint104[${string}]`]: undefined;
339
- [x: `uint112[${string}]`]: undefined;
340
- [x: `uint120[${string}]`]: undefined;
341
- [x: `uint128[${string}]`]: undefined;
342
- [x: `uint136[${string}]`]: undefined;
343
- [x: `uint144[${string}]`]: undefined;
344
- [x: `uint152[${string}]`]: undefined;
345
- [x: `uint160[${string}]`]: undefined;
346
- [x: `uint168[${string}]`]: undefined;
347
- [x: `uint16[${string}]`]: undefined;
348
- [x: `uint176[${string}]`]: undefined;
349
- [x: `uint184[${string}]`]: undefined;
350
- [x: `uint192[${string}]`]: undefined;
351
- [x: `uint200[${string}]`]: undefined;
352
- [x: `uint208[${string}]`]: undefined;
353
- [x: `uint216[${string}]`]: undefined;
354
- [x: `uint224[${string}]`]: undefined;
355
- [x: `uint232[${string}]`]: undefined;
356
- [x: `uint240[${string}]`]: undefined;
357
- [x: `uint248[${string}]`]: undefined;
358
- [x: `uint24[${string}]`]: undefined;
359
- [x: `uint256[${string}]`]: undefined;
360
- [x: `uint32[${string}]`]: undefined;
361
- [x: `uint40[${string}]`]: undefined;
362
- [x: `uint48[${string}]`]: undefined;
363
- [x: `uint56[${string}]`]: undefined;
364
- [x: `uint64[${string}]`]: undefined;
365
- [x: `uint72[${string}]`]: undefined;
366
- [x: `uint80[${string}]`]: undefined;
367
- [x: `uint88[${string}]`]: undefined;
368
- [x: `uint8[${string}]`]: undefined;
369
- [x: `uint96[${string}]`]: undefined;
370
- [x: `uint[${string}]`]: undefined;
371
- address?: undefined;
372
- bool?: undefined;
373
- bytes?: undefined;
374
- bytes1?: undefined;
375
- bytes10?: undefined;
376
- bytes11?: undefined;
377
- bytes12?: undefined;
378
- bytes13?: undefined;
379
- bytes14?: undefined;
380
- bytes15?: undefined;
381
- bytes16?: undefined;
382
- bytes17?: undefined;
383
- bytes18?: undefined;
384
- bytes19?: undefined;
385
- bytes2?: undefined;
386
- bytes20?: undefined;
387
- bytes21?: undefined;
388
- bytes22?: undefined;
389
- bytes23?: undefined;
390
- bytes24?: undefined;
391
- bytes25?: undefined;
392
- bytes26?: undefined;
393
- bytes27?: undefined;
394
- bytes28?: undefined;
395
- bytes29?: undefined;
396
- bytes3?: undefined;
397
- bytes30?: undefined;
398
- bytes31?: undefined;
399
- bytes32?: undefined;
400
- bytes4?: undefined;
401
- bytes5?: undefined;
402
- bytes6?: undefined;
403
- bytes7?: undefined;
404
- bytes8?: undefined;
405
- bytes9?: undefined;
406
- int104?: undefined;
407
- int112?: undefined;
408
- int120?: undefined;
409
- int128?: undefined;
410
- int136?: undefined;
411
- int144?: undefined;
412
- int152?: undefined;
413
- int16?: undefined;
414
- int160?: undefined;
415
- int168?: undefined;
416
- int176?: undefined;
417
- int184?: undefined;
418
- int192?: undefined;
419
- int200?: undefined;
420
- int208?: undefined;
421
- int216?: undefined;
422
- int224?: undefined;
423
- int232?: undefined;
424
- int24?: undefined;
425
- int240?: undefined;
426
- int248?: undefined;
427
- int256?: undefined;
428
- int32?: undefined;
429
- int40?: undefined;
430
- int48?: undefined;
431
- int56?: undefined;
432
- int64?: undefined;
433
- int72?: undefined;
434
- int8?: undefined;
435
- int80?: undefined;
436
- int88?: undefined;
437
- int96?: undefined;
438
- string?: undefined;
439
- uint104?: undefined;
440
- uint112?: undefined;
441
- uint120?: undefined;
442
- uint128?: undefined;
443
- uint136?: undefined;
444
- uint144?: undefined;
445
- uint152?: undefined;
446
- uint16?: undefined;
447
- uint160?: undefined;
448
- uint168?: undefined;
449
- uint176?: undefined;
450
- uint184?: undefined;
451
- uint192?: undefined;
452
- uint200?: undefined;
453
- uint208?: undefined;
454
- uint216?: undefined;
455
- uint224?: undefined;
456
- uint232?: undefined;
457
- uint24?: undefined;
458
- uint240?: undefined;
459
- uint248?: undefined;
460
- uint256?: undefined;
461
- uint32?: undefined;
462
- uint40?: undefined;
463
- uint48?: undefined;
464
- uint56?: undefined;
465
- uint64?: undefined;
466
- uint72?: undefined;
467
- uint8?: undefined;
468
- uint80?: undefined;
469
- uint88?: undefined;
470
- uint96?: undefined;
471
- }, primaryType extends "EIP712Domain" | keyof typedData = keyof typedData>(parameters: import("viem").TypedDataDefinition<typedData, primaryType>) => Promise<`0x${string}`>;
472
- publicKey: `0x${string}`;
473
- source: "privateKey";
474
- type: "local";
475
- }, logger: Logger, args?: Partial<DeployL1ContractsArgs>, chain?: Chain) => Promise<DeployL1ContractsReturnType>;
476
30
  /**
477
31
  * Sets up Private eXecution Environment (PXE) and returns the corresponding test wallet.
478
32
  * @param aztecNode - An instance of Aztec Node.
@@ -502,17 +56,13 @@ export type SetupOptions = {
502
56
  /** Whether to enable metrics collection, if undefined, metrics collection is disabled */
503
57
  metricsPort?: number | undefined;
504
58
  /** Previously deployed contracts on L1 */
505
- deployL1ContractsValues?: DeployL1ContractsReturnType;
506
- /** Whether to skip deployment of protocol contracts (auth registry, etc) */
507
- skipProtocolContracts?: boolean;
59
+ deployL1ContractsValues?: DeployAztecL1ContractsReturnType;
508
60
  /** Initial fee juice for default accounts */
509
61
  initialAccountFeeJuice?: Fr;
510
62
  /** Number of initial accounts funded with fee juice */
511
63
  numberOfInitialFundedAccounts?: number;
512
64
  /** Data of the initial funded accounts */
513
65
  initialFundedAccounts?: InitialAccountData[];
514
- /** Salt to use in L1 contract deployment */
515
- salt?: number;
516
66
  /** An initial set of validators */
517
67
  initialValidators?: (Operator & {
518
68
  privateKey: `0x${string}`;
@@ -523,8 +73,6 @@ export type SetupOptions = {
523
73
  l2StartTime?: number;
524
74
  /** Whether to start a prover node */
525
75
  startProverNode?: boolean;
526
- /** Whether to fund the rewardDistributor */
527
- fundRewardDistributor?: boolean;
528
76
  /** Manual config for the telemetry client */
529
77
  telemetryConfig?: Partial<TelemetryClientConfig> & {
530
78
  benchmark?: boolean;
@@ -545,6 +93,8 @@ export type SetupOptions = {
545
93
  anvilPort?: number;
546
94
  /** Key to use for publishing L1 contracts */
547
95
  l1PublisherKey?: SecretValue<`0x${string}`>;
96
+ /** ZkPassport configuration (domain, scope, mock verifier) */
97
+ zkPassportArgs?: ZKPassportArgs;
548
98
  } & Partial<AztecNodeConfig>;
549
99
  /** Context for an end-to-end test as returned by the `setup` function */
550
100
  export type EndToEndContext = {
@@ -556,8 +106,8 @@ export type EndToEndContext = {
556
106
  proverNode: ProverNode | undefined;
557
107
  /** A client to the sequencer service (undefined if connected to remote environment) */
558
108
  sequencer: SequencerClient | undefined;
559
- /** Return values from deployL1Contracts function. */
560
- deployL1ContractsValues: DeployL1ContractsReturnType;
109
+ /** Return values from deployAztecL1Contracts function. */
110
+ deployL1ContractsValues: DeployAztecL1ContractsReturnType;
561
111
  /** The Aztec Node configuration. */
562
112
  config: AztecNodeConfig;
563
113
  /** The data for the initial funded accounts. */
@@ -637,4 +187,4 @@ export declare function waitForProvenChain(node: AztecNode, targetBlock?: BlockN
637
187
  export declare function createAndSyncProverNode(proverNodePrivateKey: `0x${string}`, aztecNodeConfig: AztecNodeConfig, proverNodeConfig: Partial<ProverNodeConfig> & Pick<DataStoreConfig, 'dataDirectory'> & {
638
188
  dontStart?: boolean;
639
189
  }, aztecNode: AztecNode | undefined, prefilledPublicData?: PublicDataTreeLeaf[], proverNodeDeps?: ProverNodeDeps): Promise<ProverNode>;
640
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBdUQsTUFBTSx5QkFBeUIsQ0FBQztBQUV2SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBYSxLQUFLLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQXNDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBFLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQU9wRixPQUFPLEVBQ0wsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSywyQkFBMkIsRUFDaEMsS0FBSyxRQUFRLEVBRWQsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBRUwsYUFBYSxFQUdiLFVBQVUsRUFDWCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTXBELE9BQU8sRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFB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
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBdUQsTUFBTSx5QkFBeUIsQ0FBQztBQUV2SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNDLE1BQU0sbUJBQW1CLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBYSxLQUFLLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFzQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQXdCLE1BQU0seUJBQXlCLENBQUM7QUFNcEYsT0FBTyxFQUNMLEtBQUssZ0NBQWdDLEVBQ3JDLEtBQUssUUFBUSxFQUNiLEtBQUssY0FBYyxFQUVwQixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFFTCxhQUFhLEVBR2IsVUFBVSxFQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU12RCxPQUFPLEVBQWdCLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0s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