@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (186) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +61 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +261 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +80 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +336 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +106 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +79 -0
  13. package/dest/bench/utils.d.ts +14 -40
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +37 -70
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +21 -13
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +29 -28
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +79 -82
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +13 -19
  25. package/dest/e2e_epochs/epochs_test.d.ts +65 -22
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +233 -49
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +63 -0
  31. package/dest/e2e_fees/fees_test.d.ts +27 -12
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +107 -110
  34. package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +55 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +10 -7
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +136 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +276 -23
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +188 -133
  49. package/dest/e2e_p2p/shared.d.ts +43 -7
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +164 -19
  52. package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
  53. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  54. package/dest/e2e_token_contract/token_contract_test.js +50 -26
  55. package/dest/fixtures/e2e_prover_test.d.ts +61 -0
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  57. package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +108 -113
  58. package/dest/fixtures/fixtures.d.ts +6 -8
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +5 -5
  61. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  62. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_acvm_config.js +3 -15
  64. package/dest/fixtures/get_bb_config.d.ts +2 -2
  65. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  66. package/dest/fixtures/get_bb_config.js +10 -17
  67. package/dest/fixtures/index.d.ts +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
  69. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  70. package/dest/fixtures/l1_to_l2_messaging.js +45 -19
  71. package/dest/fixtures/logging.d.ts +1 -1
  72. package/dest/fixtures/setup_p2p_test.d.ts +15 -14
  73. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  74. package/dest/fixtures/setup_p2p_test.js +82 -22
  75. package/dest/fixtures/snapshot_manager.d.ts +20 -14
  76. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  77. package/dest/fixtures/snapshot_manager.js +147 -138
  78. package/dest/fixtures/token_utils.d.ts +10 -4
  79. package/dest/fixtures/token_utils.d.ts.map +1 -1
  80. package/dest/fixtures/token_utils.js +28 -12
  81. package/dest/fixtures/utils.d.ts +92 -54
  82. package/dest/fixtures/utils.d.ts.map +1 -1
  83. package/dest/fixtures/utils.js +452 -389
  84. package/dest/fixtures/web3signer.d.ts +5 -0
  85. package/dest/fixtures/web3signer.d.ts.map +1 -0
  86. package/dest/fixtures/web3signer.js +53 -0
  87. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  88. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  89. package/dest/fixtures/with_telemetry_utils.js +2 -2
  90. package/dest/index.d.ts +1 -1
  91. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  92. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  93. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  94. package/dest/shared/cross_chain_test_harness.d.ts +42 -35
  95. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  96. package/dest/shared/cross_chain_test_harness.js +106 -52
  97. package/dest/shared/gas_portal_test_harness.d.ts +29 -31
  98. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  99. package/dest/shared/gas_portal_test_harness.js +51 -30
  100. package/dest/shared/index.d.ts +2 -2
  101. package/dest/shared/index.d.ts.map +1 -1
  102. package/dest/shared/jest_setup.d.ts +1 -1
  103. package/dest/shared/jest_setup.js +1 -1
  104. package/dest/shared/submit-transactions.d.ts +6 -4
  105. package/dest/shared/submit-transactions.d.ts.map +1 -1
  106. package/dest/shared/submit-transactions.js +8 -7
  107. package/dest/shared/uniswap_l1_l2.d.ts +3 -25
  108. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  109. package/dest/shared/uniswap_l1_l2.js +170 -120
  110. package/dest/simulators/index.d.ts +1 -1
  111. package/dest/simulators/lending_simulator.d.ts +7 -11
  112. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  113. package/dest/simulators/lending_simulator.js +16 -17
  114. package/dest/simulators/token_simulator.d.ts +6 -3
  115. package/dest/simulators/token_simulator.d.ts.map +1 -1
  116. package/dest/simulators/token_simulator.js +16 -13
  117. package/dest/spartan/setup_test_wallets.d.ts +27 -11
  118. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  119. package/dest/spartan/setup_test_wallets.js +202 -58
  120. package/dest/spartan/tx_metrics.d.ts +39 -0
  121. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  122. package/dest/spartan/tx_metrics.js +95 -0
  123. package/dest/spartan/utils.d.ts +151 -313
  124. package/dest/spartan/utils.d.ts.map +1 -1
  125. package/dest/spartan/utils.js +598 -151
  126. package/package.json +65 -58
  127. package/src/bench/client_flows/benchmark.ts +341 -0
  128. package/src/bench/client_flows/client_flows_benchmark.ts +450 -0
  129. package/src/bench/client_flows/config.ts +61 -0
  130. package/src/bench/client_flows/data_extractor.ts +89 -0
  131. package/src/bench/utils.ts +35 -81
  132. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
  133. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +103 -122
  134. package/src/e2e_deploy_contract/deploy_test.ts +24 -39
  135. package/src/e2e_epochs/epochs_test.ts +299 -65
  136. package/src/e2e_fees/bridging_race.notest.ts +80 -0
  137. package/src/e2e_fees/fees_test.ts +150 -142
  138. package/src/e2e_l1_publisher/write_json.ts +74 -0
  139. package/src/e2e_multi_validator/utils.ts +258 -0
  140. package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
  141. package/src/e2e_p2p/inactivity_slash_test.ts +179 -0
  142. package/src/e2e_p2p/p2p_network.ts +274 -171
  143. package/src/e2e_p2p/shared.ts +252 -29
  144. package/src/e2e_token_contract/token_contract_test.ts +43 -39
  145. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  146. package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +112 -160
  147. package/src/fixtures/fixtures.ts +5 -7
  148. package/src/fixtures/get_acvm_config.ts +4 -12
  149. package/src/fixtures/get_bb_config.ts +18 -13
  150. package/src/fixtures/l1_to_l2_messaging.ts +56 -24
  151. package/src/fixtures/setup_p2p_test.ts +127 -39
  152. package/src/fixtures/snapshot_manager.ts +189 -160
  153. package/src/fixtures/token_utils.ts +32 -15
  154. package/src/fixtures/utils.ts +556 -475
  155. package/src/fixtures/web3signer.ts +63 -0
  156. package/src/fixtures/with_telemetry_utils.ts +2 -2
  157. package/src/guides/up_quick_start.sh +7 -15
  158. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +2 -2
  159. package/src/shared/cross_chain_test_harness.ts +113 -87
  160. package/src/shared/gas_portal_test_harness.ts +59 -50
  161. package/src/shared/index.ts +1 -1
  162. package/src/shared/jest_setup.ts +1 -1
  163. package/src/shared/submit-transactions.ts +12 -8
  164. package/src/shared/uniswap_l1_l2.ts +194 -211
  165. package/src/simulators/lending_simulator.ts +15 -16
  166. package/src/simulators/token_simulator.ts +21 -13
  167. package/src/spartan/DEVELOP.md +128 -0
  168. package/src/spartan/setup_test_wallets.ts +258 -93
  169. package/src/spartan/tx_metrics.ts +130 -0
  170. package/src/spartan/utils.ts +722 -146
  171. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  172. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  173. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  174. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  175. package/dest/fixtures/setup_l1_contracts.js +0 -17
  176. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  177. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  178. package/dest/sample-dapp/connect.js +0 -12
  179. package/dest/sample-dapp/contracts.js +0 -10
  180. package/dest/sample-dapp/deploy.js +0 -35
  181. package/dest/sample-dapp/index.js +0 -98
  182. package/src/fixtures/setup_l1_contracts.ts +0 -27
  183. package/src/sample-dapp/connect.mjs +0 -16
  184. package/src/sample-dapp/contracts.mjs +0 -14
  185. package/src/sample-dapp/deploy.mjs +0 -40
  186. package/src/sample-dapp/index.mjs +0 -128
@@ -0,0 +1,95 @@
1
+ import { TxStatus } from '@aztec/stdlib/tx';
2
+ import { createHistogram } from 'perf_hooks';
3
+ export class TxInclusionMetrics {
4
+ aztecNode;
5
+ data;
6
+ groups;
7
+ blocks;
8
+ constructor(aztecNode){
9
+ this.aztecNode = aztecNode;
10
+ this.data = new Map();
11
+ this.groups = new Set();
12
+ this.blocks = new Map();
13
+ }
14
+ recordSentTx(tx, group) {
15
+ const txHash = tx.getTxHash().toString();
16
+ const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
17
+ this.data.set(txHash, {
18
+ txHash,
19
+ sentAt: Math.trunc(Date.now() / 1000),
20
+ minedAt: -1,
21
+ attestedAt: -1,
22
+ blocknumber: -1,
23
+ priorityFee: Number(priorityFees.feePerDaGas + priorityFees.feePerL2Gas),
24
+ totalFee: -1,
25
+ positionInBlock: -1,
26
+ group
27
+ });
28
+ this.groups.add(group);
29
+ }
30
+ async recordMinedTx(txReceipt) {
31
+ const { status, txHash, blockNumber } = txReceipt;
32
+ if (status !== TxStatus.SUCCESS || !blockNumber) {
33
+ return;
34
+ }
35
+ if (!this.blocks.has(blockNumber)) {
36
+ this.blocks.set(blockNumber, this.aztecNode.getBlock(blockNumber));
37
+ }
38
+ const block = await this.blocks.get(blockNumber);
39
+ const data = this.data.get(txHash.toString());
40
+ data.blocknumber = blockNumber;
41
+ data.minedAt = Number(block.header.globalVariables.timestamp);
42
+ data.attestedAt = -1;
43
+ data.totalFee = Number(txReceipt.transactionFee ?? 0n);
44
+ data.positionInBlock = block.body.txEffects.findIndex((txEffect)=>txEffect.txHash.equals(txHash));
45
+ }
46
+ inclusionTimeInSeconds(group) {
47
+ const histogram = createHistogram({});
48
+ for (const tx of this.data.values()){
49
+ if (!tx.blocknumber || tx.group !== group) {
50
+ continue;
51
+ }
52
+ histogram.record(tx.minedAt - tx.sentAt);
53
+ }
54
+ if (histogram.count === 0) {
55
+ return {
56
+ group,
57
+ count: 0,
58
+ mean: 0,
59
+ max: 0,
60
+ median: 0,
61
+ min: 0,
62
+ p99: 0
63
+ };
64
+ }
65
+ return {
66
+ group,
67
+ count: histogram.count,
68
+ mean: histogram.mean,
69
+ max: histogram.max,
70
+ median: histogram.percentile(50),
71
+ min: histogram.min,
72
+ p99: histogram.percentile(99)
73
+ };
74
+ }
75
+ toGithubActionBenchmarkJSON() {
76
+ const data = [];
77
+ for (const group of this.groups){
78
+ const stats = this.inclusionTimeInSeconds(group);
79
+ data.push({
80
+ name: `${group}/avg_inclusion`,
81
+ unit: 's',
82
+ value: stats.mean
83
+ }, {
84
+ name: `${group}/median_inclusion`,
85
+ unit: 's',
86
+ value: stats.median
87
+ }, {
88
+ name: `${group}/p99_inclusion`,
89
+ unit: 's',
90
+ value: stats.p99
91
+ });
92
+ }
93
+ return data;
94
+ }
95
+ }
@@ -1,308 +1,52 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- import type { RollupCheatCodes } from '@aztec/aztec.js/ethereum';
1
+ import type { RollupCheatCodes } from '@aztec/aztec/testing';
2
+ import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
3
+ import type { ViemPublicClient } from '@aztec/ethereum/types';
4
+ import type { CheckpointNumber } from '@aztec/foundation/branded-types';
3
5
  import type { Logger } from '@aztec/foundation/log';
4
- import type { SequencerConfig } from '@aztec/sequencer-client';
6
+ import { type AztecNodeAdmin, type AztecNodeAdminConfig, createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
5
7
  import { ChildProcess } from 'child_process';
6
8
  import { z } from 'zod';
7
- import { type AlertConfig } from '../quality_of_service/alert_checker.js';
8
- declare const k8sLocalConfigSchema: z.ZodObject<{
9
- ETHEREUM_SLOT_DURATION: z.ZodNumber;
10
- AZTEC_SLOT_DURATION: z.ZodNumber;
11
- AZTEC_EPOCH_DURATION: z.ZodNumber;
12
- AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
13
- INSTANCE_NAME: z.ZodString;
14
- NAMESPACE: z.ZodString;
15
- CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
16
- CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
17
- CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
18
- CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
19
- CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
20
- CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
21
- GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
22
- METRICS_API_PATH: z.ZodDefault<z.ZodString>;
23
- SPARTAN_DIR: z.ZodString;
24
- ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
25
- L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
26
- SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
27
- K8S: z.ZodLiteral<"local">;
9
+ declare const testConfigSchema: z.ZodObject<{
10
+ NAMESPACE: z.ZodDefault<z.ZodString>;
11
+ REAL_VERIFIER: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
12
+ CREATE_ETH_DEVNET: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
13
+ L1_RPC_URLS_JSON: z.ZodOptional<z.ZodString>;
14
+ L1_ACCOUNT_MNEMONIC: z.ZodOptional<z.ZodString>;
15
+ AZTEC_SLOT_DURATION: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
16
+ AZTEC_EPOCH_DURATION: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
17
+ AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
28
18
  }, "strip", z.ZodTypeAny, {
29
- ETHEREUM_SLOT_DURATION: number;
30
- AZTEC_SLOT_DURATION: number;
31
- AZTEC_EPOCH_DURATION: number;
32
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
33
- INSTANCE_NAME: string;
34
19
  NAMESPACE: string;
35
- CONTAINER_NODE_PORT: number;
36
- CONTAINER_SEQUENCER_PORT: number;
37
- CONTAINER_PROVER_NODE_PORT: number;
38
- CONTAINER_PXE_PORT: number;
39
- CONTAINER_ETHEREUM_PORT: number;
40
- CONTAINER_METRICS_PORT: number;
41
- METRICS_API_PATH: string;
42
- SPARTAN_DIR: string;
43
- L1_ACCOUNT_MNEMONIC: string;
44
- SEPOLIA_RUN: string;
45
- K8S: "local";
46
- ETHEREUM_HOSTS?: string | undefined;
47
- GRAFANA_PASSWORD?: string | undefined;
48
- }, {
49
- ETHEREUM_SLOT_DURATION: number;
50
- AZTEC_SLOT_DURATION: number;
51
- AZTEC_EPOCH_DURATION: number;
52
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
53
- INSTANCE_NAME: string;
54
- NAMESPACE: string;
55
- SPARTAN_DIR: string;
56
- K8S: "local";
57
- ETHEREUM_HOSTS?: string | undefined;
58
- CONTAINER_NODE_PORT?: number | undefined;
59
- CONTAINER_SEQUENCER_PORT?: number | undefined;
60
- CONTAINER_PROVER_NODE_PORT?: number | undefined;
61
- CONTAINER_PXE_PORT?: number | undefined;
62
- CONTAINER_ETHEREUM_PORT?: number | undefined;
63
- CONTAINER_METRICS_PORT?: number | undefined;
64
- GRAFANA_PASSWORD?: string | undefined;
65
- METRICS_API_PATH?: string | undefined;
20
+ REAL_VERIFIER: boolean;
21
+ CREATE_ETH_DEVNET: boolean;
22
+ L1_RPC_URLS_JSON?: string | undefined;
66
23
  L1_ACCOUNT_MNEMONIC?: string | undefined;
67
- SEPOLIA_RUN?: string | undefined;
68
- }>;
69
- declare const k8sGCloudConfigSchema: z.ZodObject<z.objectUtil.extendShape<{
70
- ETHEREUM_SLOT_DURATION: z.ZodNumber;
71
- AZTEC_SLOT_DURATION: z.ZodNumber;
72
- AZTEC_EPOCH_DURATION: z.ZodNumber;
73
- AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
74
- INSTANCE_NAME: z.ZodString;
75
- NAMESPACE: z.ZodString;
76
- CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
77
- CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
78
- CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
79
- CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
80
- CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
81
- CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
82
- GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
83
- METRICS_API_PATH: z.ZodDefault<z.ZodString>;
84
- SPARTAN_DIR: z.ZodString;
85
- ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
86
- L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
87
- SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
88
- K8S: z.ZodLiteral<"local">;
89
- }, {
90
- K8S: z.ZodLiteral<"gcloud">;
91
- CLUSTER_NAME: z.ZodString;
92
- REGION: z.ZodString;
93
- }>, "strip", z.ZodTypeAny, {
94
- ETHEREUM_SLOT_DURATION: number;
95
24
  AZTEC_SLOT_DURATION: number;
96
25
  AZTEC_EPOCH_DURATION: number;
97
26
  AZTEC_PROOF_SUBMISSION_WINDOW: number;
98
- INSTANCE_NAME: string;
99
- NAMESPACE: string;
100
- CONTAINER_NODE_PORT: number;
101
- CONTAINER_SEQUENCER_PORT: number;
102
- CONTAINER_PROVER_NODE_PORT: number;
103
- CONTAINER_PXE_PORT: number;
104
- CONTAINER_ETHEREUM_PORT: number;
105
- CONTAINER_METRICS_PORT: number;
106
- METRICS_API_PATH: string;
107
- SPARTAN_DIR: string;
108
- L1_ACCOUNT_MNEMONIC: string;
109
- SEPOLIA_RUN: string;
110
- K8S: "gcloud";
111
- CLUSTER_NAME: string;
112
- REGION: string;
113
- ETHEREUM_HOSTS?: string | undefined;
114
- GRAFANA_PASSWORD?: string | undefined;
115
27
  }, {
116
- ETHEREUM_SLOT_DURATION: number;
117
- AZTEC_SLOT_DURATION: number;
118
- AZTEC_EPOCH_DURATION: number;
119
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
120
- INSTANCE_NAME: string;
121
- NAMESPACE: string;
122
- SPARTAN_DIR: string;
123
- K8S: "gcloud";
124
- CLUSTER_NAME: string;
125
- REGION: string;
126
- ETHEREUM_HOSTS?: string | undefined;
127
- CONTAINER_NODE_PORT?: number | undefined;
128
- CONTAINER_SEQUENCER_PORT?: number | undefined;
129
- CONTAINER_PROVER_NODE_PORT?: number | undefined;
130
- CONTAINER_PXE_PORT?: number | undefined;
131
- CONTAINER_ETHEREUM_PORT?: number | undefined;
132
- CONTAINER_METRICS_PORT?: number | undefined;
133
- GRAFANA_PASSWORD?: string | undefined;
134
- METRICS_API_PATH?: string | undefined;
28
+ NAMESPACE?: string | undefined;
29
+ REAL_VERIFIER?: string | number | boolean | undefined;
30
+ CREATE_ETH_DEVNET?: string | number | boolean | undefined;
31
+ L1_RPC_URLS_JSON?: string | undefined;
135
32
  L1_ACCOUNT_MNEMONIC?: string | undefined;
136
- SEPOLIA_RUN?: string | undefined;
137
- }>;
138
- declare const directConfigSchema: z.ZodObject<{
139
- PXE_URL: z.ZodString;
140
- NODE_URL: z.ZodString;
141
- ETHEREUM_HOSTS: z.ZodEffects<z.ZodString, string, string>;
142
- K8S: z.ZodLiteral<"false">;
143
- }, "strip", z.ZodTypeAny, {
144
- PXE_URL: string;
145
- ETHEREUM_HOSTS: string;
146
- K8S: "false";
147
- NODE_URL: string;
148
- }, {
149
- PXE_URL: string;
150
- ETHEREUM_HOSTS: string;
151
- K8S: "false";
152
- NODE_URL: string;
33
+ AZTEC_SLOT_DURATION?: number | undefined;
34
+ AZTEC_EPOCH_DURATION?: number | undefined;
35
+ AZTEC_PROOF_SUBMISSION_WINDOW?: number | undefined;
153
36
  }>;
154
- declare const envSchema: z.ZodDiscriminatedUnion<"K8S", [z.ZodObject<{
155
- ETHEREUM_SLOT_DURATION: z.ZodNumber;
156
- AZTEC_SLOT_DURATION: z.ZodNumber;
157
- AZTEC_EPOCH_DURATION: z.ZodNumber;
158
- AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
159
- INSTANCE_NAME: z.ZodString;
160
- NAMESPACE: z.ZodString;
161
- CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
162
- CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
163
- CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
164
- CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
165
- CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
166
- CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
167
- GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
168
- METRICS_API_PATH: z.ZodDefault<z.ZodString>;
169
- SPARTAN_DIR: z.ZodString;
170
- ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
171
- L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
172
- SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
173
- K8S: z.ZodLiteral<"local">;
174
- }, "strip", z.ZodTypeAny, {
175
- ETHEREUM_SLOT_DURATION: number;
176
- AZTEC_SLOT_DURATION: number;
177
- AZTEC_EPOCH_DURATION: number;
178
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
179
- INSTANCE_NAME: string;
180
- NAMESPACE: string;
181
- CONTAINER_NODE_PORT: number;
182
- CONTAINER_SEQUENCER_PORT: number;
183
- CONTAINER_PROVER_NODE_PORT: number;
184
- CONTAINER_PXE_PORT: number;
185
- CONTAINER_ETHEREUM_PORT: number;
186
- CONTAINER_METRICS_PORT: number;
187
- METRICS_API_PATH: string;
188
- SPARTAN_DIR: string;
189
- L1_ACCOUNT_MNEMONIC: string;
190
- SEPOLIA_RUN: string;
191
- K8S: "local";
192
- ETHEREUM_HOSTS?: string | undefined;
193
- GRAFANA_PASSWORD?: string | undefined;
194
- }, {
195
- ETHEREUM_SLOT_DURATION: number;
196
- AZTEC_SLOT_DURATION: number;
197
- AZTEC_EPOCH_DURATION: number;
198
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
199
- INSTANCE_NAME: string;
200
- NAMESPACE: string;
201
- SPARTAN_DIR: string;
202
- K8S: "local";
203
- ETHEREUM_HOSTS?: string | undefined;
204
- CONTAINER_NODE_PORT?: number | undefined;
205
- CONTAINER_SEQUENCER_PORT?: number | undefined;
206
- CONTAINER_PROVER_NODE_PORT?: number | undefined;
207
- CONTAINER_PXE_PORT?: number | undefined;
208
- CONTAINER_ETHEREUM_PORT?: number | undefined;
209
- CONTAINER_METRICS_PORT?: number | undefined;
210
- GRAFANA_PASSWORD?: string | undefined;
211
- METRICS_API_PATH?: string | undefined;
212
- L1_ACCOUNT_MNEMONIC?: string | undefined;
213
- SEPOLIA_RUN?: string | undefined;
214
- }>, z.ZodObject<z.objectUtil.extendShape<{
215
- ETHEREUM_SLOT_DURATION: z.ZodNumber;
216
- AZTEC_SLOT_DURATION: z.ZodNumber;
217
- AZTEC_EPOCH_DURATION: z.ZodNumber;
218
- AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
219
- INSTANCE_NAME: z.ZodString;
220
- NAMESPACE: z.ZodString;
221
- CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
222
- CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
223
- CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
224
- CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
225
- CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
226
- CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
227
- GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
228
- METRICS_API_PATH: z.ZodDefault<z.ZodString>;
229
- SPARTAN_DIR: z.ZodString;
230
- ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
231
- L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
232
- SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
233
- K8S: z.ZodLiteral<"local">;
234
- }, {
235
- K8S: z.ZodLiteral<"gcloud">;
236
- CLUSTER_NAME: z.ZodString;
237
- REGION: z.ZodString;
238
- }>, "strip", z.ZodTypeAny, {
239
- ETHEREUM_SLOT_DURATION: number;
240
- AZTEC_SLOT_DURATION: number;
241
- AZTEC_EPOCH_DURATION: number;
242
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
243
- INSTANCE_NAME: string;
244
- NAMESPACE: string;
245
- CONTAINER_NODE_PORT: number;
246
- CONTAINER_SEQUENCER_PORT: number;
247
- CONTAINER_PROVER_NODE_PORT: number;
248
- CONTAINER_PXE_PORT: number;
249
- CONTAINER_ETHEREUM_PORT: number;
250
- CONTAINER_METRICS_PORT: number;
251
- METRICS_API_PATH: string;
252
- SPARTAN_DIR: string;
253
- L1_ACCOUNT_MNEMONIC: string;
254
- SEPOLIA_RUN: string;
255
- K8S: "gcloud";
256
- CLUSTER_NAME: string;
257
- REGION: string;
258
- ETHEREUM_HOSTS?: string | undefined;
259
- GRAFANA_PASSWORD?: string | undefined;
260
- }, {
261
- ETHEREUM_SLOT_DURATION: number;
262
- AZTEC_SLOT_DURATION: number;
263
- AZTEC_EPOCH_DURATION: number;
264
- AZTEC_PROOF_SUBMISSION_WINDOW: number;
265
- INSTANCE_NAME: string;
266
- NAMESPACE: string;
267
- SPARTAN_DIR: string;
268
- K8S: "gcloud";
269
- CLUSTER_NAME: string;
270
- REGION: string;
271
- ETHEREUM_HOSTS?: string | undefined;
272
- CONTAINER_NODE_PORT?: number | undefined;
273
- CONTAINER_SEQUENCER_PORT?: number | undefined;
274
- CONTAINER_PROVER_NODE_PORT?: number | undefined;
275
- CONTAINER_PXE_PORT?: number | undefined;
276
- CONTAINER_ETHEREUM_PORT?: number | undefined;
277
- CONTAINER_METRICS_PORT?: number | undefined;
278
- GRAFANA_PASSWORD?: string | undefined;
279
- METRICS_API_PATH?: string | undefined;
280
- L1_ACCOUNT_MNEMONIC?: string | undefined;
281
- SEPOLIA_RUN?: string | undefined;
282
- }>, z.ZodObject<{
283
- PXE_URL: z.ZodString;
284
- NODE_URL: z.ZodString;
285
- ETHEREUM_HOSTS: z.ZodEffects<z.ZodString, string, string>;
286
- K8S: z.ZodLiteral<"false">;
287
- }, "strip", z.ZodTypeAny, {
288
- PXE_URL: string;
289
- ETHEREUM_HOSTS: string;
290
- K8S: "false";
291
- NODE_URL: string;
292
- }, {
293
- PXE_URL: string;
294
- ETHEREUM_HOSTS: string;
295
- K8S: "false";
296
- NODE_URL: string;
297
- }>]>;
298
- export type K8sLocalConfig = z.infer<typeof k8sLocalConfigSchema>;
299
- export type K8sGCloudConfig = z.infer<typeof k8sGCloudConfigSchema>;
300
- export type DirectConfig = z.infer<typeof directConfigSchema>;
301
- export type EnvConfig = z.infer<typeof envSchema>;
302
- export declare function isK8sConfig(config: EnvConfig): config is K8sLocalConfig | K8sGCloudConfig;
303
- export declare function isGCloudConfig(config: EnvConfig): config is K8sGCloudConfig;
304
- export declare function setupEnvironment(env: unknown): EnvConfig;
305
- export declare function startPortForward({ resource, namespace, containerPort, hostPort, }: {
37
+ export type TestConfig = z.infer<typeof testConfigSchema>;
38
+ export declare function setupEnvironment(env: unknown): TestConfig;
39
+ export declare function getAztecBin(): string;
40
+ /**
41
+ * Runs the Aztec binary
42
+ * @param args - The arguments to pass to the Aztec binary
43
+ * @param logger - The logger to use
44
+ * @param env - Optional environment variables to set for the process
45
+ * @returns The exit code of the Aztec binary
46
+ */
47
+ export declare function runAztecBin(args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
48
+ export declare function runProjectScript(script: string, args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
49
+ export declare function startPortForward({ resource, namespace, containerPort, hostPort }: {
306
50
  resource: string;
307
51
  namespace: string;
308
52
  containerPort: number;
@@ -311,25 +55,51 @@ export declare function startPortForward({ resource, namespace, containerPort, h
311
55
  process: ChildProcess;
312
56
  port: number;
313
57
  }>;
314
- export declare function deleteResourceByName({ resource, namespace, name, force, }: {
58
+ export declare function getExternalIP(namespace: string, serviceName: string): Promise<string>;
59
+ export declare function startPortForwardForRPC(namespace: string, index?: number): Promise<{
60
+ process: ChildProcess;
61
+ port: number;
62
+ }>;
63
+ export declare function startPortForwardForEthereum(namespace: string): Promise<{
64
+ process: ChildProcess;
65
+ port: number;
66
+ }>;
67
+ export declare function deleteResourceByName({ resource, namespace, name, force }: {
315
68
  resource: string;
316
69
  namespace: string;
317
70
  name: string;
318
71
  force?: boolean;
319
72
  }): Promise<string>;
320
- export declare function deleteResourceByLabel({ resource, namespace, label, }: {
73
+ export declare function deleteResourceByLabel({ resource, namespace, label, timeout, force }: {
321
74
  resource: string;
322
75
  namespace: string;
323
76
  label: string;
77
+ timeout?: string;
78
+ force?: boolean;
324
79
  }): Promise<string>;
325
- export declare function waitForResourceByLabel({ resource, label, namespace, condition, timeout, }: {
80
+ export declare function waitForResourceByLabel({ resource, label, namespace, condition, timeout }: {
326
81
  resource: string;
327
82
  label: string;
328
83
  namespace: string;
329
84
  condition?: string;
330
85
  timeout?: string;
331
86
  }): Promise<string>;
87
+ export declare function waitForResourceByName({ resource, name, namespace, condition, timeout }: {
88
+ resource: string;
89
+ name: string;
90
+ namespace: string;
91
+ condition?: string;
92
+ timeout?: string;
93
+ }): Promise<string>;
94
+ export declare function waitForResourcesByName({ resource, names, namespace, condition, timeout }: {
95
+ resource: string;
96
+ names: string[];
97
+ namespace: string;
98
+ condition?: string;
99
+ timeout?: string;
100
+ }): Promise<void>;
332
101
  export declare function getChartDir(spartanDir: string, chartName: string): string;
102
+ export declare function uninstallChaosMesh(instanceName: string, namespace: string, logger: Logger): Promise<void>;
333
103
  /**
334
104
  * Installs a Helm chart with the given parameters.
335
105
  * @param instanceName - The name of the Helm chart instance.
@@ -347,7 +117,7 @@ export declare function getChartDir(spartanDir: string, chartName: string): stri
347
117
  * console.log(stdout);
348
118
  * ```
349
119
  */
350
- export declare function installChaosMeshChart({ instanceName, targetNamespace, valuesFile, helmChartDir, chaosMeshNamespace, timeout, clean, values, logger, }: {
120
+ export declare function installChaosMeshChart({ instanceName, targetNamespace, valuesFile, helmChartDir, timeout, clean, values, logger }: {
351
121
  instanceName: string;
352
122
  targetNamespace: string;
353
123
  valuesFile: string;
@@ -358,51 +128,109 @@ export declare function installChaosMeshChart({ instanceName, targetNamespace, v
358
128
  values?: Record<string, string | number>;
359
129
  logger: Logger;
360
130
  }): Promise<string>;
361
- export declare function applyProverFailure({ namespace, spartanDir, durationSeconds, logger, }: {
131
+ export declare function applyProverFailure({ namespace, spartanDir, durationSeconds, logger }: {
362
132
  namespace: string;
363
133
  spartanDir: string;
364
134
  durationSeconds: number;
365
135
  logger: Logger;
366
136
  }): Promise<string>;
367
- export declare function applyProverKill({ namespace, spartanDir, logger, }: {
137
+ export declare function applyValidatorFailure({ namespace, spartanDir, logger, values, instanceName }: {
138
+ namespace: string;
139
+ spartanDir: string;
140
+ logger: Logger;
141
+ values?: Record<string, string | number>;
142
+ instanceName?: string;
143
+ }): Promise<string>;
144
+ export declare function applyProverKill({ namespace, spartanDir, logger, values }: {
368
145
  namespace: string;
369
146
  spartanDir: string;
370
147
  logger: Logger;
148
+ values?: Record<string, string | number>;
371
149
  }): Promise<string>;
372
- export declare function applyProverBrokerKill({ namespace, spartanDir, logger, }: {
150
+ export declare function applyProverBrokerKill({ namespace, spartanDir, logger, values }: {
373
151
  namespace: string;
374
152
  spartanDir: string;
375
153
  logger: Logger;
154
+ values?: Record<string, string | number>;
376
155
  }): Promise<string>;
377
- export declare function applyBootNodeFailure({ namespace, spartanDir, durationSeconds, logger, }: {
156
+ export declare function applyBootNodeFailure({ instanceName, namespace, spartanDir, durationSeconds, logger, values }: {
157
+ instanceName?: string;
378
158
  namespace: string;
379
159
  spartanDir: string;
380
160
  durationSeconds: number;
381
161
  logger: Logger;
162
+ values?: Record<string, string | number>;
382
163
  }): Promise<string>;
383
- export declare function applyValidatorKill({ namespace, spartanDir, logger, }: {
164
+ export declare function applyValidatorKill({ instanceName, namespace, spartanDir, logger, values, clean }: {
165
+ instanceName?: string;
384
166
  namespace: string;
385
167
  spartanDir: string;
386
168
  logger: Logger;
169
+ values?: Record<string, string | number>;
170
+ clean?: boolean;
387
171
  }): Promise<string>;
388
- export declare function applyNetworkShaping({ valuesFile, namespace, spartanDir, logger, }: {
172
+ export declare function applyNetworkShaping({ instanceName, valuesFile, namespace, spartanDir, logger }: {
173
+ instanceName?: string;
389
174
  valuesFile: string;
390
175
  namespace: string;
391
176
  spartanDir: string;
392
177
  logger: Logger;
393
178
  }): Promise<string>;
394
- export declare function awaitL2BlockNumber(rollupCheatCodes: RollupCheatCodes, blockNumber: bigint, timeoutSeconds: number, logger: Logger): Promise<void>;
179
+ export declare function awaitCheckpointNumber(rollupCheatCodes: RollupCheatCodes, checkpointNumber: CheckpointNumber, timeoutSeconds: number, logger: Logger): Promise<void>;
395
180
  export declare function restartBot(namespace: string, logger: Logger): Promise<void>;
396
- export declare function enableValidatorDynamicBootNode(instanceName: string, namespace: string, spartanDir: string, logger: Logger): Promise<void>;
397
- export declare function runAlertCheck(config: EnvConfig, alerts: AlertConfig[], logger: Logger): Promise<void>;
398
- export declare function updateSequencerConfig(url: string, config: Partial<SequencerConfig>): Promise<void>;
399
- export declare function getSequencers(namespace: string): Promise<string[]>;
400
- export declare function updateK8sSequencersConfig(args: {
401
- containerPort: number;
181
+ /**
182
+ * Installs or upgrades the transfer bot Helm release for the given namespace.
183
+ * Intended for test setup to enable L2 traffic generation only when needed.
184
+ */
185
+ export declare function installTransferBot({ namespace, spartanDir, logger, replicas, txIntervalSeconds, followChain, mnemonic, mnemonicStartIndex, botPrivateKey, nodeUrl, timeout, reuseValues, aztecSlotDuration }: {
186
+ namespace: string;
187
+ spartanDir: string;
188
+ logger: Logger;
189
+ replicas?: number;
190
+ txIntervalSeconds?: number;
191
+ followChain?: string;
192
+ mnemonic?: string;
193
+ mnemonicStartIndex?: number | string;
194
+ botPrivateKey?: string;
195
+ nodeUrl?: string;
196
+ timeout?: string;
197
+ reuseValues?: boolean;
198
+ aztecSlotDuration?: number;
199
+ }): Promise<void>;
200
+ /**
201
+ * Uninstalls the transfer bot Helm release from the given namespace.
202
+ * Intended for test teardown to clean up bot resources.
203
+ */
204
+ export declare function uninstallTransferBot(namespace: string, logger: Logger): Promise<void>;
205
+ /**
206
+ * Enables or disables probabilistic transaction dropping on validators and waits for rollout.
207
+ * Wired to env vars P2P_DROP_TX and P2P_DROP_TX_CHANCE via Helm values.
208
+ */
209
+ export declare function setValidatorTxDrop({ namespace, enabled, probability, logger }: {
402
210
  namespace: string;
403
- config: Partial<SequencerConfig>;
211
+ enabled: boolean;
212
+ probability: number;
213
+ logger: Logger;
404
214
  }): Promise<void>;
405
- export declare function updateSequencersConfig(env: EnvConfig, config: Partial<SequencerConfig>): Promise<void>;
215
+ export declare function restartValidators(namespace: string, logger: Logger): Promise<void>;
216
+ export declare function enableValidatorDynamicBootNode(instanceName: string, namespace: string, spartanDir: string, logger: Logger): Promise<void>;
217
+ export declare function getSequencers(namespace: string): Promise<string[]>;
218
+ export declare function updateSequencersConfig(env: TestConfig, config: Partial<AztecNodeAdminConfig>): Promise<AztecNodeAdminConfig[]>;
219
+ export declare function getSequencersConfig(env: TestConfig): Promise<AztecNodeAdminConfig[]>;
220
+ export declare function withSequencersAdmin<T>(env: TestConfig, fn: (node: AztecNodeAdmin) => Promise<T>): Promise<T[]>;
221
+ /**
222
+ * Returns a public viem client to the eth execution node. If it was part of a local eth devnet,
223
+ * it first port-forwards the service and points to it. Otherwise, just uses the external RPC url.
224
+ */
225
+ export declare function getPublicViemClient(env: TestConfig,
226
+ /** If set, will push the new process into it */
227
+ processes?: ChildProcess[]): Promise<{
228
+ url: string;
229
+ client: ViemPublicClient;
230
+ process?: ChildProcess;
231
+ }>;
232
+ /** Queries an Aztec node for the L1 deployment addresses */
233
+ export declare function getL1DeploymentAddresses(env: TestConfig): Promise<L1ContractAddresses>;
406
234
  /**
407
235
  * Rolls the Aztec pods in the given namespace.
408
236
  * @param namespace - The namespace to roll the Aztec pods in.
@@ -411,5 +239,15 @@ export declare function updateSequencersConfig(env: EnvConfig, config: Partial<S
411
239
  * This is useful for testing, but you should be aware of the implications.
412
240
  */
413
241
  export declare function rollAztecPods(namespace: string): Promise<void>;
242
+ /**
243
+ * Returns the absolute path to the git repository root
244
+ */
245
+ export declare function getGitProjectRoot(): string;
246
+ /** Returns a client to the RPC of the given sequencer (defaults to first) */
247
+ export declare function getNodeClient(env: TestConfig, index?: number): Promise<{
248
+ node: ReturnType<typeof createAztecNodeClient>;
249
+ port: number;
250
+ process: ChildProcess;
251
+ }>;
414
252
  export {};
415
- //# sourceMappingURL=utils.d.ts.map
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGFydGFuL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLcEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLG9CQUFvQixFQUV6QixxQkFBcUIsRUFDdEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUlwRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBTXhCLFFBQUEsTUFBTSxnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQVNwQixDQUFDO0FBRUgsTUFBTSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQztBQUUxRCx3QkFBZ0IsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxVQUFVLENBSXpEO0FBeUJELHdCQUFnQixXQUFXLFdBRTFCO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFFdkY7QUFFRCx3QkFBZ0IsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1B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