@aztec/end-to-end 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (366) hide show
  1. package/README.md +217 -14
  2. package/dest/automine/automine_test_context.d.ts +85 -0
  3. package/dest/automine/automine_test_context.d.ts.map +1 -0
  4. package/dest/automine/automine_test_context.js +98 -0
  5. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
  6. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  7. package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
  8. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
  9. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
  10. package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
  11. package/dest/automine/delivery/interactive_handshake_responder.d.ts +48 -0
  12. package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
  13. package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
  14. package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
  15. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  16. package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
  17. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  18. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  19. package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +50 -54
  20. package/dest/automine/token/token_contract_test.d.ts +40 -0
  21. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  22. package/dest/{e2e_token_contract → automine/token}/token_contract_test.js +44 -49
  23. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  24. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  25. package/dest/automine/token/token_test_helpers.js +97 -0
  26. package/dest/bench/client_flows/benchmark.d.ts +15 -1
  27. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/benchmark.js +19 -0
  29. package/dest/bench/client_flows/client_flows_benchmark.d.ts +6 -6
  30. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  31. package/dest/bench/client_flows/client_flows_benchmark.js +68 -44
  32. package/dest/bench/client_flows/config.d.ts +2 -2
  33. package/dest/bench/client_flows/config.d.ts.map +1 -1
  34. package/dest/bench/client_flows/config.js +18 -0
  35. package/dest/bench/client_flows/data_extractor.js +1 -0
  36. package/dest/bench/utils.d.ts +7 -6
  37. package/dest/bench/utils.d.ts.map +1 -1
  38. package/dest/bench/utils.js +108 -12
  39. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  40. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  41. package/dest/composed/ha/ha_full_setup.js +383 -0
  42. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  43. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  44. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  45. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  46. package/dest/fixtures/authwit_proxy.js +34 -0
  47. package/dest/fixtures/e2e_prover_test.d.ts +18 -14
  48. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  49. package/dest/fixtures/e2e_prover_test.js +85 -74
  50. package/dest/fixtures/elu_monitor.d.ts +21 -0
  51. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  52. package/dest/fixtures/elu_monitor.js +102 -0
  53. package/dest/fixtures/fixtures.d.ts +83 -1
  54. package/dest/fixtures/fixtures.d.ts.map +1 -1
  55. package/dest/fixtures/fixtures.js +86 -0
  56. package/dest/fixtures/get_bb_config.d.ts +1 -1
  57. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  58. package/dest/fixtures/get_bb_config.js +5 -5
  59. package/dest/fixtures/ha_setup.d.ts +71 -0
  60. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  61. package/dest/fixtures/ha_setup.js +119 -0
  62. package/dest/fixtures/index.d.ts +3 -1
  63. package/dest/fixtures/index.d.ts.map +1 -1
  64. package/dest/fixtures/index.js +2 -0
  65. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  66. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  67. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  68. package/dest/fixtures/setup.d.ts +113 -60
  69. package/dest/fixtures/setup.d.ts.map +1 -1
  70. package/dest/fixtures/setup.js +330 -326
  71. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  72. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  73. package/dest/fixtures/setup_p2p_test.js +46 -35
  74. package/dest/fixtures/timing.d.ts +42 -0
  75. package/dest/fixtures/timing.d.ts.map +1 -0
  76. package/dest/fixtures/timing.js +72 -0
  77. package/dest/fixtures/token_utils.d.ts +22 -4
  78. package/dest/fixtures/token_utils.d.ts.map +1 -1
  79. package/dest/fixtures/token_utils.js +28 -7
  80. package/dest/fixtures/utils.d.ts +2 -2
  81. package/dest/fixtures/utils.d.ts.map +1 -1
  82. package/dest/fixtures/utils.js +1 -1
  83. package/dest/fixtures/wait_helpers.d.ts +135 -0
  84. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  85. package/dest/fixtures/wait_helpers.js +154 -0
  86. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  87. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  88. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  89. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  90. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  91. package/dest/forward-compatibility/wallet_service.js +109 -0
  92. package/dest/install_legacy_contracts.d.cts +10 -0
  93. package/dest/install_legacy_contracts.d.cts.map +1 -0
  94. package/dest/legacy-jest-resolver.d.cts +3 -0
  95. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  96. package/dest/multi-node/block-production/setup.d.ts +97 -0
  97. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  98. package/dest/multi-node/block-production/setup.js +158 -0
  99. package/dest/multi-node/governance/setup.d.ts +67 -0
  100. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  101. package/dest/multi-node/governance/setup.js +126 -0
  102. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  103. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  104. package/dest/multi-node/multi_node_test_context.js +347 -0
  105. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  106. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  107. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  108. package/dest/multi-node/slashing/setup.d.ts +167 -0
  109. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  110. package/dest/multi-node/slashing/setup.js +275 -0
  111. package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +22 -12
  112. package/dest/p2p/p2p_network.d.ts.map +1 -0
  113. package/dest/{e2e_p2p → p2p}/p2p_network.js +99 -35
  114. package/dest/p2p/reqresp/utils.d.ts +19 -0
  115. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  116. package/dest/p2p/reqresp/utils.js +193 -0
  117. package/dest/p2p/shared.d.ts +72 -0
  118. package/dest/p2p/shared.d.ts.map +1 -0
  119. package/dest/p2p/shared.js +212 -0
  120. package/dest/shared/cross_chain_test_harness.d.ts +8 -7
  121. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  122. package/dest/shared/cross_chain_test_harness.js +44 -39
  123. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  124. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  125. package/dest/shared/gas_portal_test_harness.js +27 -15
  126. package/dest/shared/index.d.ts +2 -1
  127. package/dest/shared/index.d.ts.map +1 -1
  128. package/dest/shared/index.js +1 -0
  129. package/dest/shared/jest_setup.js +41 -1
  130. package/dest/shared/mock_state_view.d.ts +86 -0
  131. package/dest/shared/mock_state_view.d.ts.map +1 -0
  132. package/dest/shared/mock_state_view.js +186 -0
  133. package/dest/shared/submit-transactions.d.ts +4 -4
  134. package/dest/shared/submit-transactions.d.ts.map +1 -1
  135. package/dest/shared/submit-transactions.js +19 -14
  136. package/dest/shared/timing_env.d.js +5 -0
  137. package/dest/shared/timing_env.js +365 -0
  138. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  139. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  140. package/dest/shared/uniswap_l1_l2.js +67 -55
  141. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  142. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  143. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  144. package/dest/simulators/lending_simulator.d.ts +10 -3
  145. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  146. package/dest/simulators/lending_simulator.js +29 -17
  147. package/dest/simulators/token_simulator.d.ts +1 -1
  148. package/dest/simulators/token_simulator.d.ts.map +1 -1
  149. package/dest/simulators/token_simulator.js +3 -24
  150. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  151. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  152. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  153. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  154. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  155. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  156. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
  157. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  158. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +18 -5
  159. package/dest/single-node/fees/fees_test.d.ts +93 -0
  160. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  161. package/dest/{e2e_fees → single-node/fees}/fees_test.js +96 -70
  162. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  163. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  164. package/dest/single-node/l1-reorgs/setup.js +57 -0
  165. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  166. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  167. package/dest/single-node/partial-proofs/setup.js +5 -0
  168. package/dest/single-node/proving/setup.d.ts +5 -0
  169. package/dest/single-node/proving/setup.d.ts.map +1 -0
  170. package/dest/single-node/proving/setup.js +5 -0
  171. package/dest/single-node/recovery/setup.d.ts +5 -0
  172. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  173. package/dest/single-node/recovery/setup.js +5 -0
  174. package/dest/single-node/setup.d.ts +49 -0
  175. package/dest/single-node/setup.d.ts.map +1 -0
  176. package/dest/single-node/setup.js +56 -0
  177. package/dest/single-node/single_node_test_context.d.ts +360 -0
  178. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  179. package/dest/single-node/single_node_test_context.js +833 -0
  180. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  181. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  182. package/dest/spartan/setup_test_wallets.js +153 -49
  183. package/dest/spartan/tx_metrics.d.ts +64 -5
  184. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  185. package/dest/spartan/tx_metrics.js +280 -21
  186. package/dest/spartan/utils/bot.d.ts +28 -0
  187. package/dest/spartan/utils/bot.d.ts.map +1 -0
  188. package/dest/spartan/utils/bot.js +142 -0
  189. package/dest/spartan/utils/chaos.d.ts +79 -0
  190. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  191. package/dest/spartan/utils/chaos.js +142 -0
  192. package/dest/spartan/utils/clients.d.ts +39 -0
  193. package/dest/spartan/utils/clients.d.ts.map +1 -0
  194. package/dest/spartan/utils/clients.js +90 -0
  195. package/dest/spartan/utils/config.d.ts +19 -0
  196. package/dest/spartan/utils/config.d.ts.map +1 -0
  197. package/dest/spartan/utils/config.js +23 -0
  198. package/dest/spartan/utils/health.d.ts +63 -0
  199. package/dest/spartan/utils/health.d.ts.map +1 -0
  200. package/dest/spartan/utils/health.js +202 -0
  201. package/dest/spartan/utils/helm.d.ts +15 -0
  202. package/dest/spartan/utils/helm.d.ts.map +1 -0
  203. package/dest/spartan/utils/helm.js +47 -0
  204. package/dest/spartan/utils/index.d.ts +11 -0
  205. package/dest/spartan/utils/index.d.ts.map +1 -0
  206. package/dest/spartan/utils/index.js +22 -0
  207. package/dest/spartan/utils/k8s.d.ts +128 -0
  208. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  209. package/dest/spartan/utils/k8s.js +381 -0
  210. package/dest/spartan/utils/nodes.d.ts +40 -0
  211. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  212. package/dest/spartan/utils/nodes.js +461 -0
  213. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  214. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  215. package/dest/spartan/utils/pod_logs.js +74 -0
  216. package/dest/spartan/utils/scripts.d.ts +30 -0
  217. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  218. package/dest/spartan/utils/scripts.js +81 -0
  219. package/dest/spartan/utils.d.ts +2 -260
  220. package/dest/spartan/utils.d.ts.map +1 -1
  221. package/dest/spartan/utils.js +1 -942
  222. package/dest/test-wallet/test_wallet.d.ts +105 -0
  223. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  224. package/dest/test-wallet/test_wallet.js +320 -0
  225. package/dest/test-wallet/utils.d.ts +76 -0
  226. package/dest/test-wallet/utils.d.ts.map +1 -0
  227. package/dest/test-wallet/utils.js +126 -0
  228. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  229. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  230. package/dest/test-wallet/wallet_worker_script.js +56 -0
  231. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  232. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  233. package/dest/test-wallet/worker_wallet.js +157 -0
  234. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  235. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  236. package/dest/test-wallet/worker_wallet_schema.js +23 -0
  237. package/package.json +53 -46
  238. package/src/automine/README.md +60 -0
  239. package/src/automine/automine_test_context.ts +153 -0
  240. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  241. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  242. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  243. package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
  244. package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
  245. package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +56 -69
  246. package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +51 -59
  247. package/src/automine/token/token_test_helpers.ts +138 -0
  248. package/src/bench/client_flows/benchmark.ts +21 -0
  249. package/src/bench/client_flows/client_flows_benchmark.ts +111 -90
  250. package/src/bench/client_flows/config.ts +9 -1
  251. package/src/bench/client_flows/data_extractor.ts +1 -0
  252. package/src/bench/utils.ts +123 -12
  253. package/src/composed/ha/ha_full_setup.ts +466 -0
  254. package/src/fixtures/authwit_proxy.ts +54 -0
  255. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  256. package/src/fixtures/e2e_prover_test.ts +102 -103
  257. package/src/fixtures/elu_monitor.ts +126 -0
  258. package/src/fixtures/fixtures.ts +110 -0
  259. package/src/fixtures/get_bb_config.ts +7 -6
  260. package/src/fixtures/ha_setup.ts +192 -0
  261. package/src/fixtures/index.ts +2 -0
  262. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  263. package/src/fixtures/setup.ts +421 -444
  264. package/src/fixtures/setup_p2p_test.ts +54 -54
  265. package/src/fixtures/timing.ts +97 -0
  266. package/src/fixtures/token_utils.ts +46 -10
  267. package/src/fixtures/utils.ts +2 -3
  268. package/src/fixtures/wait_helpers.ts +333 -0
  269. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  270. package/src/forward-compatibility/wallet_service.ts +106 -0
  271. package/src/guides/up_quick_start.sh +7 -4
  272. package/src/infra/README.md +12 -0
  273. package/src/install_legacy_contracts.cjs +75 -0
  274. package/src/legacy-jest-resolver.cjs +112 -0
  275. package/src/multi-node/README.md +95 -0
  276. package/src/multi-node/block-production/setup.ts +272 -0
  277. package/src/multi-node/governance/setup.ts +172 -0
  278. package/src/multi-node/multi_node_test_context.ts +447 -0
  279. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  280. package/src/multi-node/slashing/setup.ts +433 -0
  281. package/src/p2p/README.md +78 -0
  282. package/src/{e2e_p2p → p2p}/p2p_network.ts +132 -57
  283. package/src/p2p/reqresp/utils.ts +263 -0
  284. package/src/p2p/shared.ts +329 -0
  285. package/src/shared/cross_chain_test_harness.ts +52 -41
  286. package/src/shared/gas_portal_test_harness.ts +34 -16
  287. package/src/shared/index.ts +1 -0
  288. package/src/shared/jest_setup.ts +51 -1
  289. package/src/shared/mock_state_view.ts +188 -0
  290. package/src/shared/submit-transactions.ts +22 -19
  291. package/src/shared/timing_env.d.mts +39 -0
  292. package/src/shared/timing_env.mjs +363 -0
  293. package/src/shared/uniswap_l1_l2.ts +109 -74
  294. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  295. package/src/simulators/lending_simulator.ts +35 -17
  296. package/src/simulators/token_simulator.ts +6 -30
  297. package/src/single-node/README.md +60 -0
  298. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  299. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  300. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +20 -9
  301. package/src/{e2e_fees → single-node/fees}/fees_test.ts +120 -95
  302. package/src/single-node/l1-reorgs/setup.ts +93 -0
  303. package/src/single-node/partial-proofs/setup.ts +8 -0
  304. package/src/single-node/proving/setup.ts +15 -0
  305. package/src/single-node/recovery/setup.ts +8 -0
  306. package/src/single-node/setup.ts +63 -0
  307. package/src/single-node/single_node_test_context.ts +1041 -0
  308. package/src/spartan/setup_test_wallets.ts +208 -34
  309. package/src/spartan/tx_metrics.ts +255 -26
  310. package/src/spartan/utils/bot.ts +188 -0
  311. package/src/spartan/utils/chaos.ts +253 -0
  312. package/src/spartan/utils/clients.ts +100 -0
  313. package/src/spartan/utils/config.ts +29 -0
  314. package/src/spartan/utils/health.ts +255 -0
  315. package/src/spartan/utils/helm.ts +84 -0
  316. package/src/spartan/utils/index.ts +71 -0
  317. package/src/spartan/utils/k8s.ts +535 -0
  318. package/src/spartan/utils/nodes.ts +543 -0
  319. package/src/spartan/utils/pod_logs.ts +99 -0
  320. package/src/spartan/utils/scripts.ts +99 -0
  321. package/src/spartan/utils.ts +1 -1246
  322. package/src/test-wallet/test_wallet.ts +426 -0
  323. package/src/test-wallet/utils.ts +205 -0
  324. package/src/test-wallet/wallet_worker_script.ts +66 -0
  325. package/src/test-wallet/worker_wallet.ts +216 -0
  326. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  327. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -53
  328. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  329. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -47
  330. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  331. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -128
  332. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -37
  333. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  334. package/dest/e2e_deploy_contract/deploy_test.js +0 -50
  335. package/dest/e2e_epochs/epochs_test.d.ts +0 -94
  336. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  337. package/dest/e2e_epochs/epochs_test.js +0 -339
  338. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  339. package/dest/e2e_fees/fees_test.d.ts +0 -88
  340. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  341. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  342. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  343. package/dest/e2e_l1_publisher/write_json.js +0 -62
  344. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  345. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  346. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -26
  347. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  348. package/dest/e2e_nested_contract/nested_contract_test.js +0 -56
  349. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  350. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  351. package/dest/e2e_p2p/inactivity_slash_test.js +0 -136
  352. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  353. package/dest/e2e_p2p/shared.d.ts +0 -46
  354. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  355. package/dest/e2e_p2p/shared.js +0 -184
  356. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -42
  357. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  358. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -194
  359. package/src/e2e_deploy_contract/deploy_test.ts +0 -85
  360. package/src/e2e_epochs/epochs_test.ts +0 -451
  361. package/src/e2e_l1_publisher/write_json.ts +0 -82
  362. package/src/e2e_nested_contract/nested_contract_test.ts +0 -75
  363. package/src/e2e_p2p/inactivity_slash_test.ts +0 -179
  364. package/src/e2e_p2p/shared.ts +0 -290
  365. /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
  366. /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
@@ -2,10 +2,12 @@ import { computeSecretHash } from '@aztec/aztec.js/crypto';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
3
  import { createLogger } from '@aztec/aztec.js/log';
4
4
  import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
5
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
5
6
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
7
  import { jest } from '@jest/globals';
7
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
8
- import { TokenSimulator } from '../simulators/token_simulator.js';
8
+ import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
9
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
10
+ import { AutomineTestContext } from '../automine_test_context.js';
9
11
  export class Role {
10
12
  isAdmin = false;
11
13
  isMinter = false;
@@ -32,85 +34,80 @@ export class Role {
32
34
  };
33
35
  }
34
36
  }
35
- export class BlacklistTokenContractTest {
37
+ /**
38
+ * TokenBlacklist-domain harness over the automine topology: extends {@link AutomineTestContext} with a
39
+ * {@link TokenSimulator}, the {@link Role} helper, the TokenBlacklist deploy plus a bad-account and
40
+ * authwit proxy, and the role-change-delay warp. Base setup and mint run in {@link setup}.
41
+ */ export class BlacklistTokenContractTest extends AutomineTestContext {
36
42
  // This value MUST match the same value that we have in the contract
37
43
  static CHANGE_ROLES_DELAY = 86400;
38
- context;
39
- logger;
40
- wallet;
41
44
  asset;
42
45
  tokenSim;
43
46
  badAccount;
44
- cheatCodes;
45
- sequencer;
46
- aztecNode;
47
+ authwitProxy;
47
48
  adminAddress;
48
49
  otherAddress;
49
50
  blacklistedAddress;
51
+ testName;
50
52
  constructor(testName){
51
- this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
53
+ super();
54
+ this.testName = testName;
52
55
  }
53
56
  async crossTimestampOfChange() {
54
- await this.cheatCodes.warpL2TimeAtLeastBy(this.sequencer, this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
57
+ await this.markProvenAndWarp(BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
55
58
  }
56
59
  /**
57
60
  * Applies base setup:
58
61
  * 1. Add 3 accounts.
59
62
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
60
63
  */ async applyBaseSetup() {
61
- // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
62
- jest.setTimeout(120_000);
63
- this.logger.info('Deploying 3 accounts');
64
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
65
- wallet: this.context.wallet,
66
- initialFundedAccounts: this.context.initialFundedAccounts
67
- });
64
+ // Bumped from 2 min: pipelined cadence (~24s/dependent-tx) makes the 3-account deploy plus token/bad-account/
65
+ // proxy deploys exceed the original window.
66
+ jest.setTimeout(600_000);
68
67
  this.cheatCodes = this.context.cheatCodes;
69
68
  this.aztecNode = this.context.aztecNodeService;
70
69
  this.sequencer = this.context.sequencer;
71
70
  this.wallet = this.context.wallet;
72
- this.adminAddress = deployedAccounts[0].address;
73
- this.otherAddress = deployedAccounts[1].address;
74
- this.blacklistedAddress = deployedAccounts[2].address;
71
+ [this.adminAddress, this.otherAddress, this.blacklistedAddress] = this.context.accounts;
75
72
  this.logger.info('Setting up blacklist token contract');
76
- // Create the token contract state.
77
- this.logger.verbose(`Public deploy accounts...`);
78
- await publicDeployAccounts(this.wallet, [
79
- this.adminAddress,
80
- this.otherAddress,
81
- this.blacklistedAddress
82
- ]);
73
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
83
74
  this.logger.verbose(`Deploying TokenContract...`);
84
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
75
+ ({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
85
76
  from: this.adminAddress
86
- }).deployed();
77
+ }));
87
78
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
88
79
  this.logger.verbose(`Deploying bad account...`);
89
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
80
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
90
81
  from: this.adminAddress
91
- }).deployed();
82
+ }));
92
83
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
84
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
85
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
86
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
87
+ this.logger.verbose(`Deploying generic proxy...`);
88
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
89
+ from: this.adminAddress
90
+ }));
91
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
93
92
  await this.crossTimestampOfChange();
94
93
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
95
94
  this.adminAddress,
96
95
  this.otherAddress,
97
96
  this.blacklistedAddress
98
97
  ]);
99
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
98
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
100
99
  from: this.adminAddress
101
- })).toEqual(new Role().withAdmin().toNoirStruct());
100
+ })).result).toEqual(new Role().withAdmin().toNoirStruct());
102
101
  }
103
- async setup() {
104
- this.logger.info('Setting up fresh context');
105
- this.context = await setup(0, {
106
- fundSponsoredFPC: true,
107
- skipAccountDeployment: true
102
+ async setup(opts = {}) {
103
+ await super.setup({
104
+ numberOfAccounts: 3,
105
+ ...opts
108
106
  });
107
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
108
+ this.logger = createLogger(`e2e:automine:blacklist:${this.testName}`);
109
109
  await this.applyBaseSetup();
110
110
  }
111
- async teardown() {
112
- await teardown(this.context);
113
- }
114
111
  async addPendingShieldNoteToPXE(contract, recipient, amount, secretHash, txHash) {
115
112
  const txEffects = await this.aztecNode.getTxEffect(txHash);
116
113
  await contract.methods.process_transparent_note(contract.address, amount, secretHash, txHash.hash, txEffects.data.noteHashes, txEffects.data.nullifiers[0], recipient).simulate({
@@ -124,44 +121,43 @@ export class BlacklistTokenContractTest {
124
121
  const adminMinterRole = new Role().withAdmin().withMinter();
125
122
  await this.asset.methods.update_roles(this.adminAddress, adminMinterRole.toNoirStruct()).send({
126
123
  from: this.adminAddress
127
- }).wait();
124
+ });
128
125
  const blacklistRole = new Role().withBlacklisted();
129
126
  await this.asset.methods.update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct()).send({
130
127
  from: this.adminAddress
131
- }).wait();
128
+ });
132
129
  await this.crossTimestampOfChange();
133
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({
130
+ expect((await this.asset.methods.get_roles(this.adminAddress).simulate({
134
131
  from: this.adminAddress
135
- })).toEqual(adminMinterRole.toNoirStruct());
132
+ })).result).toEqual(adminMinterRole.toNoirStruct());
136
133
  this.logger.verbose(`Minting ${amount} publicly...`);
137
134
  await asset.methods.mint_public(this.adminAddress, amount).send({
138
135
  from: this.adminAddress
139
- }).wait();
136
+ });
140
137
  this.logger.verbose(`Minting ${amount} privately...`);
141
138
  const secret = Fr.random();
142
139
  const secretHash = await computeSecretHash(secret);
143
- const receipt = await asset.methods.mint_private(amount, secretHash).send({
140
+ const { receipt } = await asset.methods.mint_private(amount, secretHash).send({
144
141
  from: this.adminAddress
145
- }).wait();
142
+ });
146
143
  await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
147
- const txClaim = asset.methods.redeem_shield(this.adminAddress, amount, secret).send({
144
+ await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({
148
145
  from: this.adminAddress
149
146
  });
150
- await txClaim.wait();
151
147
  this.logger.verbose(`Minting complete.`);
152
148
  tokenSim.mintPublic(this.adminAddress, amount);
153
- const publicBalance = await asset.methods.balance_of_public(this.adminAddress).simulate({
149
+ const { result: publicBalance } = await asset.methods.balance_of_public(this.adminAddress).simulate({
154
150
  from: this.adminAddress
155
151
  });
156
152
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
157
153
  expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
158
154
  tokenSim.mintPrivate(this.adminAddress, amount);
159
- const privateBalance = await asset.methods.balance_of_private(this.adminAddress).simulate({
155
+ const { result: privateBalance } = await asset.methods.balance_of_private(this.adminAddress).simulate({
160
156
  from: this.adminAddress
161
157
  });
162
158
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
163
159
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
164
- const totalSupply = await asset.methods.total_supply().simulate({
160
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
165
161
  from: this.adminAddress
166
162
  });
167
163
  this.logger.verbose(`Total supply: ${totalSupply}`);
@@ -0,0 +1,40 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { AztecNode } from '@aztec/aztec.js/node';
3
+ import { TokenContract } from '@aztec/noir-contracts.js/Token';
4
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
5
+ import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
7
+ import { AutomineTestContext, type AutomineTestOpts } from '../automine_test_context.js';
8
+ /**
9
+ * Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
10
+ * {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
11
+ * mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
12
+ * is called explicitly after `setup()`.
13
+ */
14
+ export declare class TokenContractTest extends AutomineTestContext {
15
+ static TOKEN_NAME: string;
16
+ static TOKEN_SYMBOL: string;
17
+ static TOKEN_DECIMALS: bigint;
18
+ metricsPort?: number;
19
+ asset: TokenContract;
20
+ tokenSim: TokenSimulator;
21
+ node: AztecNode;
22
+ badAccount: InvalidAccountContract;
23
+ authwitProxy: GenericProxyContract;
24
+ adminAddress: AztecAddress;
25
+ otherAddress: AztecAddress;
26
+ account2Address: AztecAddress;
27
+ private shouldApplyBaseSetup;
28
+ private testName;
29
+ constructor(testName: string);
30
+ /**
31
+ * Registers that base setup should be applied during setup().
32
+ * Call this before setup() to deploy 3 accounts, publicly deploy accounts, token contract and a "bad account".
33
+ */
34
+ applyBaseSnapshots(): void;
35
+ private applyBaseSetup;
36
+ setup(opts?: AutomineTestOpts): Promise<void>;
37
+ /** Mints an initial public and private balance to the admin account. Call after {@link setup}. */
38
+ applyMint(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dG9taW5lL3Rva2VuL3Rva2VuX2NvbnRyYWN0X3Rlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQU10RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl6Rjs7Ozs7R0FLRztBQUNILHFCQUFhLGlCQUFrQixTQUFRLG1CQUFtQjtJQUN4RCxNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDckIsS0FBSyxFQUFHLGFBQWEsQ0FBQztJQUN0QixRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLElBQUksRUFBRyxTQUFTLENBQUM7SUFFakIsVUFBVSxFQUFHLHNCQUFzQixDQUFDO0lBQ3BDLFlBQVksRUFBRyxvQkFBb0IsQ0FBQztJQUNwQyxZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBUztJQUV6QixZQUFZLFFBQVEsRUFBRSxNQUFNLEVBSTNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO1lBS2EsY0FBYztJQThDYixLQUFLLENBQUMsSUFBSSxHQUFFLGdCQUFxQixpQkFRL0M7SUFFRCxrR0FBa0c7SUFDNUYsU0FBUyxrQkE4QmQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../../src/automine/token/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAMtF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAIzF;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,mBAAmB;IACxD,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,YAAY,EAAG,oBAAoB,CAAC;IACpC,YAAY,EAAG,YAAY,CAAC;IAC5B,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,QAAQ,EAAE,MAAM,EAI3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;YAKa,cAAc;IA8Cb,KAAK,CAAC,IAAI,GAAE,gBAAqB,iBAQ/C;IAED,kGAAkG;IAC5F,SAAS,kBA8Bd;CACF"}
@@ -1,30 +1,36 @@
1
1
  import { createLogger } from '@aztec/aztec.js/log';
2
2
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
3
+ import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
3
4
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
4
5
  import { jest } from '@jest/globals';
5
- import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
6
- import { mintTokensToPrivate } from '../fixtures/token_utils.js';
7
- import { TokenSimulator } from '../simulators/token_simulator.js';
6
+ import { ensureAuthRegistryPublished } from '../../fixtures/setup.js';
7
+ import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
8
+ import { TokenSimulator } from '../../simulators/token_simulator.js';
9
+ import { AutomineTestContext } from '../automine_test_context.js';
8
10
  const { METRICS_PORT: metricsPort } = process.env;
9
- export class TokenContractTest {
11
+ /**
12
+ * Token-domain harness over the automine topology: extends {@link AutomineTestContext} with a
13
+ * {@link TokenSimulator}, the USDC Token deploy plus a bad-account and authwit proxy, and an optional
14
+ * mint. Base setup is opt-in via {@link applyBaseSnapshots} (run during `setup()`); {@link applyMint}
15
+ * is called explicitly after `setup()`.
16
+ */ export class TokenContractTest extends AutomineTestContext {
10
17
  static TOKEN_NAME = 'USDC';
11
18
  static TOKEN_SYMBOL = 'USD';
12
19
  static TOKEN_DECIMALS = 18n;
13
- context;
14
- logger;
15
20
  metricsPort;
16
21
  asset;
17
22
  tokenSim;
18
23
  node;
19
24
  badAccount;
20
- wallet;
25
+ authwitProxy;
21
26
  adminAddress;
22
- account1Address;
27
+ otherAddress;
23
28
  account2Address;
24
29
  shouldApplyBaseSetup = false;
25
- shouldApplyMint = false;
30
+ testName;
26
31
  constructor(testName){
27
- this.logger = createLogger(`e2e:e2e_token_contract:${testName}`);
32
+ super();
33
+ this.testName = testName;
28
34
  this.metricsPort = metricsPort ? parseInt(metricsPort) : undefined;
29
35
  }
30
36
  /**
@@ -34,74 +40,63 @@ export class TokenContractTest {
34
40
  this.shouldApplyBaseSetup = true;
35
41
  }
36
42
  /**
37
- * Registers that mint should be applied during setup().
38
- * Call this before setup() to mint tokens to the admin account.
39
- */ applyMintSnapshot() {
40
- this.shouldApplyMint = true;
41
- }
42
- /**
43
43
  * Applies base setup: deploys 3 accounts, publicly deploys accounts, token contract and a "bad account".
44
44
  */ async applyBaseSetup() {
45
45
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
46
46
  jest.setTimeout(120_000);
47
- this.logger.info('Applying base setup - deploying 3 accounts');
48
- const { deployedAccounts } = await deployAccounts(3, this.logger)({
49
- wallet: this.context.wallet,
50
- initialFundedAccounts: this.context.initialFundedAccounts
51
- });
52
47
  this.node = this.context.aztecNodeService;
53
48
  this.wallet = this.context.wallet;
54
- [this.adminAddress, this.account1Address, this.account2Address] = deployedAccounts.map((acc)=>acc.address);
49
+ [this.adminAddress, this.otherAddress, this.account2Address] = this.context.accounts;
55
50
  this.logger.info('Applying base setup - deploying token contract');
56
- this.logger.verbose(`Public deploy accounts...`);
57
- await publicDeployAccounts(this.wallet, [
58
- this.adminAddress,
59
- this.account1Address
60
- ]);
51
+ await ensureAuthRegistryPublished(this.wallet, this.adminAddress);
61
52
  this.logger.verbose(`Deploying TokenContract...`);
62
- this.asset = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
53
+ ({ contract: this.asset } = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
63
54
  from: this.adminAddress
64
- }).deployed();
55
+ }));
65
56
  this.logger.verbose(`Token deployed to ${this.asset.address}`);
66
57
  this.logger.verbose(`Deploying bad account...`);
67
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
58
+ ({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
68
59
  from: this.adminAddress
69
- }).deployed();
60
+ }));
70
61
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
62
+ // Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
63
+ // (so their notes are in scope), but msg_sender in the target must differ from the note owner
64
+ // to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
65
+ this.logger.verbose(`Deploying generic proxy...`);
66
+ ({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
67
+ from: this.adminAddress
68
+ }));
69
+ this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
71
70
  this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
72
71
  this.adminAddress,
73
- this.account1Address
72
+ this.otherAddress
74
73
  ]);
75
- expect(await this.asset.methods.get_admin().simulate({
74
+ expect((await this.asset.methods.get_admin().simulate({
76
75
  from: this.adminAddress
77
- })).toBe(this.adminAddress.toBigInt());
76
+ })).result).toBe(this.adminAddress.toBigInt());
78
77
  }
79
- async setup() {
80
- this.context = await setup(0, {
78
+ async setup(opts = {}) {
79
+ await super.setup({
80
+ numberOfAccounts: 3,
81
81
  metricsPort: this.metricsPort,
82
- fundSponsoredFPC: true,
83
- skipAccountDeployment: true
82
+ ...opts
84
83
  });
84
+ // hydrateFromContext repoints `this.logger` at the context logger; restore the harness-named one.
85
+ this.logger = createLogger(`e2e:automine:token:${this.testName}`);
85
86
  if (this.shouldApplyBaseSetup) {
86
87
  await this.applyBaseSetup();
87
88
  }
88
- if (this.shouldApplyMint) {
89
- await this.applyMint();
90
- }
91
89
  }
92
- async teardown() {
93
- await teardown(this.context);
94
- }
95
- async applyMint() {
90
+ /** Mints an initial public and private balance to the admin account. Call after {@link setup}. */ async applyMint() {
96
91
  this.logger.info('Applying mint setup');
97
92
  const { asset, adminAddress, tokenSim } = this;
98
93
  const amount = 10000n;
99
94
  this.logger.verbose(`Minting ${amount} publicly...`);
100
95
  await asset.methods.mint_to_public(adminAddress, amount).send({
101
96
  from: adminAddress
102
- }).wait();
97
+ });
103
98
  tokenSim.mintPublic(adminAddress, amount);
104
- const publicBalance = await asset.methods.balance_of_public(adminAddress).simulate({
99
+ const { result: publicBalance } = await asset.methods.balance_of_public(adminAddress).simulate({
105
100
  from: adminAddress
106
101
  });
107
102
  this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
@@ -109,12 +104,12 @@ export class TokenContractTest {
109
104
  this.logger.verbose(`Minting ${amount} privately...`);
110
105
  await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
111
106
  tokenSim.mintPrivate(adminAddress, amount);
112
- const privateBalance = await asset.methods.balance_of_private(adminAddress).simulate({
107
+ const { result: privateBalance } = await asset.methods.balance_of_private(adminAddress).simulate({
113
108
  from: adminAddress
114
109
  });
115
110
  this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
116
111
  expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(adminAddress));
117
- const totalSupply = await asset.methods.total_supply().simulate({
112
+ const { result: totalSupply } = await asset.methods.total_supply().simulate({
118
113
  from: adminAddress
119
114
  });
120
115
  this.logger.verbose(`Total supply: ${totalSupply}`);
@@ -0,0 +1,73 @@
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { ContractFunctionInteraction } from '@aztec/aztec.js/contracts';
3
+ import type { Logger } from '@aztec/aztec.js/log';
4
+ import type { Wallet } from '@aztec/aztec.js/wallet';
5
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
6
+ import type { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
7
+ import { type AnyTokenContract } from '../../fixtures/token_utils.js';
8
+ import type { TestWallet } from '../../test-wallet/test_wallet.js';
9
+ /** Whether an amount / balance is read from the private or public balance of the token. */
10
+ export type BalanceKind = 'private' | 'public';
11
+ /** The invalid-authwit-nonce assertion the contract raises when `from == msg_sender` but nonce != 0. */
12
+ export declare const INVALID_AUTHWIT_NONCE_ERROR = "Assertion failed: Invalid authwit nonce. When 'from' and 'msg_sender' are the same, 'authwit_nonce' must be zero";
13
+ /** Minimal token shape needed to read balances — satisfied structurally by Token/TestToken/TokenBlacklist. */
14
+ export interface BalanceReadable {
15
+ methods: {
16
+ balance_of_private(owner: AztecAddress): {
17
+ simulate(opts: {
18
+ from: AztecAddress;
19
+ }): Promise<{
20
+ result: bigint;
21
+ }>;
22
+ };
23
+ balance_of_public(owner: AztecAddress): {
24
+ simulate(opts: {
25
+ from: AztecAddress;
26
+ }): Promise<{
27
+ result: bigint;
28
+ }>;
29
+ };
30
+ };
31
+ }
32
+ /** Reads the private or public balance of an account, simulating from that account's own scope. */
33
+ export declare function balanceOf(asset: BalanceReadable, kind: BalanceKind, account: AztecAddress): Promise<bigint>;
34
+ /** Returns half of an account's balance, asserting it is non-zero so the operation under test is meaningful. */
35
+ export declare function halfBalanceOf(asset: BalanceReadable, kind: BalanceKind, owner: AztecAddress): Promise<bigint>;
36
+ /** Returns an amount just above an account's balance (balance + delta), asserting it is non-zero. */
37
+ export declare function amountAboveBalance(asset: BalanceReadable, kind: BalanceKind, owner: AztecAddress, delta?: bigint): Promise<bigint>;
38
+ /**
39
+ * Grants a public authwit for `caller` to run `action` on behalf of `owner`, executes it from `caller`,
40
+ * then asserts a replay of the same call reverts as unauthorized (the authwit is single-use).
41
+ *
42
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
43
+ * their {@link TokenSimulator} to match the state change the executed action produced.
44
+ */
45
+ export declare function assertPublicAuthwitReplayRejected(wallet: TestWallet, owner: AztecAddress, action: ContractFunctionInteraction, caller: AztecAddress, onExecuted?: () => void): Promise<void>;
46
+ /**
47
+ * Creates a private authwit for `owner`, executes `action` through the authwit proxy (so `msg_sender`
48
+ * differs from the note owner), then asserts a replay reverts with a duplicate-nullifier error.
49
+ *
50
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
51
+ * their {@link TokenSimulator} to match the state change the executed action produced.
52
+ */
53
+ export declare function assertAuthwitProxyReplayRejected(proxy: GenericProxyContract, wallet: TestWallet, owner: AztecAddress, action: ContractFunctionInteraction, onExecuted?: () => void): Promise<void>;
54
+ /**
55
+ * Deploys an {@link AMMContract} over three freshly deployed tokens (token0, token1, and the liquidity
56
+ * token), makes the AMM the liquidity token's minter, and mints `initialBalance` of token0 and token1 to
57
+ * each liquidity provider plus token0 to the swapper. `deploy` selects the token flavour (Token vs
58
+ * TestToken), so the concrete token type flows through to the caller.
59
+ */
60
+ export declare function deployAmmWithTokens<T extends AnyTokenContract>(wallet: Wallet, admin: AztecAddress, deploy: (wallet: Wallet, admin: AztecAddress, initialBalance: bigint, logger: Logger) => Promise<{
61
+ contract: T;
62
+ }>, opts: {
63
+ liquidityProviders: AztecAddress[];
64
+ swapper: AztecAddress;
65
+ initialBalance: bigint;
66
+ logger: Logger;
67
+ }): Promise<{
68
+ token0: T;
69
+ token1: T;
70
+ liquidityToken: T;
71
+ amm: AMMContract;
72
+ }>;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdGVzdF9oZWxwZXJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0b21pbmUvdG9rZW4vdG9rZW5fdGVzdF9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFJdkYsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0sK0JBQStCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbkUsMkZBQTJGO0FBQzNGLE1BQU0sTUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUUvQyx3R0FBd0c7QUFDeEcsZUFBTyxNQUFNLDJCQUEyQixxSEFDNEUsQ0FBQztBQUVySCxnSEFBOEc7QUFDOUcsTUFBTSxXQUFXLGVBQWU7SUFDOUIsT0FBTyxFQUFFO1FBQ1Asa0JBQWtCLENBQUMsS0FBSyxFQUFFLFlBQVksR0FBRztZQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQTthQUFFLEdBQUcsT0FBTyxDQUFDO2dCQUFFLE1BQU0sRUFBRSxNQUFNLENBQUE7YUFBRSxDQUFDLENBQUE7U0FBRSxDQUFDO1FBQ2pILGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLEdBQUc7WUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUFFLElBQUksRUFBRSxZQUFZLENBQUE7YUFBRSxHQUFHLE9BQU8sQ0FBQztnQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO2FBQUUsQ0FBQyxDQUFBO1NBQUUsQ0FBQztLQUNqSCxDQUFDO0NBQ0g7QUFFRCxtR0FBbUc7QUFDbkcsd0JBQXNCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBSWpIO0FBRUQsZ0hBQWdIO0FBQ2hILHdCQUFzQixhQUFhLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUluSDtBQUVELHFHQUFxRztBQUNyRyx3QkFBc0Isa0JBQWtCLENBQ3RDLEtBQUssRUFBRSxlQUFlLEVBQ3RCLElBQUksRUFBRSxXQUFXLEVBQ2pCLEtBQUssRUFBRSxZQUFZLEVBQ25CLEtBQUssU0FBSyxHQUNULE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FJakI7QUFFRDs7Ozs7O0dBTUc7QUFDSCx3QkFBc0IsaUNBQWlDLENBQ3JELE1BQU0sRUFBRSxVQUFVLEVBQ2xCLEtBQUssRUFBRSxZQUFZLEVBQ25CLE1BQU0sRUFBRSwyQkFBMkIsRUFDbkMsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxDQUFDLEVBQUUsTUFBTSxJQUFJLEdBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FRZjtBQUVEOzs7Ozs7R0FNRztBQUNILHdCQUFzQixnQ0FBZ0MsQ0FDcEQsS0FBSyxFQUFFLG9CQUFvQixFQUMzQixNQUFNLEVBQUUsVUFBVSxFQUNsQixLQUFLLEVBQUUsWUFBWSxFQUNuQixNQUFNLEVBQUUsMkJBQTJCLEVBQ25DLFVBQVUsQ0FBQyxFQUFFLE1BQU0sSUFBSSxHQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLENBU2Y7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsZ0JBQWdCLEVBQ2xFLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLFlBQVksRUFDbkIsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUM7SUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0NBQUUsQ0FBQyxFQUNqSCxJQUFJLEVBQUU7SUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7SUFBQyxjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQzFHLE9BQU8sQ0FBQztJQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUFDLEdBQUcsRUFBRSxXQUFXLENBQUE7Q0FBRSxDQUFDLENBMEJ4RSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token_test_helpers.d.ts","sourceRoot":"","sources":["../../../src/automine/token/token_test_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
2
+ import { sendThroughAuthwitProxy } from '../../fixtures/authwit_proxy.js';
3
+ import { DUPLICATE_NULLIFIER_ERROR } from '../../fixtures/fixtures.js';
4
+ import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
5
+ /** The invalid-authwit-nonce assertion the contract raises when `from == msg_sender` but nonce != 0. */ export const INVALID_AUTHWIT_NONCE_ERROR = "Assertion failed: Invalid authwit nonce. When 'from' and 'msg_sender' are the same, 'authwit_nonce' must be zero";
6
+ /** Reads the private or public balance of an account, simulating from that account's own scope. */ export async function balanceOf(asset, kind, account) {
7
+ const interaction = kind === 'private' ? asset.methods.balance_of_private(account) : asset.methods.balance_of_public(account);
8
+ return (await interaction.simulate({
9
+ from: account
10
+ })).result;
11
+ }
12
+ /** Returns half of an account's balance, asserting it is non-zero so the operation under test is meaningful. */ export async function halfBalanceOf(asset, kind, owner) {
13
+ const amount = await balanceOf(asset, kind, owner) / 2n;
14
+ expect(amount).toBeGreaterThan(0n);
15
+ return amount;
16
+ }
17
+ /** Returns an amount just above an account's balance (balance + delta), asserting it is non-zero. */ export async function amountAboveBalance(asset, kind, owner, delta = 1n) {
18
+ const amount = await balanceOf(asset, kind, owner) + delta;
19
+ expect(amount).toBeGreaterThan(0n);
20
+ return amount;
21
+ }
22
+ /**
23
+ * Grants a public authwit for `caller` to run `action` on behalf of `owner`, executes it from `caller`,
24
+ * then asserts a replay of the same call reverts as unauthorized (the authwit is single-use).
25
+ *
26
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
27
+ * their {@link TokenSimulator} to match the state change the executed action produced.
28
+ */ export async function assertPublicAuthwitReplayRejected(wallet, owner, action, caller, onExecuted) {
29
+ const grant = await wallet.setPublicAuthWit(owner, {
30
+ caller,
31
+ action
32
+ }, true);
33
+ await grant.send();
34
+ await action.send({
35
+ from: caller
36
+ });
37
+ onExecuted?.();
38
+ await expect(action.simulate({
39
+ from: caller
40
+ })).rejects.toThrow(/unauthorized/);
41
+ }
42
+ /**
43
+ * Creates a private authwit for `owner`, executes `action` through the authwit proxy (so `msg_sender`
44
+ * differs from the note owner), then asserts a replay reverts with a duplicate-nullifier error.
45
+ *
46
+ * `onExecuted` runs after the successful execution (before the replay attempt) so callers can update
47
+ * their {@link TokenSimulator} to match the state change the executed action produced.
48
+ */ export async function assertAuthwitProxyReplayRejected(proxy, wallet, owner, action, onExecuted) {
49
+ const witness = await wallet.createAuthWit(owner, {
50
+ caller: proxy.address,
51
+ action
52
+ });
53
+ await sendThroughAuthwitProxy(proxy, action, {
54
+ from: owner,
55
+ authWitnesses: [
56
+ witness
57
+ ]
58
+ });
59
+ onExecuted?.();
60
+ await expect(sendThroughAuthwitProxy(proxy, action, {
61
+ from: owner,
62
+ authWitnesses: [
63
+ witness
64
+ ]
65
+ })).rejects.toThrow(DUPLICATE_NULLIFIER_ERROR);
66
+ }
67
+ /**
68
+ * Deploys an {@link AMMContract} over three freshly deployed tokens (token0, token1, and the liquidity
69
+ * token), makes the AMM the liquidity token's minter, and mints `initialBalance` of token0 and token1 to
70
+ * each liquidity provider plus token0 to the swapper. `deploy` selects the token flavour (Token vs
71
+ * TestToken), so the concrete token type flows through to the caller.
72
+ */ export async function deployAmmWithTokens(wallet, admin, deploy, opts) {
73
+ const { liquidityProviders, swapper, initialBalance, logger } = opts;
74
+ const { contract: token0 } = await deploy(wallet, admin, 0n, logger);
75
+ const { contract: token1 } = await deploy(wallet, admin, 0n, logger);
76
+ const { contract: liquidityToken } = await deploy(wallet, admin, 0n, logger);
77
+ const { contract: amm } = await AMMContract.deploy(wallet, token0.address, token1.address, liquidityToken.address).send({
78
+ from: admin
79
+ });
80
+ // TODO(#9480): consider deploying the token by some factory when the AMM is deployed, and making the AMM be the
81
+ // minter there.
82
+ await liquidityToken.methods.set_minter(amm.address, true).send({
83
+ from: admin
84
+ });
85
+ for (const lp of liquidityProviders){
86
+ await mintTokensToPrivate(token0, admin, lp, initialBalance);
87
+ await mintTokensToPrivate(token1, admin, lp, initialBalance);
88
+ }
89
+ // Note that the swapper only holds token0, not token1.
90
+ await mintTokensToPrivate(token0, admin, swapper, initialBalance);
91
+ return {
92
+ token0,
93
+ token1,
94
+ liquidityToken,
95
+ amm
96
+ };
97
+ }
@@ -57,6 +57,20 @@ type ClientFlowBenchmark = {
57
57
  };
58
58
  export declare function generateBenchmark(flow: string, logs: Log[], stats: ProvingStats | SimulationStats, privateExecutionSteps: PrivateExecutionStep[], proverType: ProverType, error: string | undefined): ClientFlowBenchmark;
59
59
  export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): GithubActionBenchmarkResult[];
60
+ /**
61
+ * Computes the expected number of `PrivateExecutionStep` entries the orchestrator will produce
62
+ * for a tx with `apps` private function calls.
63
+ *
64
+ * Step layout: `apps` app circuits + kernel iterations + 1 final reset + 1 tail + 1 hiding kernel.
65
+ * Each kernel iteration absorbs up to `MAX_APPS_PER_KERNEL` apps via the `init_K` / `inner_K`
66
+ * variants, so the kernel count is `ceil(apps / MAX_APPS_PER_KERNEL)`.
67
+ *
68
+ * Caveat: this assumes no mid-flow reset is triggered, which would split a batch into two kernels
69
+ * separated by a reset. For the flows currently exercised in this benchmark suite that holds, but
70
+ * a future flow that grows large enough to overflow per-tx limits before consuming all apps will
71
+ * not match this formula.
72
+ */
73
+ export declare function expectedExecutionSteps(apps: number): number;
60
74
  export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileInteractionOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/stdlib/tx").TxProfileResult>;
61
75
  export {};
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFNMUIsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0QsUUFBQSxNQUFNLFFBQVEsb0ZBQXFGLENBQUM7QUFDcEcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNmLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQztDQUNYLENBQUM7QUFFRixRQUFBLE1BQU0sVUFBVSwwS0FhTixDQUFDO0FBRVgsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVDLEtBQUssZUFBZSxHQUFHO0tBQ3BCLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUYscUJBQWEsV0FBVztJQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBYztJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFhO0lBRXpCLE9BQU8sZUFBaUI7SUFFeEIsTUFBTSxDQUFDLE1BQU0sU0FFWjtJQUVELE1BQU0sQ0FBQyxXQUFXLGdCQUVqQjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FlbkM7SUFFRCxPQUFPLENBQUMsU0FBUztJQUlWLFNBQVMsU0FFZjtJQUVNLE9BQU8sVUFFYjtDQUNGO0FBRUQsTUFBTSxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRTNDLEtBQUssYUFBYSxHQUFHO0lBRW5CLEtBQUssRUFBRSxNQUFNLENBQUM7SUFFZCxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRVosR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUVaLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFFWixLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUVGLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUc7SUFDckUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN0QixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztDQUN4QyxDQUFDO0FBRUYsS0FBSyxtQkFBbUIsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUN0RixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLFVBQVUsRUFBRSxjQUFjLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixZQUFZLEVBQUUsZUFBZSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7Q0FDM0IsQ0FBQztBQTBDRix3QkFBZ0IsaUJBQWlCLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUNYLEtBQUssRUFBRSxZQUFZLEdBQUcsZUFBZSxFQUNyQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxFQUM3QyxVQUFVLEVBQUUsVUFBVSxFQUN0QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FDeEIsbUJBQW1CLENBMkVyQjtBQUVELHdCQUFnQiwyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEdBQUcsMkJBQTJCLEVBQUUsQ0E2RHpHO0FBRUQsd0JBQXNCLGNBQWMsQ0FDbEMsS0FBSyxFQUFFLE1BQU0sRUFDYixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsWUFBWSxFQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDcEUsYUFBYSxDQUFDLEVBQUUsTUFBTSx1REFvQ3ZCIn0=
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFNMUIsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0QsUUFBQSxNQUFNLFFBQVEsb0ZBQXFGLENBQUM7QUFDcEcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNmLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQztDQUNYLENBQUM7QUFFRixRQUFBLE1BQU0sVUFBVSwwS0FhTixDQUFDO0FBRVgsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVDLEtBQUssZUFBZSxHQUFHO0tBQ3BCLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUYscUJBQWEsV0FBVztJQUN0QixPQUFP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
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,sBAAsB,CAAC;AACjG,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAI/D,QAAA,MAAM,QAAQ,oFAAqF,CAAC;AACpG,KAAK,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,QAAA,MAAM,UAAU,0KAaN,CAAC;AAEX,KAAK,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5C,KAAK,eAAe,GAAG;KACpB,CAAC,IAAI,QAAQ,GAAG,MAAM;CACxB,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,IAAI,CAAa;IAEzB,OAAO,eAAiB;IAExB,MAAM,CAAC,MAAM,SAEZ;IAED,MAAM,CAAC,WAAW,gBAEjB;IAED,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAenC;IAED,OAAO,CAAC,SAAS;IAIV,SAAS,SAEf;IAEM,OAAO,UAEb;CACF;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3C,KAAK,aAAa,GAAG;IAEnB,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,GAAG,EAAE,MAAM,CAAC;IAEZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,IAAI,GAAG,IAAI,CAAC,oBAAoB,EAAE,cAAc,GAAG,WAAW,CAAC,GAAG;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACxC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC,cAAc,GAAG,iBAAiB,EAAE,aAAa,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnC,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AA0CF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,EAAE,YAAY,GAAG,eAAe,EACrC,qBAAqB,EAAE,oBAAoB,EAAE,EAC7C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,mBAAmB,CA2ErB;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,mBAAmB,GAAG,2BAA2B,EAAE,CA6DzG;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,2BAA2B,GAAG,YAAY,EACvD,IAAI,EAAE,IAAI,CAAC,yBAAyB,GAAG,aAAa,EAAE,aAAa,CAAC,EACpE,aAAa,CAAC,EAAE,MAAM,uDAoCvB"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"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"}