@aztec/end-to-end 0.0.1-commit.9b94fc1 → 0.0.1-commit.9ee6fcc6

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 (267) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +21 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +15 -16
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +136 -141
  7. package/dest/bench/client_flows/config.d.ts +2 -2
  8. package/dest/bench/client_flows/config.d.ts.map +1 -1
  9. package/dest/bench/client_flows/config.js +18 -0
  10. package/dest/bench/client_flows/data_extractor.js +3 -1
  11. package/dest/bench/utils.d.ts +9 -8
  12. package/dest/bench/utils.d.ts.map +1 -1
  13. package/dest/bench/utils.js +31 -19
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +9 -8
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +107 -113
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +92 -71
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  22. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  23. package/dest/e2e_epochs/epochs_test.d.ts +27 -15
  24. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  25. package/dest/e2e_epochs/epochs_test.js +104 -52
  26. package/dest/e2e_fees/bridging_race.notest.js +4 -6
  27. package/dest/e2e_fees/fees_test.d.ts +21 -17
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +137 -145
  30. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +14 -16
  33. package/dest/e2e_multi_validator/utils.js +1 -1
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  36. package/dest/e2e_nested_contract/nested_contract_test.js +30 -40
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  39. package/dest/e2e_p2p/inactivity_slash_test.js +6 -9
  40. package/dest/e2e_p2p/p2p_network.d.ts +17 -14
  41. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  42. package/dest/e2e_p2p/p2p_network.js +141 -115
  43. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  44. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  45. package/dest/e2e_p2p/reqresp/utils.js +190 -0
  46. package/dest/e2e_p2p/shared.d.ts +27 -7
  47. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  48. package/dest/e2e_p2p/shared.js +50 -22
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  54. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  55. package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
  56. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  57. package/dest/e2e_token_contract/token_contract_test.js +100 -92
  58. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  59. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  60. package/dest/fixtures/authwit_proxy.js +30 -0
  61. package/dest/fixtures/e2e_prover_test.d.ts +16 -23
  62. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  63. package/dest/fixtures/e2e_prover_test.js +117 -138
  64. package/dest/fixtures/elu_monitor.d.ts +21 -0
  65. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  66. package/dest/fixtures/elu_monitor.js +102 -0
  67. package/dest/fixtures/fixtures.d.ts +6 -3
  68. package/dest/fixtures/fixtures.d.ts.map +1 -1
  69. package/dest/fixtures/fixtures.js +8 -3
  70. package/dest/fixtures/get_acvm_config.js +1 -1
  71. package/dest/fixtures/get_bb_config.d.ts +1 -1
  72. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  73. package/dest/fixtures/get_bb_config.js +5 -5
  74. package/dest/fixtures/ha_setup.d.ts +71 -0
  75. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  76. package/dest/fixtures/ha_setup.js +116 -0
  77. package/dest/fixtures/index.d.ts +2 -1
  78. package/dest/fixtures/index.d.ts.map +1 -1
  79. package/dest/fixtures/index.js +1 -0
  80. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  81. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  82. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  83. package/dest/fixtures/setup.d.ts +239 -0
  84. package/dest/fixtures/setup.d.ts.map +1 -0
  85. package/dest/fixtures/setup.js +608 -0
  86. package/dest/fixtures/setup_p2p_test.d.ts +16 -9
  87. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  88. package/dest/fixtures/setup_p2p_test.js +43 -32
  89. package/dest/fixtures/token_utils.d.ts +2 -2
  90. package/dest/fixtures/token_utils.d.ts.map +1 -1
  91. package/dest/fixtures/token_utils.js +12 -8
  92. package/dest/fixtures/utils.d.ts +5 -637
  93. package/dest/fixtures/utils.d.ts.map +1 -1
  94. package/dest/fixtures/utils.js +4 -647
  95. package/dest/fixtures/web3signer.js +1 -1
  96. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  97. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  98. package/dest/fixtures/with_telemetry_utils.js +2 -2
  99. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  100. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  101. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  102. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  103. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  104. package/dest/quality_of_service/prometheus_client.js +67 -0
  105. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  106. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  107. package/dest/shared/cross_chain_test_harness.js +27 -27
  108. package/dest/shared/gas_portal_test_harness.d.ts +12 -2
  109. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  110. package/dest/shared/gas_portal_test_harness.js +3 -3
  111. package/dest/shared/index.d.ts +3 -2
  112. package/dest/shared/index.d.ts.map +1 -1
  113. package/dest/shared/index.js +1 -0
  114. package/dest/shared/jest_setup.js +41 -1
  115. package/dest/shared/mock_state_view.d.ts +86 -0
  116. package/dest/shared/mock_state_view.d.ts.map +1 -0
  117. package/dest/shared/mock_state_view.js +186 -0
  118. package/dest/shared/submit-transactions.d.ts +4 -4
  119. package/dest/shared/submit-transactions.d.ts.map +1 -1
  120. package/dest/shared/submit-transactions.js +9 -11
  121. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  122. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  123. package/dest/shared/uniswap_l1_l2.js +58 -39
  124. package/dest/simulators/lending_simulator.d.ts +6 -2
  125. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  126. package/dest/simulators/lending_simulator.js +6 -6
  127. package/dest/simulators/token_simulator.d.ts +1 -1
  128. package/dest/simulators/token_simulator.d.ts.map +1 -1
  129. package/dest/simulators/token_simulator.js +3 -24
  130. package/dest/spartan/setup_test_wallets.d.ts +15 -5
  131. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  132. package/dest/spartan/setup_test_wallets.js +109 -38
  133. package/dest/spartan/tx_metrics.d.ts +88 -0
  134. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  135. package/dest/spartan/tx_metrics.js +422 -0
  136. package/dest/spartan/utils/bot.d.ts +28 -0
  137. package/dest/spartan/utils/bot.d.ts.map +1 -0
  138. package/dest/spartan/utils/bot.js +142 -0
  139. package/dest/spartan/utils/chaos.d.ts +79 -0
  140. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  141. package/dest/spartan/utils/chaos.js +142 -0
  142. package/dest/spartan/utils/clients.d.ts +39 -0
  143. package/dest/spartan/utils/clients.d.ts.map +1 -0
  144. package/dest/spartan/utils/clients.js +90 -0
  145. package/dest/spartan/utils/config.d.ts +45 -0
  146. package/dest/spartan/utils/config.d.ts.map +1 -0
  147. package/dest/spartan/utils/config.js +23 -0
  148. package/dest/spartan/utils/health.d.ts +63 -0
  149. package/dest/spartan/utils/health.d.ts.map +1 -0
  150. package/dest/spartan/utils/health.js +202 -0
  151. package/dest/spartan/utils/helm.d.ts +15 -0
  152. package/dest/spartan/utils/helm.d.ts.map +1 -0
  153. package/dest/spartan/utils/helm.js +47 -0
  154. package/dest/spartan/utils/index.d.ts +11 -0
  155. package/dest/spartan/utils/index.d.ts.map +1 -0
  156. package/dest/spartan/utils/index.js +22 -0
  157. package/dest/spartan/utils/k8s.d.ts +128 -0
  158. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  159. package/dest/spartan/utils/k8s.js +381 -0
  160. package/dest/spartan/utils/nodes.d.ts +40 -0
  161. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  162. package/dest/spartan/utils/nodes.js +461 -0
  163. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  164. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  165. package/dest/spartan/utils/pod_logs.js +74 -0
  166. package/dest/spartan/utils/scripts.d.ts +30 -0
  167. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  168. package/dest/spartan/utils/scripts.js +81 -0
  169. package/dest/spartan/utils.d.ts +2 -218
  170. package/dest/spartan/utils.d.ts.map +1 -1
  171. package/dest/spartan/utils.js +1 -749
  172. package/dest/test-wallet/test_wallet.d.ts +76 -0
  173. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  174. package/dest/test-wallet/test_wallet.js +214 -0
  175. package/dest/test-wallet/utils.d.ts +41 -0
  176. package/dest/test-wallet/utils.d.ts.map +1 -0
  177. package/dest/test-wallet/utils.js +71 -0
  178. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  179. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  180. package/dest/test-wallet/wallet_worker_script.js +48 -0
  181. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  182. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  183. package/dest/test-wallet/worker_wallet.js +151 -0
  184. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  185. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  186. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  187. package/package.json +48 -45
  188. package/src/bench/client_flows/benchmark.ts +24 -2
  189. package/src/bench/client_flows/client_flows_benchmark.ts +156 -215
  190. package/src/bench/client_flows/config.ts +9 -1
  191. package/src/bench/client_flows/data_extractor.ts +1 -1
  192. package/src/bench/utils.ts +36 -21
  193. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +120 -145
  194. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -126
  195. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  196. package/src/e2e_epochs/epochs_test.ts +172 -111
  197. package/src/e2e_fees/bridging_race.notest.ts +5 -11
  198. package/src/e2e_fees/fees_test.ts +178 -228
  199. package/src/e2e_l1_publisher/write_json.ts +16 -16
  200. package/src/e2e_multi_validator/utils.ts +1 -1
  201. package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
  202. package/src/e2e_p2p/inactivity_slash_test.ts +7 -10
  203. package/src/e2e_p2p/p2p_network.ts +204 -181
  204. package/src/e2e_p2p/reqresp/utils.ts +256 -0
  205. package/src/e2e_p2p/shared.ts +87 -29
  206. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  207. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  208. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  209. package/src/e2e_token_contract/token_contract_test.ts +121 -119
  210. package/src/fixtures/authwit_proxy.ts +50 -0
  211. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  212. package/src/fixtures/e2e_prover_test.ts +141 -188
  213. package/src/fixtures/elu_monitor.ts +126 -0
  214. package/src/fixtures/fixtures.ts +12 -5
  215. package/src/fixtures/get_acvm_config.ts +1 -1
  216. package/src/fixtures/get_bb_config.ts +7 -6
  217. package/src/fixtures/ha_setup.ts +186 -0
  218. package/src/fixtures/index.ts +1 -0
  219. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  220. package/src/fixtures/setup.ts +905 -0
  221. package/src/fixtures/setup_p2p_test.ts +43 -47
  222. package/src/fixtures/token_utils.ts +10 -6
  223. package/src/fixtures/utils.ts +27 -966
  224. package/src/fixtures/web3signer.ts +1 -1
  225. package/src/fixtures/with_telemetry_utils.ts +2 -2
  226. package/src/guides/up_quick_start.sh +3 -3
  227. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  228. package/src/quality_of_service/prometheus_client.ts +113 -0
  229. package/src/shared/cross_chain_test_harness.ts +30 -43
  230. package/src/shared/gas_portal_test_harness.ts +3 -3
  231. package/src/shared/index.ts +2 -1
  232. package/src/shared/jest_setup.ts +51 -1
  233. package/src/shared/mock_state_view.ts +188 -0
  234. package/src/shared/submit-transactions.ts +11 -16
  235. package/src/shared/uniswap_l1_l2.ts +86 -102
  236. package/src/simulators/lending_simulator.ts +11 -7
  237. package/src/simulators/token_simulator.ts +6 -30
  238. package/src/spartan/DEVELOP.md +7 -0
  239. package/src/spartan/setup_test_wallets.ts +167 -27
  240. package/src/spartan/tx_metrics.ts +376 -0
  241. package/src/spartan/utils/bot.ts +188 -0
  242. package/src/spartan/utils/chaos.ts +253 -0
  243. package/src/spartan/utils/clients.ts +100 -0
  244. package/src/spartan/utils/config.ts +29 -0
  245. package/src/spartan/utils/health.ts +255 -0
  246. package/src/spartan/utils/helm.ts +84 -0
  247. package/src/spartan/utils/index.ts +71 -0
  248. package/src/spartan/utils/k8s.ts +535 -0
  249. package/src/spartan/utils/nodes.ts +543 -0
  250. package/src/spartan/utils/pod_logs.ts +99 -0
  251. package/src/spartan/utils/scripts.ts +99 -0
  252. package/src/spartan/utils.ts +1 -942
  253. package/src/test-wallet/test_wallet.ts +294 -0
  254. package/src/test-wallet/utils.ts +112 -0
  255. package/src/test-wallet/wallet_worker_script.ts +60 -0
  256. package/src/test-wallet/worker_wallet.ts +213 -0
  257. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  258. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  259. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  260. package/dest/fixtures/setup_l1_contracts.js +0 -17
  261. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  262. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  263. package/dest/fixtures/snapshot_manager.js +0 -505
  264. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  265. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  266. package/src/fixtures/setup_l1_contracts.ts +0 -26
  267. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -4,16 +4,19 @@ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/cont
4
4
  import { Fr } from '@aztec/aztec.js/fields';
5
5
  import { MerkleTreeId } from '@aztec/aztec.js/trees';
6
6
  import { EpochCache } from '@aztec/epoch-cache';
7
- import { DefaultL1ContractsConfig, createExtendedL1Client } from '@aztec/ethereum';
7
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
8
+ import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
8
9
  import { RollupContract } from '@aztec/ethereum/contracts';
9
- import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
10
- import { EpochNumber } from '@aztec/foundation/branded-types';
10
+ import { createDelayer, waitUntilL1Timestamp, wrapClientWithDelayer } from '@aztec/ethereum/l1-tx-utils';
11
+ import { ChainMonitor } from '@aztec/ethereum/test';
12
+ import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
11
13
  import { SecretValue } from '@aztec/foundation/config';
12
- import { randomBytes } from '@aztec/foundation/crypto';
13
- import { withLogNameSuffix } from '@aztec/foundation/log';
14
+ import { randomBytes } from '@aztec/foundation/crypto/random';
15
+ import { withLoggerBindings } from '@aztec/foundation/log/server';
14
16
  import { retryUntil } from '@aztec/foundation/retry';
15
17
  import { sleep } from '@aztec/foundation/sleep';
16
18
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
19
+ import { TestContract } from '@aztec/noir-test-contracts.js/Test';
17
20
  import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
18
21
  import { SequencerState } from '@aztec/sequencer-client';
19
22
  import { EthAddress } from '@aztec/stdlib/block';
@@ -22,7 +25,7 @@ import { tryStop } from '@aztec/stdlib/interfaces/server';
22
25
  import { join } from 'path';
23
26
  import { privateKeyToAccount } from 'viem/accounts';
24
27
  import { createAndSyncProverNode, getPrivateKeyFromIndex, setup } from '../fixtures/utils.js';
25
- export const WORLD_STATE_BLOCK_HISTORY = 2;
28
+ export const WORLD_STATE_CHECKPOINT_HISTORY = 2;
26
29
  export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
27
30
  export const ARCHIVER_POLL_INTERVAL = 50;
28
31
  export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
@@ -53,10 +56,12 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
53
56
  static getSlotDurations(opts = {}) {
54
57
  const envEthereumSlotDuration = process.env.L1_BLOCK_TIME ? parseInt(process.env.L1_BLOCK_TIME) : DEFAULT_L1_BLOCK_TIME;
55
58
  const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
56
- const aztecSlotDuration = opts.aztecSlotDuration ?? ethereumSlotDuration * 2;
59
+ const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
57
60
  const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
58
61
  const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
62
+ const l1PublishingTime = opts.l1PublishingTime ?? 1;
59
63
  return {
64
+ l1PublishingTime,
60
65
  ethereumSlotDuration,
61
66
  aztecSlotDuration,
62
67
  aztecEpochDuration,
@@ -64,7 +69,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
64
69
  };
65
70
  }
66
71
  async setup(opts = {}) {
67
- const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs } = EpochsTestContext.getSlotDurations(opts);
72
+ const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs, l1PublishingTime } = EpochsTestContext.getSlotDurations(opts);
68
73
  this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
69
74
  this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
70
75
  // Set up system without any account nor protocol contracts
@@ -74,8 +79,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
74
79
  checkIntervalMs: 50,
75
80
  archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
76
81
  worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
77
- skipProtocolContracts: true,
78
- salt: 1,
79
82
  aztecEpochDuration,
80
83
  aztecSlotDuration,
81
84
  ethereumSlotDuration,
@@ -89,10 +92,16 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
89
92
  // using the prover's eth address if the proverId is used for something in the rollup contract
90
93
  // Use numeric EthAddress for deterministic prover id
91
94
  proverId: EthAddress.fromNumber(1),
92
- worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
95
+ worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
93
96
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
94
97
  slasherFlavor: 'none',
98
+ l1PublishingTime,
95
99
  ...opts
100
+ }, // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
101
+ // Can be overridden via opts.pxeOpts.
102
+ {
103
+ syncChainTip: 'checkpointed',
104
+ ...opts.pxeOpts
96
105
  });
97
106
  this.context = context;
98
107
  this.proverNodes = context.proverNode ? [
@@ -109,10 +118,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
109
118
  });
110
119
  // Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
111
120
  this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
112
- // This is hideous.
113
- // We ought to have a definite reference to the l1TxUtils that we're using in both places, provided by the test context.
114
- this.proverDelayer = context.proverNode ? context.proverNode.publisher.l1TxUtils.delayer : undefined;
115
- this.sequencerDelayer = context.sequencer ? context.sequencer.sequencer.publisher.l1TxUtils.delayer : undefined;
121
+ this.proverDelayer = context.proverDelayer;
122
+ this.sequencerDelayer = context.sequencerDelayer;
116
123
  if (context.proverNode && !this.proverDelayer || context.sequencer && !this.sequencerDelayer) {
117
124
  throw new Error(`Could not find prover or sequencer delayer`);
118
125
  }
@@ -124,7 +131,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
124
131
  l1StartBlock: await this.rollup.getL1StartBlock(),
125
132
  l1GenesisTime: await this.rollup.getL1GenesisTime(),
126
133
  ethereumSlotDuration,
127
- proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs())
134
+ proofSubmissionEpochs: Number(await this.rollup.getProofSubmissionEpochs()),
135
+ targetCommitteeSize: await this.rollup.getTargetCommitteeSize(),
136
+ rollupManaLimit: Number(await this.rollup.getManaLimit())
128
137
  };
129
138
  this.logger.info(`L2 genesis at L1 block ${this.constants.l1StartBlock} (timestamp ${this.constants.l1GenesisTime})`);
130
139
  }
@@ -137,16 +146,29 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
137
146
  async createProverNode(opts = {}) {
138
147
  this.logger.warn('Creating and syncing a simulated prover node...');
139
148
  const proverNodePrivateKey = this.getNextPrivateKey();
140
- const suffix = (this.proverNodes.length + 1).toString();
141
- const proverNode = await withLogNameSuffix(suffix, ()=>createAndSyncProverNode(proverNodePrivateKey, {
142
- ...this.context.config
143
- }, {
144
- dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
145
- proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
149
+ const proverIndex = this.proverNodes.length + 1;
150
+ const { mockGossipSubNetwork } = this.context;
151
+ const { proverNode } = await withLoggerBindings({
152
+ actor: `prover-${proverIndex}`
153
+ }, ()=>createAndSyncProverNode(proverNodePrivateKey, {
154
+ ...this.context.config,
155
+ p2pEnabled: this.context.config.p2pEnabled || mockGossipSubNetwork !== undefined,
156
+ proverId: EthAddress.fromNumber(proverIndex),
146
157
  dontStart: opts.dontStart,
147
158
  ...opts
148
- }, this.context.aztecNode, undefined, {
149
- dateProvider: this.context.dateProvider
159
+ }, {
160
+ dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
161
+ }, {
162
+ dateProvider: this.context.dateProvider,
163
+ p2pClientDeps: {
164
+ p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined,
165
+ rpcTxProviders: [
166
+ this.context.aztecNode
167
+ ]
168
+ }
169
+ }, {
170
+ prefilledPublicData: this.context.prefilledPublicData ?? [],
171
+ dontStart: opts.dontStart
150
172
  }));
151
173
  this.proverNodes.push(proverNode);
152
174
  return proverNode;
@@ -167,7 +189,8 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
167
189
  });
168
190
  }
169
191
  async createNode(opts = {}) {
170
- const suffix = (this.nodes.length + 1).toString();
192
+ const nodeIndex = this.nodes.length + 1;
193
+ const actorPrefix = opts.disableValidator ? 'node' : 'validator';
171
194
  const { mockGossipSubNetwork } = this.context;
172
195
  const resolvedConfig = {
173
196
  ...this.context.config,
@@ -175,35 +198,25 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
175
198
  };
176
199
  const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
177
200
  const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
178
- const node = await withLogNameSuffix(suffix, ()=>AztecNodeService.createAndSync({
201
+ const node = await withLoggerBindings({
202
+ actor: `${actorPrefix}-${nodeIndex}`
203
+ }, ()=>AztecNodeService.createAndSync({
179
204
  ...resolvedConfig,
180
205
  dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
181
206
  validatorPrivateKeys: opts.validatorPrivateKeys ?? new SecretValue([]),
207
+ nodeId: resolvedConfig.nodeId || `${actorPrefix}-${nodeIndex}`,
182
208
  p2pEnabled,
183
209
  p2pIp
184
210
  }, {
185
211
  dateProvider: this.context.dateProvider,
186
212
  p2pClientDeps: {
187
213
  p2pServiceFactory: mockGossipSubNetwork ? getMockPubSubP2PServiceFactory(mockGossipSubNetwork) : undefined
188
- }
214
+ },
215
+ slashingProtectionDb: opts.slashingProtectionDb
189
216
  }, {
190
217
  prefilledPublicData: this.context.prefilledPublicData,
191
218
  ...opts
192
219
  }));
193
- // REFACTOR: We're getting too much into the internals of the sequencer here.
194
- // We should have a single method for constructing an aztec node that returns a TestAztecNodeService
195
- // which directly exposes the delayer and sets any test config.
196
- if (opts.txDelayerMaxInclusionTimeIntoSlot !== undefined) {
197
- this.logger.info(`Setting tx delayer max inclusion time into slot to ${opts.txDelayerMaxInclusionTimeIntoSlot} seconds`);
198
- // Here we reach into the sequencer and hook in a tx delayer. The problem is that the sequencer's l1 utils only uses a public client, not a wallet.
199
- // The delayer needs a wallet (a client that can sign), so we have to create one here.
200
- const l1Client = createExtendedL1Client(resolvedConfig.l1RpcUrls, resolvedConfig.publisherPrivateKeys[0].getValue());
201
- const sequencer = node.getSequencer();
202
- const publisher = sequencer.sequencer.publisher;
203
- const delayed = DelayedTxUtils.fromL1TxUtils(publisher.l1TxUtils, this.L1_BLOCK_TIME_IN_S, l1Client);
204
- delayed.delayer.setMaxInclusionTimeIntoSlot(opts.txDelayerMaxInclusionTimeIntoSlot);
205
- publisher.l1TxUtils = delayed;
206
- }
207
220
  this.nodes.push(node);
208
221
  return node;
209
222
  }
@@ -217,11 +230,11 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
217
230
  await waitUntilL1Timestamp(this.l1Client, start - BigInt(this.L1_BLOCK_TIME_IN_S), undefined, 30 * this.epochDuration);
218
231
  return start;
219
232
  }
220
- /** Waits until the given L2 block number is mined. */ async waitUntilL2BlockNumber(target, timeout = 60) {
221
- await retryUntil(()=>Promise.resolve(target <= this.monitor.checkpointNumber), `Wait until L2 block ${target}`, timeout, 0.1);
233
+ /** Waits until the given checkpoint number is mined. */ async waitUntilCheckpointNumber(target, timeout = 120) {
234
+ await retryUntil(()=>Promise.resolve(target <= this.monitor.checkpointNumber), `Wait until checkpoint ${target}`, timeout, 0.1);
222
235
  }
223
- /** Waits until the given L2 block number is marked as proven. */ async waitUntilProvenL2BlockNumber(t, timeout = 60) {
224
- await retryUntil(()=>Promise.resolve(t <= this.monitor.provenCheckpointNumber), `Wait proven L2 block ${t}`, timeout, 0.1);
236
+ /** Waits until the given checkpoint number is marked as proven. */ async waitUntilProvenCheckpointNumber(target, timeout = 120) {
237
+ await retryUntil(()=>Promise.resolve(target <= this.monitor.provenCheckpointNumber), `Wait proven checkpoint ${target}`, timeout, 0.1);
225
238
  return this.monitor.provenCheckpointNumber;
226
239
  }
227
240
  /** Waits until the last slot of the proof submission window for a given epoch. */ async waitUntilLastSlotOfProofSubmissionWindow(epochNumber) {
@@ -231,7 +244,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
231
244
  this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
232
245
  oneSlotBefore
233
246
  });
234
- await waitUntilL1Timestamp(this.l1Client, oneSlotBefore);
247
+ // Use a timeout that accounts for the full proof submission window
248
+ const proofSubmissionWindowDuration = this.constants.proofSubmissionEpochs * this.epochDuration * this.L2_SLOT_DURATION_IN_S;
249
+ await waitUntilL1Timestamp(this.l1Client, oneSlotBefore, undefined, proofSubmissionWindowDuration * 2);
235
250
  }
236
251
  /** Waits for the aztec node to sync to the target block number. */ async waitForNodeToSync(blockNumber, type) {
237
252
  const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
@@ -249,7 +264,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
249
264
  tips
250
265
  });
251
266
  if (type === 'proven') {
252
- synched = tips.proven.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
267
+ synched = tips.proven.block.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
253
268
  } else if (type === 'finalized') {
254
269
  synched = syncState.finalizedBlockNumber >= blockNumber;
255
270
  } else {
@@ -268,12 +283,25 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
268
283
  await wallet.registerContract(instance, SpamContract.artifact);
269
284
  return SpamContract.at(instance.address, wallet);
270
285
  }
286
+ /** Registers the TestContract on the given wallet. */ async registerTestContract(wallet, salt = Fr.ZERO) {
287
+ const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
288
+ constructorArgs: [],
289
+ constructorArtifact: undefined,
290
+ salt,
291
+ publicKeys: undefined,
292
+ deployer: undefined
293
+ });
294
+ await wallet.registerContract(instance, TestContract.artifact);
295
+ return TestContract.at(instance.address, wallet);
296
+ }
271
297
  /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
272
- const { client, delayer } = withDelayer(createExtendedL1Client([
298
+ const rawClient = createExtendedL1Client([
273
299
  ...this.l1Client.chain.rpcUrls.default.http
274
- ], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain), this.context.dateProvider, {
300
+ ], privateKeyToAccount(this.getNextPrivateKey()), this.l1Client.chain);
301
+ const delayer = createDelayer(this.context.dateProvider, {
275
302
  ethereumSlotDuration: this.L1_BLOCK_TIME_IN_S
276
- });
303
+ }, {});
304
+ const client = wrapClientWithDelayer(rawClient, delayer);
277
305
  expect(await client.getBalance({
278
306
  address: client.account.address
279
307
  })).toBeGreaterThan(0n);
@@ -291,14 +319,38 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
291
319
  ]).then((_)=>true).catch((_)=>false);
292
320
  expect(result).toBe(expectedSuccess);
293
321
  }
322
+ /** Verifies at least one checkpoint has the target number of blocks (for MBPS validation). */ async assertMultipleBlocksPerSlot(targetBlockCount) {
323
+ const archiver = this.context.aztecNode.getBlockSource();
324
+ const checkpoints = await archiver.getCheckpoints(CheckpointNumber(1), 50);
325
+ this.logger.warn(`Retrieved ${checkpoints.length} checkpoints from archiver`, {
326
+ checkpoints: checkpoints.map((pc)=>pc.checkpoint.getStats())
327
+ });
328
+ let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
329
+ let targetFound = false;
330
+ for (const checkpoint of checkpoints){
331
+ const blockCount = checkpoint.checkpoint.blocks.length;
332
+ targetFound = targetFound || blockCount >= targetBlockCount;
333
+ this.logger.verbose(`Checkpoint ${checkpoint.checkpoint.number} has ${blockCount} blocks`, {
334
+ checkpoint: checkpoint.checkpoint.getStats()
335
+ });
336
+ for(let i = 0; i < blockCount; i++){
337
+ const block = checkpoint.checkpoint.blocks[i];
338
+ expect(block.indexWithinCheckpoint).toBe(i);
339
+ expect(block.checkpointNumber).toBe(checkpoint.checkpoint.number);
340
+ expect(block.number).toBe(expectedBlockNumber);
341
+ expectedBlockNumber++;
342
+ }
343
+ }
344
+ expect(targetFound).toBe(true);
345
+ }
294
346
  watchSequencerEvents(sequencers, getMetadata = ()=>({})) {
295
347
  const stateChanges = [];
296
348
  const failEvents = [];
297
- // Note we do not include the 'tx-count-check-failed' event here, since it is fine if we dont build
349
+ // Note we do not include the 'block-tx-count-check-failed' event here, since it is fine if we dont build
298
350
  // due to lack of txs available.
299
351
  const failEventsKeys = [
300
352
  'block-build-failed',
301
- 'block-publish-failed',
353
+ 'checkpoint-publish-failed',
302
354
  'proposer-rollup-check-failed'
303
355
  ];
304
356
  const makeEvent = (i, eventName, args)=>({
@@ -1,6 +1,6 @@
1
1
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
- import { Fq } from '@aztec/foundation/fields';
3
+ import { Fq } from '@aztec/foundation/curves/bn254';
4
4
  import { sleep } from '@aztec/foundation/sleep';
5
5
  import { jest } from '@jest/globals';
6
6
  import { FeesTest } from './fees_test.js';
@@ -16,10 +16,8 @@ describe('e2e_fees bridging_race', ()=>{
16
16
  minTxsPerBlock: 0
17
17
  });
18
18
  beforeAll(async ()=>{
19
- await t.applyInitialAccountsSnapshot();
20
- await t.applyPublicDeployAccountsSnapshot();
21
- await t.applySetupFeeJuiceSnapshot();
22
- ({ wallet, logger } = await t.setup());
19
+ await t.setup();
20
+ ({ wallet, logger } = t);
23
21
  });
24
22
  afterAll(async ()=>{
25
23
  await t.teardown();
@@ -56,7 +54,7 @@ describe('e2e_fees bridging_race', ()=>{
56
54
  const { claimSecret: secret, messageLeafIndex: index } = claim;
57
55
  await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({
58
56
  from: bobsAddress
59
- }).wait();
57
+ });
60
58
  const [balance] = await t.getGasBalanceFn(bobsAddress);
61
59
  expect(balance).toEqual(claim.claimAmount);
62
60
  });
@@ -2,8 +2,10 @@ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type Logger } from '@aztec/aztec.js/log';
3
3
  import type { AztecNode } from '@aztec/aztec.js/node';
4
4
  import { CheatCodes } from '@aztec/aztec/testing';
5
- import { type DeployL1ContractsArgs, RollupContract } from '@aztec/ethereum';
5
+ import { RollupContract } from '@aztec/ethereum/contracts';
6
+ import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
6
7
  import { ChainMonitor } from '@aztec/ethereum/test';
8
+ import { BlockNumber } from '@aztec/foundation/branded-types';
7
9
  import { EthAddress } from '@aztec/foundation/eth-address';
8
10
  import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
9
11
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
@@ -12,12 +14,13 @@ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
12
14
  import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
13
15
  import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
14
16
  import { GasSettings } from '@aztec/stdlib/gas';
15
- import { TestWallet } from '@aztec/test-wallet/server';
16
- import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
17
- import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
17
+ import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
18
+ import { type EndToEndContext, type SetupOptions } from '../fixtures/setup.js';
19
+ import { type BalancesFn } from '../fixtures/utils.js';
18
20
  import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
21
+ import { TestWallet } from '../test-wallet/test_wallet.js';
19
22
  /**
20
- * Test fixture for testing fees. Provides the following snapshots:
23
+ * Test fixture for testing fees. Provides the following setup steps:
21
24
  * InitialAccounts: Initializes 3 Schnorr account contracts.
22
25
  * PublicDeployAccounts: Deploys the accounts publicly.
23
26
  * DeployFeeJuice: Deploys the Fee Juice contract.
@@ -28,10 +31,12 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
28
31
  */
29
32
  export declare class FeesTest {
30
33
  private numberOfAccounts;
31
- private snapshotManager;
34
+ private setupOptions;
32
35
  private accounts;
36
+ context: EndToEndContext;
33
37
  logger: Logger;
34
38
  aztecNode: AztecNode;
39
+ aztecNodeAdmin: AztecNodeAdmin;
35
40
  cheatCodes: CheatCodes;
36
41
  wallet: TestWallet;
37
42
  aliceAddress: AztecAddress;
@@ -48,18 +53,17 @@ export declare class FeesTest {
48
53
  counterContract: CounterContract;
49
54
  subscriptionContract: AppSubscriptionContract;
50
55
  feeJuiceBridgeTestHarness: GasBridgingTestHarness;
51
- context: SubsystemsContext;
52
56
  chainMonitor: ChainMonitor;
53
57
  getCoinbaseBalance: () => Promise<bigint>;
54
58
  getCoinbaseSequencerRewards: () => Promise<bigint>;
55
59
  getGasBalanceFn: BalancesFn;
56
60
  getBananaPublicBalanceFn: BalancesFn;
57
61
  getBananaPrivateBalanceFn: BalancesFn;
58
- getProverFee: (blockNumber: number) => Promise<bigint>;
62
+ getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
59
63
  readonly ALICE_INITIAL_BANANAS: bigint;
60
64
  readonly SUBSCRIPTION_AMOUNT: bigint;
61
65
  readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
62
- constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
66
+ constructor(testName: string, numberOfAccounts?: number, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
63
67
  setup(): Promise<this>;
64
68
  teardown(): Promise<void>;
65
69
  setIsMarkingAsProven(b: boolean): void;
@@ -71,14 +75,14 @@ export declare class FeesTest {
71
75
  mintAndBridgeFeeJuice(minter: AztecAddress, recipient: AztecAddress): Promise<void>;
72
76
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
73
77
  mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
74
- applyBaseSnapshots(): Promise<void>;
75
- applyInitialAccountsSnapshot(): Promise<void>;
76
- applyPublicDeployAccountsSnapshot(): Promise<void>;
77
- applySetupFeeJuiceSnapshot(): Promise<void>;
78
- applyDeployBananaTokenSnapshot(): Promise<void>;
79
- applyFPCSetupSnapshot(): Promise<void>;
80
- applySponsoredFPCSetupSnapshot(): Promise<void>;
78
+ applyBaseSetup(): Promise<void>;
79
+ applyInitialAccounts(): Promise<void>;
80
+ applyPublicDeployAccounts(): Promise<void>;
81
+ applySetupFeeJuice(): Promise<void>;
82
+ applyDeployBananaToken(): Promise<void>;
83
+ applyFPCSetup(): Promise<void>;
84
+ applySponsoredFPCSetup(): Promise<void>;
81
85
  applyFundAliceWithBananas(): Promise<void>;
82
86
  applyFundAliceWithPrivateBananas(): Promise<void>;
83
87
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQUUsY0FBYyxFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLdkQsT0FBTyxFQUVMLEtBQUssaUJBQWlCLEVBR3ZCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUNMLEtBQUssVUFBVSxFQUNmLEtB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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxJQUFJLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUd4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFL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
@@ -1 +1 @@
1
- {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}